7. Tryby kronikowania

Poprzedni podział dotyczył trybów kronikowania, możemy też wyróżnić podział ze względu rodzaj danych podlegających kronikowaniu:

Możemy wymagać od systemu plików, by w dzienniku zapisywał zmiany dokonywane tylko w odniesieniu do metadanych, jak również wszelkie zmiany dotyczące zarówno danych i metadanych. Rejestrowanie wszystkich zmian jest w sposób oczywisty bezpieczniejsze, ale za to dużo wolniejsze niż rejestrowanie wyłącznie zmian metadanych systemu plików. Powolność ta jest rezultatem konieczności wykonywania dla każdej zatwierdzonej transakcji dwóch zbiorów operacji zapisu - pierwszy zbiór zapisywany jest do dziennika, drugi faktycznie utrwala zatwierdzone zmiany w systemie plików. Trzeci tryb rejestrowania daje możliwość pełnego wykorzystania bezpieczeństwa systemu plików z kroniką rejestrującego pełen zestaw danych, nie obarczony spadkiem wydajności operacji. Osiągnięto to dzięki wymuszeniu zapisu na dysk wszelkich danych związanych z transakcją jeszcze przed aktualizacją odpowiednich metadanych systemu plików. Sposób ten gwarantuje uaktualnianie danych przed zapisem na dysk rejestru zmian metadanych, dotyczących zatwierdzonej transakcji, dzięki czemu dane przechowywane w plikach są po ich odtworzeniu na podstawie dziennika zawsze spójne z metadanymi systemu plików.

Aby w pełni zobaczyć różnicę między zapisywaniem tylko operacji dotyczących metadanych a zapisywaniem wszystkich zmian, rozważmy przykład dopisywania danych na końcu pliku. W systemie Linux mogłoby to wyglądać w sposób następujący:

  1. zwiększ rozmiar i-węzła,

  2. zaalokuj miejsce na dodatkowe dane,

  3. zapisz dodatkowe dane do pliku.

Jeśli zapisywaliśmy tylko metadane, nigdy nie będziemy mieli pewności po awarii, czy przed awarią został wykonany krok 3, gdyż informacja na jego temat nie znajdzie się w dzienniku, w związku z tym plik ten może zyskać niepoprawne dane na końcu.

7.1. Typy kronikowania obsługiwane przez systemy plików

Table 13.1. Kronikowanie w systemach plików
metadanedane i metadanetryb "ordered"
NTFSx
ext3xxx
ReserFSxxx
Reiser4x
JFSx
XFSx
WinFSx

Jak widać różne systemy plików obsługują różne tryby kronikowania. Część z nich udostępnia też dodatkowe właściwe dla siebie mechanizmy, pozwalające usprawnić lub lepiej zabezpieczyć operacje na kronice. I tak np. Reiser4 wykorzystuję wędrujące logi (wandering logs), aby zapewnić atomowość operacji, nie będąc zmuszonym do dwukrotnego zapisu tych samych danych stosuje się zmianę położenia danych i dziennika (edrujące logi są opisane dokładniej w dalszej części prezentacji).