System plików XFS
Julian Kania
Wstęp
XFS jest systemem plików stworzonym przez Silicon Graphics Incorporation. Początkowo był przewidziany jako system plików dla systemu Irix, od maja 2001 istnieje również implementacja tego systemu plików dla Linuksa na licencji GPL.
Jaki jest ten XFS
Przy projektowaniu XFSa podjęto szereg założeń co do możliwości, jakie ma dawać ten system plików. Mianowicie, główne cechy tego systemu to:
- 64 bitowe adresowanie , co oznacza plik wielkości maksymalnie 2^63 B oraz system plików wielkości do 2^64B
- transakcjonowanie wszystkich operacji, tak aby awaria systemu nie miała wpływu na spójność danych
- wysoka wydajność , osiągnięta przez utrzymywanie danych w postaci B+ drzew
- skalowalność, czyli zastosowanie struktur i algorytmów które sprawdzą się zarówno na maszynach biurkowych, jak też w dużych serwerach
- rozbudowane możliwości nadawania plikom atrybutów - na ten cel przewidziano do 64KB na plik
- rozdzielenie przestrzeni dla użytkowników od przestrzeni dla systemu, do której dostęp mają tylko uprzywilejowani użytkownicy
- wspieranie list dostępów (Acces control list), czyli kontrolowania dostępu do pliku bardziej zaawansowane niż tylko na poziomie właściciel/grupa/inni
- gwarantowanie zarządanego transferu - proces moze poprosić, aby dane były mu przesyłane nie wolniej niż zadana wartość
- zapewnienie maksymalnej ciągłości danych
Transakcjonowanie operacji
Każda operacja na dysku modyfikująca jego zawartość zostaje najpierw opisana w dzienniku, a następnie dopiero wykonana.
Dziennik może być rozłączny z samym systemem plików ( w szczególności może być zapisany na NFS), co może być korzystne w przypadku trwałej awarii sprzętu.
\ ile dziennik jest na tym samym nośniku co dane, blokady na pliki są zakładane najpóźniej jak to jest możliwe, czyli w chwili rozpoczęcia zatwierdzania transakcji. Gdy dziennik leży gdzie indziej, pliki blokowane są natychmiast.
Budowa XFS
Nośnik danych zostaje podzielony na bloki o rozmiarze do 64kB.
Większą jednostką, na jaką podzielony jest nośnik, są grupy alokacji . Grupa alokacji to struktura zawierająca:
- kopię superbloku
- listę grup pustych bloków w obrębie grupy alokacji
- listę zajętych i-węzłów w obrębie grupy alokacji
B+drzewa są bardzo lubianą przez konstruktorów xfs strukturą, one właśnie zostały użyte do implementacji ww list.
Użycie grup alokacji ma, oprócz zapewne wielu innych, tę zaletę, że obsługiwanie dostępu do danych przez wiele wątków staje się dużo łatwiejsze, wystarczy przyjąć że różne wątki mają dostęp do różnych grup alokacji (por. gwarantowany transfer).
Co zna i-węzeł
w I-węźle znajduje się następujące informajce:
- standardowe dane o pliku
- atrybuty
- dane właściwe
Atrybuty i dane właściwe są realizowane podobnie. W zależności od ich rozmiaru, może to być:
- wpis w samym i-węźle, gdy danych jest bardzo mało
- tablica ciągłych grup i-węzłów z danymi, o ile nasz i-węzęł taką tablicę (właściwie dwie) zmieści.
- B+drzewo takich ciągłych grup
Lokalne systemy plików