Ви намагаєтесь змінити розмір файлової системи, створеної до того, як -O 64bit
параметр став типовим. Можна оновити вашу файлову систему ext до 64-бітових адрес, що дозволяє їй охоплювати значно більший обсяг (1024 PiB замість 16 TiB).
Якщо припустити, що викликається ваш цільовий пристрій /dev/mapper/target-device
, це потрібно зробити:
Передумови
- Цей розмір гучності повинен бути підкріплений RAID. Регулярні помилки на диску в іншому випадку можуть заподіяти шкоду.
- Проте RAID - це не резервне копіювання . Ви також повинні зберігати свої цінності в інших місцях.
- Спочатку змініть розмір та перевірте всі навколишні томи (таблиці розділів, шифрування, lvm).
- Після зміни конфігурації апаратного RAID, Linux може або не може негайно визнати новий максимальний розмір. Перевірте
$ cat /proc/partitions
і перезавантажте, якщо потрібно.
Використовуйте недавно стабільне ядро та e2fsprogs
- Переконайтесь, що (перевірте
uname -r
), що ви працюєте з ядром, яке може правильно обробляти 64-бітну файлову систему ext4 - ви хочете використовувати 4.4.x
ядро або пізніші версії (за замовчуванням Ubuntu 16 і вище).
Придбайте e2fsprogs принаймні версії 1.43
Ubuntu 16.04
(2016-04-21) було випущено з e2fsprogs 1.42.12
(2014-08-25)
e2fsprogs 1.43
(2016-05-17) - це перший випуск, здатний оновити розмір адреси 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: Правильно виконайте читання файлової системи
$ 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
У типовому HDD RAID це займає 4 хвилини високого навантаження на IO та процесор.
Крок 4: Змініть розмір файлової системи
$ sudo resize2fs -p /dev/mapper/target-device
Якщо ви не передаєте розмір у командному рядку, resize2fs передбачає "зростати до всього доступного простору" - це зазвичай саме те, що ви хочете. -p
Прапор включений прогрес барі - але ті , відображаються тільки після деяких початкових кроків.
У типовому HDD RAID це займає 4 хвилини високого навантаження на IO та процесор.
Перевірте ще раз
Перевірте файлову систему ще раз
$ sudo e2fsck -fn /dev/mapper/target-device
e2fsck новіших версій може запропонувати виправити часові позначки або розмістити дерева, з якими попередні версії погано оброблялися. Це не є ознакою будь-якої серйозної проблеми, і ви можете вирішити її зараз або пізніше.
Якщо трапляються помилки, не панікуйте і не намагайтеся записувати до тома; проконсультуйтеся з кимсь із знаними знаннями файлової системи, оскільки подальші операції, можливо, знищать дані!
Якщо помилок не виникає, повторно встановіть пристрій:
$ sudo mount /dev/mapper/target-device
Успіху!
Вам не знадобиться жодна версія e2fsprogs, що не є Ubuntu, для продовження роботи оновленої файлової системи - ядро підтримує їх вже досить довго. Потрібно було лише ініціювати оновлення.
Для довідки, аналогічне повідомлення про помилку буде надруковано 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.