Valid HTML 4.01!

System plików z kroniką XFS

Tu zawarty jest opis systemu plików z kroniką XFS, opracowanego przez firmę Silicon Graphics Inc. (SGI) na potrzeby systemu operacyjnego IRIX, a następnie udostępnionego w roku 2000 społeczności linuksowej i reszcie świata jako oprogramowanie open source. 

 

 

Trochę historii

Najbardziej interesujący jest fakt, że system był wykorzystywany w środowiskach produkcyjnych od 1994 roku, działając na każdej stacji roboczej SGI w tysiacąch instalacji na całym swiecie. Ponieważ system plików ma historie dłuższą nawet od historii standardowego linuksowego systemu plików ext2, wybór systemu XFS czy to na użytek prywatny, czy też jako systemu produkcyjnego jest stosunkowo bezpieczną inwestycją. Stabilność i historia systemu plików to ważny czynnik wpływający na decyzje o zastosowaniu systemu plików w każdym środowisku, zwłaszcza w przypadku systemów produkcyjnych lub akademickich. Co prawda wdrożenie systemu plików XFS w systemie Linux może potencjalnie spowodować problemy — systemowy kod obsługi systemów plików i woluminów logicznych różni sie całkowicie od kodu XFS. Jednakże tysiące zadowolonych użytkowników i administratorów daje poczucie zaufania do kodu systemu XFS, jego potencjalnie wysokiej wydajnosci i krótkich czasów przeładowania (i przywracania do stanu spójnego).

Firma Silicon Graphics zadebiutowała na poczatku lat osiemdziesiatych jako producent stacji roboczych wielkosci pralki automatycznej. W stacjach tych kładziono nacisk na wysokowydajne przetwarzanie potokowe grafiki o dużej rozdzielczości. Przy takim nacisku na efektywność przetwarzania grafiki potrzebny był wysokowydajny system plików, umożliwiający przechowywanie efektów obróbki graficznej. Pierwszy własny system plików firmy SGI nosił nazwę EFS i był w zasadzie opartą na koncepcji obszarów wersją uniksowego systemu Berkley Fast File System (FFS). W wyniku wzrostu pojemnosci i wydajnosci dysków twardych SGI zdecydowała sie na implementacje nowego systemu plików, XFS, rozszerzonego w stosunku do poprzednika o funkcję kroniki i eliminujacego wiele ograniczeń systemów FFS i EFS, takich jak wstepna alokacja i-wezłów systemu plików.

Firma SGI opracowując system plików XFS brała pod uwagę nastepujace kwestie:

Premierowe wydanie systemu plików XFS miało miejsce w roku 1994 przy okazji wydania systemu operacyjnego IRIX 5.3 — od tej pory system XFS był stale rozszerzany i ulepszany.

 

 

Opis 

System plików XFS jest wysokowydajnym systemem plików z kroniką, którego od konkurentów  odróżniają pewne istotne cechy.

Oto niektóre z głównych przyczyn wyższości systemu XFS:

 

Przechowywanie danych w systemie plików XFS

System plików XFS to w pełni 64-bitowy system plików złożony z trzech podstawowych obszarów:

 

Sekcja danych systemu plików XFS jest podzielona na grupy alokacji. Grupy alokacji są niewidocznymi dla użytkowników, rozłącznymi podzbiorami przestrzeni dyskowej, dostępnej w sekcji danych systemu plików XFS. Odpowiadają koncepcji grup cylindrów, zastosowanej w systemie FFS. Grupy alokacji dzielą system plików XFS na niezależne pule przestrzeni dyskowej o rozmiarach od 0,5 do 4 GB.

 

obrazek1

Organizacja systemu plików XFS na dysku.

 

Każda grupa alokacji utrzymuje własne struktury danych zarządzajace wolnym miejscem, i-węzłami oraz blokami zajętymi w ramach grupy alokacji. Takie podejście ma szereg zalet, miedzy innymi:

Jednym z założeń techniki grup cylindrów, wprowadzonej w systemie FFS, było promowanie koncepcji skupienia dysku (ang. disk locality), polegającej na przydzielaniu  bloków danych przynależących do tego samego pliku czy katalogu w tej samej grupie cylindrów. Mechanizm taki pozwala zmniejszyć narzuty czasowe zwiazane z koniecznością wielokrotnego przesuwania głowic podczas dostepu do pliku. Rozmiar grup alokacji, stosowany w systemie XFS, redukuje prawdopodobieństwo umieszczenia kolejnych bloków danych pliku czy katalogu w bezposrednim sąsiedztwie, w zamian wprowadzono wiec pojecie skupienia logicznego (ang. logical locality), polegającego na optymalnym w ramach grupy alokacji rozmieszczeniu wszystkich obszarów dyskowych przypisanych do danego pliku.

