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
.