Idźmy do przodu
Jakie są plusy i minusy BSD-LFS? Niewątpliwą zaletą jest szybkie i pewne odtwarzanie danych po awarii OS-u - wystarczy przejrzeć ostatnie używane sektory systemu plików i porównać ich zawartość z danymi w strukturach specjalnych (mapie i-węzłów i tablicy użycia segmentów). Przyspieszony w stosunku do tradycyjnego systemu plików jest również zapis informacji - są one zawsze dopisywane na końcu kroniki. Problemy pojawiają się jednak przy odczycie danych z dysku. Pomimo zastosowania pomocniczych struktur danych i stosunkowo dużych pamięci podręcznych (zapewniających ok. 90% trafień przy odczycie) wydajność BSD-LFS i podobnych systemów plików (np. WAFL autorstwa NAC) nie zachwyca. Należy przy tym zwrócić uwagę na fakt, iż implementacja systemu plików z "pełnym" journalingiem jest zadaniem nieco trudniejszym od obsługi przez OS "zwyczajnego" systemu.
A może by tak tylko część?
Doświadczenia wyniesione z tworzenia i użytkowania systemów o strukturze kroniki skłoniły producentów OS-ów do wypróbowania jeszcze jednego pomysłu na zwiększenie bezpieczeństwa danych zapi- sywanych na dysku twardym. Jest nim kronikowanie tylko niektórych informacji przechowywanych przez system plików - a dokładniej jedynie metadanych. Okazuje się bowiem, że to właśnie utrata metadanych jest czynnikiem krytycznym, utrudniającym szybką i skuteczną naprawę systemu plików.
Kronika metadanych uzupełnia tradycyjny system plików. Przechowywane są w niej zazwyczaj informacje o zmianach dokonywanych w i-węzłach, strukturze katalogów i (ewentualnie) blokach pośrednich. Niektóre implementacje zakładają również przechowywanie w kronice zmian zawartości superbloku partycji. Kronika (najczęściej o strukturze cyklicznej) jest zazwyczaj przechowywana w osobnej strukturze, wydzielonej z systemu plików. Istnieją jednak również rozwiązania (np. system plików Calaveras), gdzie wspólna kronika dla wszystkich używanych przez OS systemów plików znajduje się na osobnym dysku, co dodatkowo ogranicza ryzyko utraty danych.
Taka metoda journalingu zmniejsza znacznie koszty związane z implementacją systemu plików, zwiększając jednocześnie jego bezpieczeństwo. Aby usprawnić wykonywane na plikach operacje, stosuje się pewne dodatkowe zabiegi, dzięki którym systemy z kronikowaniem są przynajmniej tak samo szybkie jak tradycyjne.
Jednym z takich usprawnień jest technika nazywana uaktualnieniem w miejscu (in-place update). Polega ona - mówiąc w skrócie - na tym, iż modyfikacje i-węzłów są zapisywane na bieżąco jedynie w kronice (buforowanej w pamięci operacyjnej). Uaktualnienie właściwej kopii i-węzła na dysku twardym następuje co pewien czas. Dzięki temu, dobierając odpowiednio parametry działania opisanego mechanizmu, uzyskamy przyspieszenie działania systemu plików. Wyobraźmy sobie bowiem przypadek - jeden z prostszych - gdy zmieniamy jedynie atrybuty pliku. FS z kroniką metadanych może taką operację wykonać w dwóch krokach: najpierw uaktualnia on kopię i-węzła w buforze, a dopiero potem dopisuje operację do kroniki.
Drugi wymagany krok - uaktualnienie właściwego i-węzła w fizycznym systemie plików - jest przeprowadzany po pewnym czasie od wykonania rzeczywistej operacji. Dlatego też może się zdarzyć, że atrybuty omawianego pliku będą zmieniane jeszcze kilkakrotnie, zanim OS zapisze jego i-węzeł na dysku. Dzięki temu zaoszczędzimy czas potrzebny na kilka operacji dyskowych. W razie awarii wystarczy przejrzeć kronikę i nanieść w tablicy i-węzłów odpowiednie poprawki.
Pytanie zasadnicze brzmi: co z tego, iż oszczędzimy czas potrzebny na uaktualnianie i-węzła, skoro musimy na bieżąco uaktualniać kronikę? Odpowiedź jest stosunkowo prosta. Po pierwsze, zapis sekwencyjny (w obszarze kroniki) jest szybszy od odnajdywania i zapisywania i-węzłów. Po drugie, grupując odpowiednio zapisy w tablicy i-węzłów, możemy zapisywać całe bloki danych, co również jest stosunkowo szybkie. W efekcie okazuje się, że systemy plików z journalingiem są tylko nieznacznie (jeśli w ogóle) wolniejsze od tradycyjnych. Zysk jest oczywisty - zwiększenie bezpieczeństwa wykonywanych operacji.
Na zasadach podobnych do niniejszego opisu działa większość stosowanych obecnie systemów plików wykorzystujących kronikowanie. Są one powszechnie używane przez różnorakie serwerowe systemy operacyjne - od "poważnych" UNIX-ów, takich jak Solaris (system plików Veritas) czy SGI IRIX (doskonały system XFS), poprzez Linuksa (ext3, JFS IBM-a, XFS i RaiserFS), BSD (LFS), OS/2 (JFS) czy BeOS-a (BeFS), aż po Windows 2000/XP (NTFS 5.0).
Na co to komu potrzebne?
Mam nadzieję, że odpowiedziałem już - choć nie bezpośrednio - na to pytanie. System plików z kronikowaniem przyda się mianowicie każdemu. Nie trzeba bowiem być administratorem sieciowego serwera, aby skorzystać z oczywistych zalet oferowanych przez systemy z journalingiem. Są one korzystne dla każdego, kto ceni dane przechowywane na swoim dysku i nie lubi czekać, aż CHKDSK lub fsck skończy działanie.
Zapoznanie się z opisanymi w niniejszym tekście, podstawowymi różnicami pomiędzy tradycyjnymi systemami plików (takimi jak FAT czy ext2) a systemami z kronikowaniem powinno wystarczyć do dokonania świadomego wyboru konkretnego rozwiązania. Tym bardziej, że systemy z kronikowaniem coraz częściej można spotkać nawet w "domowych" OS-ach. Osoby zainteresowane szczegółami implementacji poszczególnych rozwiązań - a istotnych mechanizmów jest w systemach plików sporo - skorzystają zapewne z odsyłaczy umieszczonych w ramce "Info" oraz z dostępnej literatury.
Na następnej stronie krótko o systemach plików z journalingiem.