W rozproszonym systemie plików ważne jest utrzymanie spójności pomiędzy replikami plików. Dzieje się tak, ponieważ jeśli plik ma wiele kopii, wszelkie zmiany dokonane w jednej kopii muszą być natychmiast odzwierciedlone w innych kopiach. Może to być trudne do wykonania, ponieważ mogą występować opóźnienia sieciowe. Tradycyjne metody zapewnienia spójności plików obejmują synchronizację dysków i dziennik.
Gdy komputer ulegnie awarii, może to spowodować niespójność systemu plików. Aby pomóc wykryć i poprawić niespójności, większość systemów operacyjnych posiada program narzędziowy o nazwie fsck, który jest uruchamiany podczas startu systemu lub po jego awarii.
FSCK sprawdza spójność systemu katalogów (i inodów związanych z katalogami) poprzez odczyt wszystkich i-węzłów, tworząc dwie tablice, z których każda ma licznik dla każdego pliku, oraz sprawdzając listę wolnych bloków lub mapę bitową w celu znalezienia bloków, które nie są używane. Następnie sprawdza pliki, które są obecne w katalogu, aby sprawdzić, czy są one prawidłowo oznaczone jako przydzielone bloki.
Liczniki i-węzłów w pierwszej tabeli zgadzają się z tymi w drugiej tabeli, co wskazuje, że inody są spójne. Ponadto, liczniki użycia plików w pierwszej tabeli zgadzają się z licznikami łącza w samych i-węzłach, co wskazuje, że pliki są używane prawidłowo.
Sprawdzanie systemu plików, które skanuje również niespójności bloków, jest powszechną cechą wielu nowoczesnych systemów operacyjnych. Używa on tablicy liczników dla każdego pliku w systemie plików, zaczynając od katalogu głównego i rekurencyjnie zstępując drzewo katalogów. Zwiększa liczbę i-węzłów podczas czytania plików, a następnie porównuje liczbę i-węzłów z liczbą linków w samych i-węzłach.
Jeśli liczba i-węzłów nie zgadza się z liczbą łączy w i-węzłach, można stwierdzić, że plik nie jest używany i powinien zostać usunięty lub naprawiony. W systemie plików, który jest spójny, te liczniki zawsze będą się zgadzać.
W systemie Linux dostępnych jest wiele różnych polityk spójności systemu plików, ale niektóre z nich są bardziej rygorystyczne niż inne. Niektóre z nich zmuszają serwer plików do wykonywania operacji bez sprawdzania konfliktów lub proszenia klienta o ponowne próby, co może wpływać na wydajność zapisu. Podobnie, niektóre wymagają, aby H-cache był spójny, co może wpłynąć na wydajność odczytu.
Niektóre z tych polityk są zaprojektowane tak, aby były bardziej drobiazgowe niż inne, pozwalając użytkownikowi wybrać specyficzną politykę, która jest najbardziej odpowiednia dla jego potrzeb. To czyni je odpowiednimi dla środowisk o mieszanym trybie pracy, gdzie plik jest udostępniany i modyfikowany przez nienakładające się zadania MPI i niepowiązane procesy.
Na przykład system plików CAPFS zapewnia architekturę wtyczek umożliwiającą użytkownikowi definiowanie własnych spójnych polityk. Mogą one być dostrojone w celu osiągnięcia optymalnej wydajności lub równowagi pomiędzy spójnością i dostępnością, w oparciu o stopień współdzielenia plików przez aplikacje.
Pozwala to na drobiazgowe dostosowanie do potrzeb użytkownika i może być szczególnie przydatne w równoległych systemach plików, w których można zaobserwować wysoki stopień współdzielenia. Oznacza to jednak również, że ogólnosystemowa polityka spójności musi być starannie dobrana. Musi być ona na tyle elastyczna, by uwzględniać zróżnicowane zachowania współdzielenia, a jednocześnie na tyle restrykcyjna, by wymuszać gwarancje spójności.
Podobne tematy