Pod dobrą opieką

Tradycyjne systemy plików, stosowane w wielu (zwłaszcza “domowych”) systemach operacyjnych, mają sporo wad. Podstawową jest problem z odzyskaniem danych, jaki pojawia się w momencie, gdy OS przerwie nagle działanie. Dlatego też już od lat projektanci oprogramowania systemowego proponują coraz bardziej pomysłowe metody zapisu informacji na dysku twardym. Początkowo były one dostępne jedynie w systemach serwerowych, od niedawna trafiają jednak również na biurka zwyczajnych użytkowników pecetów.

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.

Więcej:bezcatnews