Próbujesz zmienić rozmiar systemu plików, który został utworzony, zanim -O 64bit
opcja stała się domyślna. Możliwe jest uaktualnienie systemu plików ext do adresów 64-bitowych, co pozwala na znacznie większy wolumen (1024 PiB zamiast 16 TiB).
Zakładając, że nazywa się Twoje urządzenie docelowe /dev/mapper/target-device
, musisz to zrobić:
Wymagania wstępne
- Ten rozmiar woluminu musi być zabezpieczony przez RAID. Regularne błędy dysków będzie działać szkodliwie inaczej.
- Mimo to RAID nie jest kopią zapasową . Kosztowności musisz przechowywać także w innym miejscu.
- Najpierw zmień rozmiar i sprawdź wszystkie otaczające woluminy (tablice partycji, szyfrowanie, lvm).
- Po zmianie sprzętowej konfiguracji RAID linux może natychmiast potwierdzić nowy maksymalny rozmiar. Sprawdź
$ cat /proc/partitions
i uruchom ponownie, jeśli to konieczne.
Użyj najnowszego stabilnego jądra i e2fsprogs
- Upewnij się (sprawdź
uname -r
), czy używasz jądra, które poprawnie obsługuje 64-bitowe systemy plików ext4 - chcesz użyć 4.4.x
jądra lub nowszego (domyślnie Ubuntu 16 i wyżej).
Zdobądź e2fsprogs co najmniej wersji 1.43
Ubuntu 16.04
(2016-04-21) został wydany z e2fsprogs 1.42.12
(2014-08-25)
e2fsprogs 1.43
(2016-05-17) to pierwsze wydanie zdolne do aktualizacji rozmiaru adresu extfs.
Ubuntu 18.04
(2018-04-26) wysyłany z e2fsprogs 1.44.x
(dobrze!)
Jeśli jesteś włączony 16.04
i nie możesz dokonać aktualizacji do nowszej wersji Ubuntu, musisz włączyć obsługę pakietu źródłowego i ręcznie zainstalować nowszą wersję:
$ 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
Zmień rozmiar
Krok 1: Prawidłowo zamontuj system plików
$ sudo umount /dev/mapper/target-device
Krok 2: Sprawdź system plików pod kątem błędów
$ sudo e2fsck -fn /dev/mapper/target-device
Krok 3: Włącz obsługę 64-bitową w systemie plików
Skonsultuj się man tune2fs
i man resize2fs
- możesz zmienić niektóre flagi systemu plików.
$ sudo resize2fs -b /dev/mapper/target-device
W typowym HDD RAID zajmuje to 4 minuty dużego obciążenia IO i procesora.
Krok 4: Zmień rozmiar systemu plików
$ sudo resize2fs -p /dev/mapper/target-device
Jeśli nie podasz rozmiaru w wierszu poleceń, resize2fs zakłada „powiększ się do całej dostępnej przestrzeni” - zwykle jest to dokładnie to, czego chcesz. -p
Flag włączony paski postępu - ale tylko tych wyświetlać po początkowych etapach.
W typowym HDD RAID zajmuje to 4 minuty dużego obciążenia IO i procesora.
Zweryfikuj ponownie
Sprawdź ponownie system plików
$ sudo e2fsck -fn /dev/mapper/target-device
e2fsck nowszych wersji może sugerować naprawę znaczników czasu lub rozszerzanie zakresu drzew, które poprzednie wersje źle obsługiwały. Nie oznacza to żadnego poważnego problemu i możesz zdecydować się naprawić go teraz lub później.
Jeśli wystąpią błędy, nie panikuj i nie próbuj zapisywać na woluminie; skonsultuj się z kimś, kto ma rozległą wiedzę na temat systemu plików, ponieważ dalsze operacje prawdopodobnie zniszczą dane!
Jeśli nie wystąpią żadne błędy, zainstaluj ponownie urządzenie:
$ sudo mount /dev/mapper/target-device
Sukces!
Nie będziesz potrzebował żadnej e2fsprogs innej niż Ubuntu, aby kontynuować działanie zaktualizowanego systemu plików - jądro obsługuje je już od dłuższego czasu. Konieczne było tylko zainicjowanie aktualizacji.
Dla porównania, podobny komunikat o błędzie zostanie wydrukowany przez mke2fs, jeśli zostanie poproszony o utworzenie ogromnego urządzenia z nieodpowiednimi opcjami:
$ 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.