Aby zwiększyc wydajność operacji przydziału przestrzeni dyskowej do plików, system XFS w miejsce metody alokacji pojedynczych bloków stosuje model alokacji oparty na obszarach (ang. extents). Obszary są szeregami przylegających do siebie wolnych bloków dyskowych, alokowanych wspólnie. Struktury danych, identyfikujące lokalizację dyskową plików i katalogów w systemach plików opartych na alokacji, przechowują (zamiast ciagu bloków i wskaźników bloków pośrednich) początkowe położenie pierwszego bloku obszaru i jego długość. Rysunek prezentuje różnice pomiedzy alokacją opartą na blokach a alokacją całych obszarów.

 

obrazek2

 

Zastosowanie modelu alokacji obszarów pomaga zachować główny cel koncepcji skupienia dysku, a ponadto:

 System plików XFS korzysta też z zaawansowanego mechanizmu przydziału opóźnionego, stosowanego podczas zapisu plików na dysk. Algorytm ten umożliwia systemowi XFS optymalizację alokacji obszarów dla nowych i aktualizowanych plików. 

Dzieki redukcji liczby osobnych operacji zapisu w systemie plików osiągnięto również zwiększenie wydajności tych operacji.

Poza korzystaniem z koncepcji obszarów, system XFS stosuje podczas tworzenia katalogu pewne heurystyki, mające na celu dalsze zwiększenie wydajnosci. Każdy nowy katalog tworzony w systemie plików XFS jest umieszczany w innej grupie alokacji niż jego katalog nadrzędny, a dla przyszłych elementów katalogu rezerwowana jest pewna ilość ciągłej przestrzeni dyskowej. System XFS próbuje również alokować i-wezły plików i obszary w bezposrednim sąsiedztwie dyskowego obszaru katalogu, w którym pliki te zostały założone.

Podobnie jak każdy inny linuksowy system plików, metadane związane z każdym z plików i katalogów systemu plików utrzymywane sa w systemie XFS w strukturach zwanych i-węzłami. Jednakże system XFS alokuje i-węzły w miare potrzeby (dynamicznie), nie marnując czasu na wstepną alokację i-węzłów podczas zakładania systemu plików. Zmniejsza to ilość zajętego miejsca, zajmowanego przez i-węzły nie istniejących jeszcze plików i katalogów. Co ważniejsze, dzieki takiemu podejsciu zwiększana jest elastyczność systemu plików XFS, nie jest on bowiem ograniczony do konkretnej liczby plików i katalogów. Każdy system XFS może zawierać dowolną liczbę plików i katalogów, ograniczoną jedynie iloscią dostepnego miejsca i przestrzenią adresową 64-bitowych wewnetrznych struktur danych. Ułatwia to znacznie operacje rozszerzania istniejących systemów plików XFS, odpada bowiem konieczność wykonywania żmudnych prób w rodzaju wykonywania kopii danych, zwiększania rozmiaru systemu plików i przywracania danych z kopii zapasowej.

Do systemu plików mogą być w prosty sposób dodawane nowe grupy alokacji — operacje takie wymagają jedynie niewielkich zmian metadanych systemu plików, nie jest bowiem konieczna wstępna alokacja i-węzłów, a większość struktur danych, odnoszących się do nowych grup alokacji, przechowywanych jest wewnątrz tychże grup. Jedynym rzeczywistym ograniczeniem zwiększania rozmiaru systemu plików XFS jest to, że nowe grupy alokacji muszą mieć ten sam rozmiar, co grupy alokacji utworzone podczas zakładania systemu plików.

Rozmiar bloków logicznych, wykorzystywanych przez system XFS (podobnie jak w przypadku innych nowoczesnych systemów plików), waha sie od 512 bajtów do 64 kB. W połączeniu z 64-bitowymi strukturami danych daje to maksymalny rozmiar systemu plików wynoszący 18 petabajtów (18 milionów gigabajtów) przy maksymalnym rozmiarze pliku wynoszącym 9 petabajtów. Co prawda system operacyjny Linux ogranicza rozmiar obsługiwanych urządzen blokowych w znacznie wiekszym stopniu, ale w momencie, w którym z jądra Linuksa usuniete zostaną te ograniczenia, system plików XFS bedzie już gotów do wykorzystania nowych możliwości.

 

