Как изменить размер раздела ext4 за пределы 16 ТБ?

При попытке изменить размер и старый раздел ext4, созданный без 64-битного флага, resize2fs 1.42 завершится ошибкой, если новый размер составляет или превышает 16 ТБ.

$ resize2fs -p /dev/mapper/target-device
resize2fs: New size too large to be expressed in 32 bits

Я не хочу копировать файлы на внешний носитель. Я тоже не хочу рисковать потерей данных. Как мне безопасно изменить громкость?

26
задан 5 March 2018 в 19:54

2 ответа

Вы пытаетесь изменить размер файловой системы, которая была создана перед -O 64bit опция стала значением по умолчанию. Возможно обновить Вашу файловую систему расширения до адресов на 64 бита, позволяя этому охватить значительно больше (1 024 PIB вместо 16 тебибайт) объемы.

Принятие Вашего целевого устройства называют /dev/mapper/target-device, это - то, что необходимо сделать:

Предпосылки

  1. Этот размер объема должен быть поддержан RAID. Регулярные ошибки диска нанесут ущерб иначе.
  2. Однако, RAID не является резервным копированием. Необходимо было сохранить ценности в другом месте также.
  3. Сначала измените размер и проверьте все окружающие объемы (таблицы разделов, шифрование, lvm).
  4. После изменения аппаратной конфигурации RAID Linux может или не может сразу подтвердить новый максимальный размер. Проверить $ cat /proc/partitions и перезагрузка при необходимости.

Используйте недавнее стабильное ядро и e2fsprogs

  1. Удостоверьтесь (проверка uname -r) Вы выполняете ядро, которое может правильно обработать 64 бита ext4 файловые системы - Вы хотите использовать a 4.4.x ядро или позже (Ubuntu 16 по умолчанию и выше).
  2. Получите e2fsprogs, по крайней мере, версии 1.43

    • Ubuntu 16.04 (2016-04-21) был выпущен с e2fsprogs 1.42.12 (2014-08-25)
    • e2fsprogs 1.43 (2016-05-17) 1-й выпуск, способный к обновлению extfs размер адреса.
    • Ubuntu 18.04 (2018-04-26) поставки с e2fsprogs 1.44.x (хороший!)

Если Вы идете 16.04 и не может обновить до более нового релиза Ubuntu, необходимо будет включить исходную поддержку пакета и установить более новую версию вручную:

$ resize2fs
# if this  prints version 1.43 or above, continue to step 1
$ sudo apt update
$ sudo apt install git
$ sudo apt build-dep e2fsprogs
$ cd $(mktemp -d)
$ git clone -b v1.44.2 https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git e2fsprogs && cd e2fsprogs
$ ./configure
$ make
$ cd resize
$ ./resize2fs
# this should print 1.43 or higher
# if this prints any lower version, panic
# use `./resize2fs` instead of `resize2fs` for the rest of the steps

Изменить размер

Шаг 1: Правильно umount файловая система

$ sudo umount /dev/mapper/target-device

Шаг 2: Проверьте файловую систему на наличие ошибок

$ sudo e2fsck -fn /dev/mapper/target-device

Шаг 3: Включите поддержку на 64 бита в файловой системе

Консультироваться man tune2fs и man resize2fs - Вы май с изменить некоторые флаги файловой системы.

$ sudo resize2fs -b /dev/mapper/target-device

На типичном жестком диске RAID это занимает 4 минуты высокого IO и загрузки ЦП.

Шаг 4: Измените размер файловой системы

$ sudo resize2fs -p /dev/mapper/target-device

Если Вы не передаете размер командной строке, resize2fs принимает, "растут до всего пространства, доступного" - это обычно точно, что Вы хотите. -p отметьте включенные индикаторы выполнения - но они только отображаются после некоторых начальных шагов.

На типичном жестком диске RAID это занимает 4 минуты высокого IO и загрузки ЦП.

Проверьте снова

Проверьте файловую систему снова

$ sudo e2fsck -fn /dev/mapper/target-device

e2fsck более новых версий может предложить зафиксировать метки времени или деревья степени, которые предыдущие версии обработали плохо. Это не признак никакой серьезной проблемы, и Вы можете, принял решение зафиксировать его теперь или позже.

Если ошибки происходят, не паникуйте и не пытайтесь записать в объем; консультируйтесь с кем-то с обширными знаниями файловой системы, поскольку дальнейшие операции, вероятно, уничтожили бы данные!

Если никакие ошибки не происходят, повторно монтируют устройство:

$ sudo mount /dev/mapper/target-device

Успех!

Вам не будет нужна никакая версия не-Ubuntu e2fsprogs для длительной операции обновленной файловой системы - ядро поддерживает их в течение достаточно долгого времени теперь. Было только необходимо инициировать обновление.


Для ссылки существует подобное сообщение об ошибке mke2fs, распечатает, если попросят создать огромное устройство с несоответствующими опциями:

$ mke2fs -O ^64bit /dev/huge
mke2fs: Size of device (0x123456789 blocks) is too big to be expressed in 32 bits using a blocksize of 4096.
46
ответ дан 5 March 2018 в 19:54

Это недавно произошло со мной с Ubuntu 18.04, которая была обновлена, будучи установленным первоначально с 16,04 Ubuntu... Массив хранения данных (/dev/sdb) был первоначально разделен в два раздела на 14 ТБ, и это, желая увеличить первый раздел до 28 ТБ, что проблема произошла.

я не должен был загружать новую версию resize2fs, потому что это было очень недавним.

# resize2fs 
resize2fs 1.44.1 (24-Mar-2018)

единственная проблема состояла в том, чтобы преобразовать 64-разрядный раздел 1, который был отформатирован в 32 битах... Вместо того, чтобы пригласить читателя консультироваться с документацией tune2fs (поскольку Anx предлагает), я предлагаю реальный пример!

# tune2fs -O 64bit /dev/sdb1
tune2fs 1.44.1 (24-Mar-2018)
Please run "resize2fs -b /dev/sdb1" to enable 64-bit mode.

# resize2fs -b /dev/sdb1
resize2fs 1.44.1 (24-Mar-2018)
Convert the file system to 64 bits.
The file system on /dev/sdb1 now has a size of 3662109119 blocks (4k).

Наконец, мы увеличиваем раздел диска!

# resize2fs /dev/sdb1
resize2fs 1.44.1 (24-Mar-2018)
Resizing the file system on /dev/sdb1 to 7324303099 (4k) blocks.
The file system on / dev / sdb1 now has a size of 7324303099 blocks (4k).
0
ответ дан 23 November 2019 в 01:08

Другие вопросы по тегам:

Похожие вопросы: