Spróbujmy przyjrzeć się różnym systemom plików i przeanalizować różnice pomiędzy nimi. Świadomy wybór używanego systemu plików pozwoli nam na komfortowe i bezpieczne korzystanie z narzędzia codziennego użytku, jakim stał się komputer osobisty.
Prosto – ale czy dobrze?
Pierwsze dyski twarde pojawiły się pod koniec lat 50. Trudno było wtedy mówić o standardach systemów plików – dyski wielkości sporych piecyków CO (pierwszy dysk IBM-a z 1957 r. składał się z pięćdziesięciu 24-calowych talerzy) były robione na zamówienie – podobnie jak komputery i systemy operacyjne. Dopiero na początku lat 70., kiedy Ken Thompson i Dennis Ritchie na dobre zaangażowali się w projekt tworzenia pierwszego UNIX-a (dla komputera PDP-7), powstał system plików z prawdziwego zdarzenia. Stanowił on podwaliny znanego po dziś dzień systemu s5fs, używanego przez słynny SVR4 (System V Release 4). Powstanie popularnych wersji UNIX-a (BSD, XENIX-a i innych) przypadło na początek lat 80. i wtedy też zaczęły się krystalizować standardy zapisu informacji na dyskach twardych. Większość prostych systemów plików ma podobną budowę, a niektórych ich odmian używamy do dzisiaj.
Wspomniany s5fs charakteryzuje się strukturą odpowiadającą rysunkowi 1. W początkowych sektorach partycji umieszczony jest blok startowy, mający za zadanie zainicjowanie systemu operacyjnego. Dalej znajduje się superblok, mieszczący tzw. metadane dotyczące całego systemu plików (patrz: ramka “Najważniejsze pojęcia”). Następnym, podstawowym dla funkcjonowania systemu plików s5fs elementem jest tablica i-węzłów. Mieści ona opisy fizycznego umiejscowienia bloków dyskowych (logicznych elementów partycji charakteryzujących się stałą długością) odpowiadających poszczególnym plikom i katalogom oraz ich atrybuty.
Bloki te są umieszczone w ostatniej, największej części dysku logicznego. Mają stały rozmiar dla całego systemu plików. Jednocześnie blok dyskowy stanowi najmniejszą porcję danych, jaką możemy odczytać lub zapisać w systemie s5fs (i wielu innych). Z tego względu plik ani katalog nie mogą mieć rozmiaru mniejszego niż założony rozmiar bloku dyskowego.
Rzecz jasna, plik może być większy niż rozmiar bloku – dokładniej, może zajmować na dysku rozmiar będący wielokrotnością rozmiaru bloku. Adresowanie wielu bloków rozwiązane jest w s5fs w sposób pokazany na rysunku 2. Każdy i-węzeł zawiera pole przechowujące maksymalnie 10 adresów bloków z danymi oraz trzy adresy tzw. bloków pośrednich. Blok pośredni jest zwyczajnym blokiem dyskowym, zawierającym adresy kolejnych bloków z danymi (lub kolejnych bloków z adresami – patrz: bloki pośrednie drugiego i trzeciego stopnia na rysunku 2). W przypadku stosunkowo małego rozmiaru bloku równego 1024 KB pozwala to na przechowywanie pliku o maksymalnym rozmiarze nieco ponad 16 GB.
Tablica i-węzłów ma strukturę liniową. Oznacza to, że w celu odnalezienia na dysku pliku lub katalogu (katalogi są w większości systemów po prostu plikami o odpowiednich atrybutach) musimy przeglądać sekwencyjnie tablicę tak długo, aż natrafimy na interesujący nas wpis. Podczas zapisu danych należy z kolei przejrzeć superblok (w którym znajduje się m.in. lista wolnych i-węzłów i bloków dyskowych) w poszukiwaniu wolnego miejsca na zapis danych.
W sposób podobny do opisanego działają systemy plików w większości domowych komputerów. Używany przez lata w Linuksie ext2 opiera się na założeniach zawartych w specyfikacji s5fs. Również Microsoft skorzystał z doświadczeń twórców UNIX-ów, tworząc systemy FAT/FAT-16/FAT-32, choć te ostatnie można traktować jako mocno okrojone wersje s5fs (nie przechowują one m.in. wielu metadanych, z których korzystają UNIX-y). Nieco bardziej rozbudowany niż FAT jest system NTFS, wprowadzony w Windows NT – Okienka z serii NT potrafią po prostu o wiele więcej niż domowe odmiany OS-ów z Redmond.