Specjalne cechy systemu XFS

System plików XFS obsługuje wewnętrznie tzw. rzadkie pliki (ang. sparse files), będące plikami o dużych rozmiarach zawierającymi stosunkowo niewielkie ilosci danych. Dane te moga być zapisywane do dowolnego miejsca pliku rzadkiego, bez konieczności przydzielania z góry większej ilości miejsca niż jest to potrzebne do przechowywania danych pliku (poza pewną niewielką ilością metadanych systemu plików). Mimo że rozmiar plików rzadkich zwracany przez system plików jest zawsze ich rozmiarem maksymalnym, bloki danych są do niego przydzielane dopiero podczas zapisu danych w pliku — odczyt niezapisanego wcześniej fragmentu pliku da w wyniku blok wypełniony zerami. Pliki rzadkie świetnie nadają się do niektórych baz danych i innych dużych, podzielonych na rekordy plików; aplikacje korzystające z plików rzadkich mają dostęp do znacznej przestrzeni adresowej, nie marnując przy okazji przestrzeni dyskowej, której jeszcze nie wykorzystują. Pojęcie logicznego rozmiaru pliku rzadkiego i metody alokacji bloków w takim pliku dobrze ilustruje rysunek.

 

obrazek3

Alokacja bloków w pliku rzadkim.

 

Na wydajność systemu plików XFS pozytywny wpływ ma nie tylko implementacja koncepcji grup alokacji i metody alokacji opartej na obszarach; system XFS przewyższa inne systemy plików również dzieki przechowywaniu metadanych systemu plików w węzłach zrównoważonych drzew binarnych (B+drzew). 

System XFS wykorzystuje B+drzewa do:

Jeżeli weźmiemy pod uwagę fakt, że głównym zadaniem stacji roboczych firmy SGI było efektywne przetwarzanie strumieni multimedialnych, wymagania co do wydajności systemu plików XFS nie bedą specjalnie zaskakujące. Jednakże poza wspólnymi dla wszystkich nowoczesnych systemów plików cechami zwiekszającymi wydajność, takimi jak alokacja obszarów, dynamiczny przydział i-wezłów i szerokie wykorzystanie B+drzew, system XFS posiada pewne szczególne cechy, zapewniające mu wydajność wymaganą przez zaawansowane aplikacje multimedialne. Najbardziej interesująca z tych cech jest unikalna zdolność tworzenia podwoluminów czasu rzeczywistego (ang. real-time volumes), zapewniających utrzymanie tzw. GRIO (Guaranted Ratio I/O), czyli gwarantowanej przepustowości operacji wejścia-wyjścia.

Woluminy te przeznaczone są na użytek plików wymagających przesyłania z ustaloną szybkoscią transmisji. Podwoluminy czasu rzeczywistego systemu XFS to fragmenty systemu plików, przechowujące wyłącznie dane plików przetwarzanych w czasie rzeczywistym. Wszystkie metadane związane z tymi plikami przechowywane są w głównej części systemu plików. Wskazanie, że dany plik wymaga operacji czasu rzeczywistego, odbywa sie za pośrednictwem wywołania funkcji ioctl podczas tworzenia pliku.

Istniejące pliki mogą zostać skopiowane do obszaru czasu rzeczywistego za pośrednictwem polecenia xfs_rtcp, które automatycznie nadaje plikom atrybuty plików przetwarzanych w czasie rzeczywistym. Podwoluminy czasu rzeczywistego systemu plików XFS korzystają z odmiennej strategii przydziału bloków, zoptymalizowanej pod kątem szybkiej alokacji i minimalnej fragmentacji. Metoda ta nie jest tak sprawna, jak metoda stosowana w standardowych obszarach systemu plików XFS, gwarantuje jednak szybką alokacje i minimalne narzuty związane z przesunęciami głowic podczas dostepu do pliku.  

 

Podsumowanie

System XFS to wysokowydajny system plików, korzystający z wyrafinowanych algorytmów, struktur danych i zaawansowanych funkcji heurystycznych. Gruntowne przetestowanie i wieloletnia historia systemu jako podstawowego systemu plików stacji roboczych firmy SGI wskazuje, że system ten jest jednym z poważniejszych kandydatów dla środowisk kontrolowanych przez system operacyjny Linux.

 

 

Powrót