Extended 3rd Filestytem (ext3)

Z samej nazwy nowego systemu plików można szybko wywnioskować, iż jest on nastepcą popularnego ext2. Najważniejszą różnicą jest to, że jest to system plików z księgowaniem, czyli funkcją "journalling".

Księgowanie przydaje się w przypadku nagłej awarii zasilania, ponieważ stan danych zapisanych na dysku jest nieustannie monitorowany, a ponowne uruchomienie systemu plików jest niemal natychmiastowe. Nie ma tu potrzeby długotrwałego skanowania systemu plików znanego z ext2. Każda operacja jest ksiegowana w dzienniku (journalu) i jesli nie dojdzie do skutku to jest cofana calkowicie. Rezultat jest taki, ze dysk nie wchodzi w stany nieustalone. tzn ze np. polowa pliku jest nagrana a reszta nie. jeśli w czasie kopiowania coś nawali to przy nastepnym wlączeniu operacja jest cofana do poprzedniego stanu. Ponowne uruchomienie takiego systemu bez księgowania może trwać nawet kilkanaście minut co w przypadku serwerów produkcyjnych jest nie do zaakceptowania, jednak nawet w przypadku domowego komputera staje się irytujące. W dodatku można mieć pewność, że nowe pliki nie zostaną uszkodzone. To niewątpliwa zaleta ext3. Kolejnym plusem ext3 jest fakt, że nie trzeba zmieniać struktury danych, ani reformatować partycji jak w przypadku np. ReiserFS. Wystarczy zwykła partycja ext2, jądro >= 2.4.15 i nowa wersja pakietu e2fsprogs.

Obecnie dla Linuksa są dostępne conajmniej 4 alternatywne systemy plików z księgowaniem: jfs, xfs, reiserfs oraz oczywiscie ext3. To co sprawia, że ext3 jest wart zainteresowania to fakt, że jest on całkowicie kompatybilny z ext2 i w każdej chwili można bez reformatowania partycji zmienić system plików z ext2 na ext3 i vice versa - nie ma łatwiejszego sposobu na poznanie zalet księgowania niż użycie właśnie ext3. Wszystkie pozostałe systemy plików wymagają reformatowania partycji co często jest bardzo utrudnione.

Ext3 ma jednak - jak wszystko - także i wady, większość wad odziedzicza po ext2, a mianowicie małą wydajność w przypadku operacji na katalogach z dużą ilością plików, a ponadto jest to wciąż system plikowy w wersji eksperymentalnej. Mimo że autorzy piszą o długich i ciężkich testach jakim został poddany ext3 to jednak trzeba przyznać, że system plikowy jest jednym z najważniejszych elementów systemu operacyjnego i wymaga więcej niż standardowego testowania - dlatego też jeszcze będziemy musieli trochę poczekać na wersję stabilną. Mimo to można spróbować zainstalować ext3 na mniej ważnych partycjach i w miarę zwiększania się naszego zaufania do niego przełączać kolejne partycje na ext3.

Instalacja

Co będzie potrzebne?

  • pakiet E2fsprogs w wersji powyżej 1.21. Można poszukać na rpm.pbone.net. Dla leniuchów - odpowiedni plik leży tutaj - e2fsprogs-1.22-3.i386.rpm
  • jądro >= 2.4.15 lub inne z gałęzi *-ac (powyżej 2.4.5).

Najpierw należy zaaplikować patch *-ac na jądro w odpowiedniej wersji (np. dla 2.4.13-ac2 będzie to oczywiście kernel 2.4.13), jeśli zdecydujemy się na korzystanie z gałęzi *-ac. Opis patchowania jądra znajduje się w w artykule o Kompilacji Kernela. Jeśli skorzystamy z oficjalnego jądra nie będzie to konieczne.

Podczas konfiguracji jądra wybieramy nasze standardowe ustawienia. Następnie w sekcji File Systems wybieramy opcję "Ext3 journalling file system". Ext3 - Konfiguracja KernelaWkompilowujemy ją w jądro, nie jako moduł. W jądrach *-ac opcja ta posiada status EXPERIMENTAL, dlatego w "Code Maturity Level Options" należy wybrać "Prompt for Development/Incomplete Drivers". Kompilujemy jądro, a następnie wprowadzamy niezbędne zmiany w strukturze partycji, na których chcemy użyć ext3. Do tego przyda się nowy pakiet e2fsprogs, a konkretnie program tune2fs. Dodajemy księgowanie następującym poleceniem:

tune2fs -j /dev/dysk

Gdzie dysk to nazwa partycji, np. /dev/hda1. Spowoduje to utworzenie pliku ukrytego .journal. Jeszcze tylko prosta zmiana w pliku /etc/fstab. Dla partycji, do których dodaliśmy księgowanie (journalling), zmieniamy typ z ext2 na ext3. Jeśli wszystko przebiegnie poprawnie, po restarcie w trakcie inicjalizacji jądra ujrzymy mniej więcej taki komunikat:

EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
EXT3 FS 2.4-0.9.13, 21 Oct 2001 on ide0(3,4), internal journal
kjournald starting. Commit interval 5 seconds

Można już przetestować ext3, symulując nagłą awarię zasilania przy wykorzystaniu przycisku RESET na obudowie komputera. Przy ponownym uruchomieniu Linuksa partycje ext3 powinny zostać zainicjowane w kilka sekund.

Ext3 po starcie Linuksa monitoruje działanie systemu plików za pomocą procesu działającego nonstop w tle o nazwie kjournald, czyli kernel journalling deamon.

kjournald w akcji
Co kilka sekund (commit interval, standardowo 5 sekund) zapisuje on do pliku .journal wszystko, co dzieje się na dysku. W przypadku awarii, po restarcie zawartość dziennika jest porównywana z danymi znajdującymi się na partycji, a w przypadku braku zgodności wprowadzane są zmiany w systemie plików. Gwarantuje to, że przy chwilowym braku zasilania nie zostaniemy na lodzie z uszkodzonym systemem plików. W ten sposób ext3 zabezpiecza dane na dysku, a także zapobiega czasochłonnym skanom po nieudanym zamknięciu systemu.

© 2002
by Tomasz K.