Cel. Aby zlikwidować część wad tradycyjnych systemów plików w wielu nowoczesnych systemach zastosowano technikę kronikowania (ang. journalling lub logging). Kronika jest specjalnym plikiem przeznaczonym tylko do dopisywania. Zapisuje się ją sekwencyjnie, dużymi partiami, zwykle całą ścieżkę naraz. Kronika umożliwia szybkie postawienie systemu po awarii.
Rodzaje kronik Jest wiele rodzajów kronik:
Co zapisywać w kronice? | Są dwie możliwości zapisywania:
|
Zapisywać operacje czy wartości? | Można zapisywać operacje albo ich wyniki. |
Kronika jako dodatek czy zastąpienie | Można stosować kronikę jako uzupełanienie (Sysytemy plików rozszerzone o kronikę (ang. Logging enhanced file systems)) albo jako jedyną reprezentację systemu plików na dysku (Systemy plików o strukturze kroniki (ang. log-structured file systems)). |
Kroniki z informacją do przywracanmia i anulowania | Są dwa typy kronik:
|
Odśmiecanie | Kronikę zwykle traktuje się jako plik cykliczny. Odśmiecać można wykonywać w czasie normalnego działania systemu lub za pomocą odrębnej operacji. |
Grupowanie | Konieczny jest kompromis między rozmiarem zapisywanych porcji danych oraz częstością zapisu (więcej szybciej, częściej w razie awarii tracimy mniej danych). |
Pobieranie danych | Konieczne jest zastosowanie efektywnego mechanizmu indeksowania, umożliwiającego odnalezienia w kronice dowolnego pliku (aby obsłużyć błędy braku strony). |
Zalety. Zapisy na dysk dużych porcji - bardzo szybkie. Usuwanie skutków awarii jest również szybkie.
Wady. Odczyt jest wolniejszy (trzeba wyszukiwać ostatnio zmodyfikowane dane w kronice). W systemie, który działa już jakiś czas można z łatwością osiągnąć współczynnik trafień ponad 90%, jednak na początku, w wypadku bloków, które muszą być odczytane z dysku, trzeba zapewnić sposób odnajdowania ich w kronice.
Opis. System 4.4BSD, znany pod nazwą BSD-LFS, zaprojektowano na podstawie wyników prac nad systemem Sprite. System BSD-LFS przeznacza cały dysk na kronikę, która jest jedyna trwałą reprezentacją systemu plików. Wszystkie zapisy umieszcza się na końcu kroniki, a odśmiecanie wykonuje proces cleaner. Kronika podzielona jest na segmenty stałego rozmiaru (zwykle 500 KB) połączone w listę.
System utrzymuje także tablicę użycia segmentów (ang. segment usage table), która przechowuje liczbę nieprzestarzałych bajtów i czas ostatniej modyfikacji dla każdego segmentu.
Zapis. System BSD-LFS zbiera zabrudzone dane tak długo, aż będzie ich wystarczająco do zapełnienia segmentu. Wówczas wszystkie zabrudzone dane są zapisywane, a kronika zawiera wszystkie dane do pełnego usunięcia skutków awarii.
Odczyt. W celu umożliwienia sprawnego odczytu, potrzebna jest duża pamięć podręczna, tak aby większość zleceń można było realizować bez dostępu do dysku. W pamięci podręcznej bloki są identyfikowane i haszowane za pomocą v-węzła i logicznego numeru bloku. Ważna jest także obsługa błędu braku strony w sensownym czasie. I-węzły wyszukuje się w mapie i-węzłów.
Usuwanie skutków awarii przebiega następująco:
Zadaniem procesu cleaner jest gromadzenie aktywnych danych z segmentów, przenoszenie ich w nowe miejsce i w ten sposób odzyskiwanie semgnetów. Cleaner
Zyski i wady. Kronikowanie tylko metadanych:
Organizacja kroniki. Jest wiele wariantów organizackji kroniki:
Badania. System plików z kroniką jest znacznie szybszy, gdy wykonuje się wiele operacji na metadanych. W przeciwnym przypadku szybkość jego działania jest porównywalna do zwykłych systemów plików.
Powstanie. System plików Episode (ang. Episode File System) powstał jako rozwinięcie systemu plików Andrew (AFS). Stał się on lokalnym systemem plików w rozproszonym środowisku obliczeniowym (ang. DCE - Distributed Computing Environment).
Możliwości. System udostępnia kilka złożonych możliwości, których nie mają tradycyjne uniksowe systemy plików. Są to m.in:
Organizacja. Do systemu plików Episode wprowadzono pojęcia:
Kronika w systemie plików Episode. Kronika zawiera informacje o przywracaniu i anulowaniu (tj. stare i nowe wartości), która zapewania silna transakcyjną (albo cała operacja albo nic) gwarancję spójności. To rozwiązanie wymaga dwufazowego protokołu nakładania blokady (ang. Twopfase locking): nakłada się blokadę na wszystkie obiekty, których dotyczy transakcja, dopóki cała transakcja nie zostanie zatwierdzona. Dzięki temu żadna inna transakcja nie jest w stanie odczytać niezatwierdzonych danych.
Klonowanie. Można klonować zestawy plików (kopiuje się metadane, a dane plików są dzielone). Operacja ta jest szybka. Sklonowany zestaw plików jest tylko do odczytu (jest jednak aktualizowany) i przydaje się np. w narzędziach administracyjnych.
Zarys problemu. Chcemy w jednolity sposób związać z pewnymi plikami specjalne sposoby obługi dostępu do nich. Na przykład:
Wprowadzenie programów dozorujących. Z każdym plikiem związujemy (na żądanie) proces przechwytujący operacje wejscia-wyjscia na tym pliku, zwany procesem dozorcy (ang. watchdog). Wykonuje się to za pomocą funkcji systemowej: wdlink (nazwa pliku, nazwa programu dozorcy w katalogu /wdogs). Plik staje się plikiem dozorowanym (ang. guarded file).
Gdy dowolny proces zechce dobrać się do pliku dozorowanego, jądro przekazuje sterowanie do procesu dozorcy (uruchamiając go być może), który podejmuje decyzję. Jeśli dozorca pozwala na otworzenie pliku, pokazuje jakich operacji nalezy użyć (mogą to być nawet różne operacje dla różnych otwartych egzemplarzy tego samego pliku).
Dozorowanie katalogów. Można dozorować również katalogi(!). Daje to możliwość tworzenia iluzji plików, których nie ma.
Kanały komunikacyjne. Komunikację między dozorcą obsługuje się za pomocą kanałów komunikacyjnych (ang. WMC - Watchdog Message Channel), tworzony za pomocą funkcji systemowj createwmc, która zwraca deskryptor kanału. Każdy komunikat ma pole typu, identyfikator sesji i właściwą treść. Każdy otwarty plik rozpoczyna unikatową sesję z dozorcą.
Przebieg komunikacji:
Zastosowania W pierwotnej wersji wprowadzono kilka ciekawych zastosowań:
wdacl | Związuje z plikiem listę kontroli dostępu (ACL). |
wdcompact | Kompresja / dekompresja w locie. |
wdbiff | Automatyczne akcje dla skrzynki pocztowej. |
wdview | Prezentuje różnym użytkownikom różną postać tego samego katalogu. |
wddate | Pozwala na odczytanie bieżącego czasu i daty. |
Funkcjonalność System plików z portalem (ang. Portal File System) oferuje podobną funkcjonalność jak dozorcy. W systemie działa demon portalu (ang. portal daemon), który obsługuje zlecenia otwarcia plików i przydziela deskryptory. Demon portalu ma unkisowe gniazdgo, na którym nasłuchuje (wywołuje accept-y).
Przebieg komunikacji Proces użytkownika zechce otworzyć nowy plik w systemie plików z portalem. Prosba zostaje przekazana do demona portalu, który określa i zwraca deskryptor nowego pliku.
Analogia z Wirualnym Systemem Plików
Tworzeniu Stosowych warst systemu plików przez UCLA (University of California) i firmę SunSoft przyświecała analogia z przykryciem konkretnych systemów plików przez wirtualny.
Możliwości. Mechanizm stosowego nakładania systemów plików pozwala montować wiele systemów plików na drugim. Wirtualny v-węzeł jest - fizycznie - stosem węzłów kolejnych warstw systemów plików.
Przykład. Producent chce dostarczyć moduł szyfrowania-deszyfrowania. Wystarczy umieścić go na wierzchu systemu plików - moduł będzie przechwytywał wsystkie operacje we-wy i przekazywał (po zaszyfrowaniu lub zdeszyfrowaniu) operacje warstwę niżej.
4.4BSD. W systemie 4.4.BSD funkcja systemowa mount odkłada nową warstwę systemu plików na stos v-węzła, a umount zdejmuje. Każdą operację przekazuje się najpierw do warstwy znajdującej się na wierzchu. Każda warstwa może albo zakończyć wykonywanie się operacji albo przekazać ją do niższej warstwy. Jeżeli warstwa nie rozpoznała operacji przekazuje ją do warstwy niższej za pomocą funckji bypass
System plików nullfs pozwala zamontować dowolne poddrzewa hierarchii plików w dowolnym miejscu w systemie plików. Powoduje to skutek taki, jak dostarczenie drugiej nazwy ścieżkowej dla każdego pliku w poddrzewie. Nullfs przekazuje operacje do piewrwotnego systemu plików.
Oferuje funkcjonalność podobną do TFS-a. Umożliwia uzyskanie łącznego obrazu (unii) wszystkich systemów plików zamontowanych pod warstwą union mount. Wierzchnia warstwa jest najnowasza i tylko do niej można zapisywać. Gdy użytkownik szuka pliku, system przeszuka warstwy poczynając od wierzchniej.