Migracja systemu plików ext2 i ext3 na ext4

Spis treści

Dyski twarde są w stanie pomieścić setki gigabajtów danych. Ilość informacji, które jesteśmy w stanie przechować na pojedynczym nośniku, rośnie w zastraszającym tempie. Rozwój technologii nie jest jedynym polem gdzie prowadzone są prace nad nowymi rozwiązaniami poprawiającymi szereg aspektów pracy tych urządzeń. Innym polem jest sfera programowa, która w przypadków dysków twardych w dużej mierze dotyczy systemu plików. Albowiem każda powierzchnia, na której mają być przechowywane dane, potrzebuje odpowiedniej struktury, którą również można usprawnić. Wobec czego, ten domyślny system plików w linux'ie, tj. ext , przeszedł szereg modyfikacji i pojawiły się wersje ext2 , ext3 i ext4 . Jeśli jakaś partycja dysku twardego zawiera starszą wersję systemu plików, powinniśmy dokonać migracji na jego nowszy odpowiednik. W przypadku migracji z ntfs na ext4 (czy też odwrotnie), nieunikniona jest utrata danych. Czy w przypadku migracji z systemu plików ext2 i ext3 na ext4 również musimy zgrywać wszystkie dane na osobny nośnik by przeformatować odpowiednio taki dysk czy partycję? Okazuje się że nie musimy i możemy dokonać takiej migracji bez obaw o utratę danych i w tym wpisie postaramy się ten zabieg przeprowadzić.

Ustalanie systemu plików partycji

Zacznijmy zatem od ustalenia systemu plików na przykładowej partycji. Jest wiele narzędzi i metod, które mogą nam w tym pomoc. Jeśli dany system plików jest zamontowany w systemie, to możemy skorzystać z polecenia mount czy też df . W przypadku gdy danej partycji nie możemy z jakiegoś powodu zamontować, to zawsze możemy posłużyć się lsblk , przykładowo:

# lsblk /dev/sdb
NAME    SIZE FSTYPE TYPE LABEL MOUNTPOINT UUID
sdb    14.5G        disk
├─sdb1    5G vfat   part                  7C40-491B
├─sdb2    3G ext3   part                  24a8233f-1ee9-4e64-9def-5eb7ddec57a6
└─sdb3  6.5G ext2   part                  bb3c781e-8e86-4453-bc2f-06ee09fb6062

W powyższym przypadku mamy partycje z systemem plików ext2 i ext3 . Na obu z nich są wgrane różne pliki i przydałoby się dokonać migracji ich systemu plików.

Migracja z ext2 i ext3 na ext4

Migracja ze starszych wersji, w przypadku systemu plików z rodziny ext , polega głównie na dodaniu pewnych opcji, które są charakterystyczne dla danej wersji. Główną różnicą między ext2 i ext3 jest dziennik, za który odpowiada opcja has_journal . Z kolei różnica między ext3 i ext4 dotyczy tych trzech opcji: extents , uninit_bg oraz dir_index . Zatem by zmigrować ext2 na ext4 , musimy uwzględnić wszystkie cztery opcje. W tym drugim przypadku, tylko te trzy ostatnie.

Odmontowujemy zatem system plików, który chcemy zmigrować. Następnie korzystamy z narzędzia tune2fs (dostępne w pakiecie e2fsprogs ) i przy pomocy parametru -O (duże o) dodajemy odpowiednie opcje.

Dla systemu plików ext2 polecenie wygląda tak jak poniżej:

# tune2fs -O extents,uninit_bg,dir_index,has_journal /dev/sdb3

Dla systemu plików ext3 zaś tak:

# tune2fs -O extents,uninit_bg,dir_index /dev/sdb2

Po tych powyższych operacjach, system plików powinien ulec zmianie na ext4 w przypadku obu partycji. Sprawdźmy przy pomocy lsblk czy tak się w istocie stało:

# lsblk /dev/sdb
NAME    SIZE FSTYPE TYPE LABEL MOUNTPOINT UUID
sdb    14.5G        disk
├─sdb1    5G vfat   part                  7C40-491B
├─sdb2    3G ext4   part                  24a8233f-1ee9-4e64-9def-5eb7ddec57a6
└─sdb3  6.5G ext4   part                  bb3c781e-8e86-4453-bc2f-06ee09fb6062

Należy odnotować fakt, że numery UUID nie uległy zmianie. Mogłoby się zatem wydawać, że nie musimy przeprowadzać żadnych dodatkowych czynności konfiguracyjnych, jak np. dostosowanie pliku /etc/fstab . Nie jest to prawdą i plik fstab musimy dostosować tak czy inaczej, a to z tego względu, że jest w nim określony typ systemu plików, który wskazuje na ext2 i ext3 . Powinniśmy te pozycje przepisać na ext4 . Należy także przeskanować system plików na tych partycjach w poszukiwaniu ewentualnych błędów przy pomocy fsck.ext4 .

Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.