Systemy plików

advertisement
Wstęp
System plików opisuje metody oraz struktury danych, które używane są przez system operacyjny
celem zapisywania informacji o plikach oraz ich zawartościach na odpowiedniej partycji. Innymi
słowy, jest on sposobem organizacji plików na dysku. Terminu tego używa się także, jeśli chodzi
mamy na myśli daną partycję, czy dysk, może być on, zatem mylący. Różnice pomiędzy dyskiem
twardym, partycją, a systemem plików są bardzo istotne. Niektóre programy pracują opierając się o
sektory dysku twardego, są to najczęściej programy, które tworzą systemy plików. Jeżeli w polu
działania tych programów znajdzie się jakiś system plików, może on ulec uszkodzeniu lub może
zostać całkowicie wymazany. Większość spotykanych programów pracuje w oparciu o istniejący
na danej partycji określony system plików, programy te nie są w stanie pracować na partycjach
zawierających dość egzotyczne systemy plików, albo na partycjach zawierających błędy
w systemie plików. Zanim użyjemy danej partycji albo dysku twardego jako system plików, należy
go odpowiednio przygotować do tego zadania tworząc właściwe struktury. Cały proces
przygotowywania jest nazywany tworzeniem systemu plików.
Większa część systemu plików, która jest używana przez systemy oparte na jądrze Unixowym jest
bardzo podobna do siebie zarówno pod względem budowy jak i funkcjonalnie. Poszczególne
partycje Unikowe często różnią się od siebie szczegółami. Do wspólnych pomysłów, które
wykorzystywane są w każdym systemie należą i-węzeł, superblok, blok danych, blok pośredni oraz
blok katalogu. W superbloku zawarte są informacje dotyczące systemu jako całości, na przykład
znajdziemy tam informacje o rozmiarze, którego wartość dokładna zależy właśnie od użytego
systemu plików. I-węzeł posiada wszelkie informacje o danym pliku, poza jego nazwą. Nazwa pliku
jest przechowywana w katalogu, wraz z numerem odpowiedniego i-węzła. Wpisy w katalogu
zawierają liczbę i-węzłów plików oraz nazwę. W i-węźle przechowywane są numery bloków
danych, w których zawarty jest dany plik. Dzięki automatycznej alokacji miejsca mamy możliwość
przechowywania tylko niewielkiej liczby numerów, gdy jednak zajdzie taka potrzeba dodatkowa
przestrzeń zostanie alokowana dynamicznie. Bloki alokowane w sposób dynamiczny nazywane
są bezpośrednimi. Aby znaleźć określony numer bloku danych trzeba znaleźć pierwszy pośredni
blok.
Unixowe systemy plików pozwalają zazwyczaj na tworzenie dziur w plikach, które tworzone są przy
pomocy Iseek. Tworzenie dziur polega na tym, że system udaje, że na danym miejscu występuje
zero, jednak nie zajmuje ono żadnej przestrzeni dyskowej. Do sytuacji takiej często dochodzi, jeżeli
mamy do czynienia z niewielkimi binariami, bazami danych oraz bibliotekami dzielonymi Linuxa.
Dziury są przechowywane przez celowe zapisanie odpowiednich wartości w polu i-węzła
lub adresu bloku pośredniego. Adres ten oznacza, że w danym pliku znajduje się dziura. Dziury
pełnią całkiem pożyteczną funkcję, przykładowo dzięki użyciu dziur rozmiar tych samych plików
na dysku zmniejszył się, w stosunku do pierwotnej wielkości 100MB, o 2MB. Przykładowy system
zawierał niewielką ilość programów oraz nie zawierał baz danych.
Ext2
Ext2 jest skrótem od nazwy Second Extended File System, co po Polsku oznacza drugi
rozszerzony system plików. Autorem pierwszej wersji tego systemu plików był Remy Card
związany z Universite Pierre et Marie Curie w Paryżu. Wersja alfa tego systemu, którą wspomniany
człowiek stworzył w styczniu roku 1993, powstała jako zwykłe rozszerzenie systemu plików Extfs,
który miał być następcą pierwszego systemu plików zastosowanego w Linuxie - Minixa. W obecnej
chwili Ext2 stał się najczęściej używanym systemem plików w systemie Linux. Jeszcze
do niedawna Ext2 był domyślnym systemem plików w wielu dystrybucjach Linuxa. System Ext2
zaprojektowano, uwzględniając możliwość rozszerzenia jego funkcjonalności w przyszłości wraz
z zachowaniem
wstecznej
kompatybilności,
z czego
na pewno
korzystały osoby,
które
są odpowiedzialne za rozwój tego systemu. Efektem prac nad Ext2 jest powstanie wielu
rozszerzeń oraz niewielkich usprawnień.
Zalety systemu Ext2:

Wsparcie dla wszystkich elementów Unixowych systemów plików, takich jak pliki specjalne, prawa dostępu,
dowiązania symboliczne.

Wysoka wydajność, która zapewniana jest dzięki mechanizmowi przeciwdziałającemu fragmentacji danych
- jest to możliwe dzięki przydzielaniu bliskich bloków oraz dzięki prealokacji.

Wydajny mechanizm dowiązań symbolicznych.

Jest to system dobrze przetestowany i stabilny, tak samo solidny jest program używany do naprawiania tego
systemu noszący nazwę e2fsck.

Odpowiednio zdefiniowany sposób na dodawanie rozszerzeń.

Jest niezależny od systemu operacyjnego, który jest na nim zainstalowany - każde pole wielobajtowe
zapisane jest w standardzie Littre - endian.

Rozmiar maksymalny pojedynczej partycji wynosi 4TB, natomiast rozmiar maksymalny pojedynczego pliku
jest równy 2GB. Plik może mieć nazwę o maksymalnej długości wynoszącej 255 znaków.

Obsługuje dziurawe pliki, w których bloki nieużywane nie zostaną przydzielone.

Możliwość automatycznego sprawdzenia systemu w wyniku stwierdzenia awarii lub, co jakiś czas.
Wady systemu Ext2:

Niewielka efektywność obsługi katalogów, chociaż dzięki użyciu pamięci podręcznej może ona ulec
znacznej poprawie.

Niska wydajność w przypadku dużej ilości bardzo małych plików, rzędu kilkuset bajtów. Dostęp do nich jest
stosunkowo wolny, a alokacja pociąga za sobą duże straty.

W przypadku nieprawidłowego zamknięcia systemu sprawdzenie systemu plików trwa bardzo długo.
Partycja, która sformatowana jest w systemie plików Ext2 może być podzielona na bloki
o rozmiarach 1024, 2048 albo 4096 bajtów. Niektóre architektury umożliwiają zastosowanie
rozmiaru bloku nawet 8192 - bajtowego. Kolejne bloki są połączone ze sobą w grupy, których
rozmiar jest zależny od odpowiednio wybranego rozmiaru bloku. Dzięki podziałowi na grupy
zwiększona jest lokalność danych mająca związek z pojedynczym plikiem, a więc przyspieszony
jest dostęp do nich. Podczas tworzenia systemu plików grupy ustalane są statycznie. Oryginalna
wersja Ext2 wymagała, aby w każdej grupie znalazł się superblok, który opisywałby cały system
plików, a także deskryptory grup, które opisywałyby sumaryczne dane o wszystkich grupach.
Rozwiązanie takie miało na celu przyspieszenie dostępu do informacji oraz miało zabezpieczyć
istotne dane przed awarią dysku. Nowsze wersje systemu przyniosły ze sobą możliwość pomijania
kopii w niektórych grupach, zmniejszając w ten sposób ilość marnowanego miejsca na dysku.
W nowym rozwiązaniu kopie superbloków oraz deskryptorów grup znajdują się jedynie w blokach
o numerach 0,1, a także w tych będących potęgami liczb 3,5 i 7. Oprócz superblok i deskryptorów
grup, które są identyczne w strukturze całego dysku, w skład każdej grupy wchodzą:

Bitowa mapa bloków - zajmuje ona pojedynczy blok, którego każdy bit odpowiada pojedynczemu blokowi
danej grupy. Ustawiony bit oznacza, że dany blok jest zajęty.

Bitowa mapa i-węzłów, która opisuje zajętość i-węzłów w ramach danej grupy.

Tablica i-węzłów, którą tworzą bloki, w ramach, których są przydzielane metryki plików - i-węzły. Ilość iwęzłów w danej grupie jest ustalana statycznie w czasie tworzenia systemu plików.
Autorom systemu Ext2 przyświecało stworzenie bezpiecznego i solidnego systemu, który
jednocześnie byłby bardzo szybki. Aby osiągnąć ten cel, zrezygnowano ze stosowania jako
struktur danych b-drzew. Powołując się na autorów skutki awarii w momencie operacji
równoważenia drzewa byłyby bardzo trudne do naprawienia. Ext2 posiada cechy, które
w znacznym stopniu ułatwiają okresową kontrolę poprawności tego systemu oraz dokładność jego
naprawy po stwierdzeniu awarii. System plików Ext2 umieszcza w superblok specjalną sygnaturę,
która określa, czy system prawidłowo domontowano. Dzięki tej sygnaturze, podczas ładowania
systemu operacyjnego istnieje możliwość sprawdzenia, czy system plików na danej partycji
wymaga sprawdzenia, czy wymontowano go poprawne i istnieje pełna spójność danych. Ext2
przechowuje również w superblok daty ostatnich sprawdzeń systemu plików, a także ilość
montowań, które upłynęły od ostatniego sprawdzenia. Można wymusić sprawdzanie automatyczne
poprawności danego systemu plików, co pewną liczbę montowań. W tym celu należy odpowiednio
ustawić wartość pola s_max_mnt_count znajdującego się w superblok. Stała domyślna
EXT2_DFL_MAX_MNT_COUNT jest równa 20. Sprawdzanie poprawności może również
być zautomatyzowane pod względem czasu. Aby system był sprawdzany, co interesujący
nas okres czasu, wystarczy ustawić odpowiednią wartość w polu s_checkinterval należącym
do superbloku, domyślnie opcja ta jest wyłączona.
Ext3
Trzeci rozszerzony format plików wziął swój początek od formatu Ext2. Stworzył go w roku 1999
Stephen Tweedie pracując nad dystrybucją Red Hat. Podstawową cechą, która różni te dwa
systemy plików jest użyty mechanizm księgowania, zwany journalingiem. Wprowadzono go, aby
skrócić czas wstawania systemu po zaistniałej awarii. Oprócz tego wprowadzonych zostało kilka
istotnych usprawnień, które wcześniej były dostępne jako łaty przeznaczone dla systemu plików
Ext2. Mając na uwadze, że system ten zawiera prawie wszystkie cechy swojego poprzednika,
warto wyróżnić dodatkowe możliwości, jakie stwarza stosowanie Ext3:

Mechanizm journalingu, czyli mechanizmu księgowania, który zwiększa bezpieczeństwo całego systemu
dzięki niepodzielności informacji. Jego główną zaletą jest znaczne skrócenie czasu sprawdzania systemu
plików po niepoprawnym domontowaniu.

Indeksowanie katalogów, które w znaczny sposób zwiększa wydajność systemu plików przy dużej ich ilości.

Synchroniczny zapis, który działa w najnowszych wersjach systemu plików Ext3 nawet ponad 10 razy
szybciej, w stosunku do zapisu z systemu Ext2. Dotyczy to zapisu do plików zwykłych.
Celem przyświecającym autorowi systemu Ext3 było nie tworzenie go od nowa, tylko jak najlepsze
usprawnienie systemu plików Ext2. Dzięki takiemu potraktowaniu sprawy warto wymienić zalety,
jakie zyskali dzięki temu użytkownicy Linuxa:

Można montować system Ext3 jako system Ext2, o ile został one w poprawny sposób domontowany.
Na dzień dzisiejszy nie ma jeszcze możliwości montowania systemu Ext2 jako systemu Ext3, jednak opcja
ta ma być udostępniona w najbliższej przyszłości.

Można korzystać z dużej ilości programów narzędziowych sprawdzonych w przypadku systemu plików
Ext2, przykładem tutaj jest chociażby program fcsk.

Istnieje możliwość bezpiecznej oraz łatwej migracji z systemu plików Ext2 do systemu Ext3 przy pomocy
programu o nazwie tune. Operacja taka nie wymaga nawet odmontowania partycji z określonym systemem
plików na czas konwersji.

Stabilność, przewidywalność oraz uniknięcie wielu błędów.

Zaufanie szerokiego grona użytkowników.
Jeszcze do niedawna Ext2 był podstawowym systemem plików używanym w stacjach roboczych.
Wybierano go również jako system plików serwerowych, główne ze względu na jego wysoką
stabilność, odpowiedni pakiet narzędziowy oraz długą obecność na rynku. Był on z powodzeniem
wykorzystywany na bardzo dużych serwerach obsługujących w danej chwili ogromne ilości
informacji. Z biegiem czasu użytkownikom korzystającym z tego systemu plików zaczął doskwierać
brak journalingu a także niska wydajność w przypadku dużej ilości plików, których to wad
nie posiadały nowo powstałe systemy plików. Ext3 uznaje się za ewolucyjne rozwinięcie systemu
plików Ext2, które oferuje renomę oraz stabilność poprzednika a także garść cech dodatkowych,
pozwalających umieścić go w gronie nowoczesnych systemów plików. Ext3 na dzień dzisiejszy
wydaje się być idealnym systemem plików przeznaczonym dla stacji roboczych oraz domowych
komputerów. Opinię tę propaguje firma RedHat, która używa Ext3 jako domyślnego systemu plików
w swojej dystrybucji Linuxa. Gwarantem ciągłego wsparcia firmy RedHat dla systemu Ext3 jest fakt,
że sam autor tego systemu pracuje w tej firmie. Biorąc pod uwagę indeksowanie katalogów oraz
wydajny i stabilny mechanizm księgowania, system Ext3 poleca się również jako system plików
przeznaczony dla serwerów. Na dzień
dzisiejszy system
Ext3
nie jest wykorzystywany
w następujących zastosowaniach:

W serwerach
pocztowych,
ponieważ
wymagają
one bardzo
szybkiego
synchronicznego
zapisu
w odpowiednich strukturach katalogowych, którego mechanizmu system plików Ext3 jeszcze w pełni
nie wspiera.

W serwerach operujących na dużej ilości małych plików, w których wykorzystuje się systemy plików takie
jak reiserfs oraz xfs. Dzieje się tak dlatego, że cechują się one większą wydajnością oraz lepszym
wykorzystaniem przestrzeni dyskowej. Dzięki słabej skalowalności idealnie nadają się one jako systemy
plików do bardzo szybkich serwerów.
NFS
Skrót NFS wziął się od angielskiego terminu Network File System, co oznacza Sieciowy System
Plików. Umożliwia on współdzielenie katalogów oraz plików przez różnych użytkowników
znajdujących się w obrębie jednej sieci. Dzięki systemowi NFS mamy możliwość dostępu
do katalogów oraz plików znajdujących się w sieci na takich samych zasadach jakbyśmy pracowali
na systemie plików znajdującym się na dysku twardym naszego komputera. Do najważniejszych
zalet systemu NFS należą:

W przypadku, gdy współdzielone dane mogą być pobierane przez sieć z określonego serwera, stacje robocze
znacznie oszczędzają na zajętości swojej przestrzeni dyskowej.

Nie ma potrzeby, aby każdy z użytkowników miał osobny katalog domowy na każdej z maszyn znajdujących
się w sieci, jeśli zechce pracować na innej z nich. Katalog home może zostać ustawiony na serwerze
z systemem plików NFS, dzięki czemu stanie się on osiągalny przez sieć lokalną.

Również urządzenia służące do archiwizacji danych, jak pamięci typu FLASH, napędy CD-ROM oraz DVDROM, mogą być z powodzeniem współdzielone przez inne maszyny znajdujące się w sieci. Dzięki takiemu
rozwiązaniu możliwa jest redukcja wymiennych napędów znajdujących się w sieci.
System plików NFS składa się, co najmniej z dwóch części: jednej stacji klienckiej oraz serwera.
Poszczególni klienci mają swobodny dostęp do plików przechowywanych na serwerze. Aby było
to możliwe do wykonania w rzeczywistości niezbędnym staje się uruchomienie następujących
procesów:

nfsd - jest to demon, który obsługuje zapytania pochodzące od klientów systemu NFS.

mountd - jest to demon montujący system plików NFS, który troszczy się o przesyłane do niego zapytania.

portmap - demon mapujący porty, za pomocą którego klient NFS może sprawdzić, który port serwera
używany jest przez system plików NFS.
Klient również posiada możliwość uruchomienia demona związanego z system NFS. Nazywa
się on nfsiod i używany jest do obsługi zapytań przychodzących z serwera NFS. Chociaż
uruchomienie nfsiod nie jest konieczne, uzyskuje się przy nim lepsze osiągi.
System plików NFS posiada wiele praktycznych zastosowań. Niektóre z nich zostały opisanych
poniżej:

Można ustawić kilka maszyn tak, by współdzieliły się ze sobą napędem DVD lub innym nośnikiem
informacji. Jest to o wiele tańsza metoda od metod tradycyjnych. Pomaga ona zainstalować oprogramowanie
na większej ilości komputerów jednocześnie.

W przypadku dużych sieci, rozsądnym rozwiązaniem może stać się skonfigurowanie serwera NFS oraz
umieszczenie w nim katalogów /home. Dzięki temu poszczególni użytkownicy będą mieli cały czas ten sam
katalog /home, niezależnie od tego, z którego komputera zalogują się do systemu.

Większa ilość maszyn może posiadać współdzielony katalog /usr/ports/distfiles. Dzięki takiemu rozwiązaniu
nie trzeba wielokrotnie pobierać pliki z Internetu w momencie, gdy chcemy zainstalować to samo
oprogramowanie na większej ilości maszyn.
ISO 9660
ISO 9660 jest ogólnie przyjętym, międzynarodowym standardem zapisu danych cyfrowych
na płycie CD. Płyty nagrane przy użyciu tego systemu mogą być bez przeszkód odczytane
na każdej
platformie
sprzętowej.
Przykładowo,
aby sprawdzić
czy nasz
Mac obsługuje
ten standard wystarczy znaleźć w folderze System:Extensions, przy pomocy Command-I pozycję
ISO 9660 File Access. Jeżeli zobaczymy wersję 5.0 lub wyższą, nasz system powinien
bez problemu odczytać płytę nagraną w standardzie ISO 9660. Definicja opisywanego standardu
zawiera trzy różne metody zapisu danych na płytach CD. Są to tak zwane poziomy:

Poziom1, który w największym stopniu ogranicza dowolność zapisu informacji. Wymaga on, aby każdy plik
był zapisany jako ciąg bajtów bezpośrednio po sobie następujących. Żaden plik nie może zostać podzielony,
a nazwa pliku i katalogu może składać się maksymalnie z 8 znaków nazwy i 3 znaków rozszerzenia.
Maksymalna dopuszczalna głębokość katalogu wraz z podkatalogami wynosi 8.

Poziom 2, którego jedyne wymaganie dotyczy konieczności zapisu plików jako jednego ciągu bajtów
bezpośrednio po sobie następujących. Płyty, które są nagrane w standardzie drugiego poziomu mogą
być nieczytelne w niektórych systemach, na przykład w starszych wersjach systemu MS-DOS.

Poziom 3, z którym nie wiążą się żadne ograniczenia dotyczące dowolności zapisu fizycznego danych
na płycie. Jest on użyteczny w przypadku nagrywania pakietowego, głównie ze względu na brak
ograniczenia dotyczącego fragmentacji plików.
ReiserFS
ReiserFS to system plików tworzony na zasadzie open - source dla systemu operacyjnego Linux.
Nie byłby on w stanie rozwinąć się do takiego stopnia zaawansowania jak obecnie, gdyby
nie wsparcie wielu firm informatycznych. Przy tworzeniu tego systemu jego autorom towarzyszyło
założenie stworzenia systemu plików bardzo efektywnego, który można byłoby wykorzystywać,
tak w stacjach roboczych, jak i na serwerach.
Do podstawowych cech ReiserFS należą:

Fast journaling - dzięki czemu minimalizowany jest czas sprawdzania integralności dysku, który musi
być dokonany po każdym nieprawidłowym odmontowaniu danej partycji.

Użycie szybkich zbalansowanych drzew, dzięki czemu poprawiona jest efektywność korzystania
z katalogów zawierających bardzo duże ilości plików.

Efektywność w wykorzystaniu miejsca, polegająca na upchaniu dużej ilości małych plików w ramach
jednego bloku.
Kwestia wyrównania plików do granic poszczególnych bloków pociąga za sobą następujące efekty:

Minimalizacji ulega liczba bloków przeznaczona dla jednego pliku, co jest zaletą szczególnie docenianą, jeśli
chodzi o duże pliki, do których odwoływanie następuje w mało lokalny sposób.

Marnowaniu ulega przestrzeń bufora i dysku, ponieważ przechowywane są bloki całe, nawet te które nie są
do końca zapisane.

Marnowany jest czas operacji wejścia / wyjścia przeznaczony na ściąganie całych bloków, pomimo tego,
że nie muszą być one do końca zapisane.

Zwiększeniu ulega średnia ilość bloków, które są potrzebne do poszczególnych plików w danym katalogu.

Istotna staje się prostota kodu.
System ReiserFS przechowuje nazwy plików, jak i same pliki w zrównoważonym drzewie.
Niewielkie pliki, i-węzły, katalogi oraz końce plików dużych rozmiarów są upakowane w sposób
bardzo efektywny, co zapewnia odejście od wyrównywania każdego pliku do bloku oraz i-węzła
o stałym rozmiarze. Większe pliki są przechowywane w węzłach niesformatowanych, które
są przyłączone do drzewa, bez możliwości przeniesienia w algorytmach balansujących drzewo.
System ReiserFS używa drzew B+. Drzewa B+ różnią się od drzew B- tym, że dane, które są w
nich przechowywane umieszczone są na samym dole drzew, w pojedynczych liściach.
W implementacji tej niewielkie informacje, czyli katalogi, nazwy plików, pliki o małych rozmiarach
oraz ogony większych plików są przechowywane bezpośrednio w liściach, natomiast pliki większe
przechowywane są w gałęziach, znajdujących się pod liśćmi.
Do słabych stron pakowania plików do bloku należą:

W wypadku, gdy ogon pliku urośnie na tyle, aby zająć cały węzeł, zostanie on usunięty z węzła
sformatowanego, a następnie przeniesiony do węzła niesformatowanego. Należy zaznaczyć, że plik
mniejszy od 4 KB sam w sobie stanowi ogon.

Jeżeli ogon będzie mniejszy od całego węzła, to może on zostać podzielony pomiędzy dwa węzły,
co implikuje konieczność przeprowadzenia dwóch operacji dyskowych.

Na skutek separacji ogona od reszty pliku zmniejszeniu może ulec efektywność czytania danego pliku.

Na skutek dodania pojedynczego bajtu do ogona lub pliku, który nie znajduje się na końcu węzła możliwe
staje się przeniesienie w pamięci połowy wielkości węzła. Sytuacja tego typu może się zdarzyć w momencie
niebuforowanego i niestandardowego zapisu do pliku. Standardowe biblioteczne funkcje I-O zapewniają
dostęp buforowany do danych.
Zalety upakowania większej ilości plików w jednym bloku:

Brak jest znaczących różnic w szybkości działania dla bloków różnych rozmiarów.

Operacje wejścia / wyjścia są wykorzystywane z większą efektywnością.
Drzewa zapisane są w blokach, na które podzielony jest dysk. Każdy z bloków należących
do określonego drzewa zaczyna się od pola Block_head. Struktura drzewa zrównoważonego
systemu ReiserFS składa się dokładnie trzech rodzajów węzłów. Są to: formatted nodes - liście,
internal nodes - węzły wewnętrzne oraz unformatted nodes, czyli podliście - węzły występująca
bezpośrednio pod liśćmi. Internal nodes spełniają funkcję wewnętrznych węzłów B-drzewa.
Formatted nodes to liście B-drzewa. Składają się one z items. Wszystkie items zawierają
dodatkowe klucze przydatne do wyszukiwań i które mogą stanowić jeden z rodzajów opisanych
poniżej:

stat data - item zawierający dodatkowe dane dla katalogu lub pliku, które znajdują się zawsze na ich
początku,

direktory item - zawiera on klucz pierwszego directory entry oraz liczbę directory entries,

direct item - zawarte w nim są ogony plików,

indirect item - zawarte w nim są wskaźniki na unformatted nodes, które zawierają dane pliku, lecz poza jego
ogonem.
Aby wstawić nowy węzeł do drzewa należy znaleźć wśród wolnych bloków odpowiednią bitmapę,
począwszy od lewego sąsiada węzła ostatnio używanego, poruszając się w tym kierunku,
co ostatnio. Metoda ta jest o 10% szybsza od metody polegającej na zaczynaniu od aktualnego
węzła, nawet biorąc pod uwagę fakt, że zachodzi ryzyko sięgnięcia po ojca, jeśli okaże się, że nie
znaleziono lewego sąsiada. Testy pokazały, że opisywana metoda jest znacznie lepsza
od poniższych alternatyw:

Wyszukania w bitmapie pierwszego wolnego bloku.

Wzięcia pierwszego węzła znajdującego się za ostatnio przydzielonym oraz poruszanie się w kierunku
tym samym, co ostatnio. Działanie takie daje 3% zysku w przypadku zapisu, lecz 10 - 20% wolniejszy
odczyt.

Rozpoczynania od lewego sąsiada oraz poruszania się w kierunku wziętym od prawego sąsiada.
Porządek, który użyty jest w drzewie ma niezwykle duże znaczenie na wydajność naszego
systemu. Wpływa on w dużym stopniu na lokalność czytania danych oraz na efektywność
w upakowaniu ogonów. Struktura każdego klucza składa się z następujących pól: offset,
uniqueness, locality_id oraz object_id. Pole locality_id wskazuje standardowo na object_id
nadrzędnego katalogu, zapewniając przy tym lokalność. Każdy z katalogów i plików posiada
unikatowy object_id.
Priorytety w optymalizacji zbalansowania drzewa:

minimalizacja liczby węzłów, które poddają się operacji zbalansowania,

minimalizacja liczby użytych węzłów,

jeżeli niezbędne jest przeniesienie do innego formatted node, to priorytetem staje się optymalizacja danych
przenoszonych, ponieważ istnieje dużą szansa na to, że następne operacje dyskowe będą miały miejsce
w tym samym rejonie, robione jest więc miejsce na operacje dyskowe,

minimalizacja liczby węzłów uncached, które poddają się operacji balansowania.
Reiser 4
Nowa wersja systemu, która jest w jeszcze w fazie projektowania będzie zawierać dużą ilość
udoskonaleń, takich jak:

większe bezpieczeństwo,

lepsza wydajność,

system transakcji rozszerzający jeszcze bardziej pojęcie journalingu,

zmiana architektury systemu w kierunku większej obiektowości,

możliwość dołączenia własnych plug - inów, dzięki którym każdy użytkownik będzie w stanie stworzyć,
na przykład abstrakcję katalogu,

wprowadzenie struktury drzew tańczących, która polega na tym, że w trakcie działania systemu dana
struktura drzewa jest zmieniana dopiero przy operacjach commit lub flush, natomiast nie dla każdej
dyskowej operacji,

użycie repackera, czyli specjalnego programu pakującego ogony, dzięki czemu można zaoszczędzić jeszcze
więcej miejsca.
FAT
Skrót FAT pochodzi od File Allocation Table. System plików FAT jest oparty na tablicy, która
opisuje, w którym klastru dysku twardego lub magnetycznej dyskietki system operacyjny powinien
szukać zapisanego na nim pliku. Tablica ta tworzona jest w czasie formatowania danego nośnika
danych. Pierwsze z dwóch rekordów tej tablicy to dane opisujące FAT oraz jego kopię. Kolejne
rekordy odpowiadają za sprecyzowanie położenia danych plików. Każdy z rekordów struktury
odpowiada za prawidłowe opisanie pojedynczego klastra z danymi. W przypadku, gdy dany plik
przekracza rozmiar pojedynczej jednostki alokacji, w polu FAT znajdzie się adres kolejnego
zajętego klastra. Dane, które dotyczą zbiorów umieszczonych w poszczególnych katalogach
są przechowywane w katalogu głównym. Każde pole, które opisuje plik, posiada rozmiar 32 bajtów
i możliwe jest umieszczenie w nim takich informacji jak nazwa pliku, jego atrybuty, rozmiar, data
ostatniej modyfikacji oraz pierwszy klaster. W miarę postępu technologicznego FAT wielokrotnie
unowocześniano, aby osiągnąć możliwie najbardziej efektywną pracę z dyskami o dużych
pojemnościach oraz z bardzo szybkimi komputerami osobistymi.
FAT32
FAT32 jest odmianą systemu plików FAT, z którego korzystają systemy operacyjne takie jak:
Windows 95, Windows 98, a nawet nowsze systemy jak Windows XP. FAT32 umożliwia
prawidłowe rozpoznanie 2 do potęgi 32, czyli 4 294 967 296 adresów jednostek alokacji,
co umożliwia obsługę dysków twardych o pojemności nawet 2 terabajtów. Podczas zapisu plików
na dysk często mamy do czynienia ze stratami pojemności. Dzieje się tak w przypadku zapisu pliku
o pojemności 6kB na dysku o klastrze 32kB, jak w systemie FAT. Strata miejsca wynosi więc
aż 26kB. Na pojedynczy klaster w systemie FAT32 przypada dokładnie 8 sektorów, których łączna
pojemność wynosi 4kB, dla dysków 8GB. Dzięki takiemu rozwiązaniu straty pojemności nie są
duże, przy zapisie pliku 6kB strata pojemności wynosi zaledwie 2kB. Stosując system FAT32
w przypadku dysków o większych pojemnościach nie zachodzi konieczność dzielenia dysku
na mniejsze partycje, jak miało to miejsce w przypadku systemu FAT. Poniższa tabelka
przedstawia zależność wielkości klastra od pojemności dysku używającego systemu plików
FAT32.
Pojemność dysku [GB] Wielkość klastra [KB]
0,5 - 1
4
1-2
4
2-4
4
4-8
4
8-16
8
16-32
16
>32
32
HPFS
Skrót HPFS oznacza High Performance File System i jest systemem plików systemu operacyjnego
OS/2. HPFS zaprojektowały pod koniec lat osiemdziesiątych ubiegłego wieku przez firmy Microsoft
oraz
IBM,
na potrzeby
operacyjnego.
System
powstającego
OS/2
w ówczesnych
początkowo
był tworzony
czasach
przez
nowoczesnego
obie
firmy,
systemu
na początku
lat dziewięćdziesiątych firma Microsoft zdecydowała się porzucić prace nad tym projektem i od
tej pory rozwijaniem systemu zajmuje się IBM. W przeciwieństwie do systemu plików FAT, który
w roku 1977 wymyślono do obsługi dyskietek, system plików HPFS od samego początku
był tworzony z myślą o efektywnej obsłudze dużych dysków twardych. Teoretyczna graniczna
pojemność woluminu obsługiwana przez ten system wynosiła na początku 2199 GB, podzielonych
na 2^32 sektorów 512 bajtowych. Graniczną pojemność w nowszych wersjach tego systemu
jeszcze zwiększono. System ten dzieli przestrzeń dysku twardego na pasma zajmujące po 8
MB, co odpowiada 16384 sektorom 512 bajtowym. Pasma te zawierają bitową mapę zajętości
poszczególnych sektorów w paśmie - 32 sektory. Za sprawą naprzemiennego ułożenia map w
kolejnych pasmach są tworzone odcinki o rozmiarach 16 MB, które rozdziela się mapami dwóch
kolejnych pasm. Jedno z pasm, które położone jest najbliżej geometrycznego środka dysku jest
zarezerwowane na przechowywanie informacji o katalogach, w tym także o katalogu głównym.
Jeżeli pasmo to ulegnie wypełnieniu, nowe katalogi mogą być zakładane w innych miejscach dysku
twardego. Kluczowa dla systemu HPFS struktura danych to Fnode, czyli rekord położony możliwie
jak najbliżej samego pliku, który opisuje jego położenie oraz parametry. Jeżeli nie wystarcza on do
pełnego opisu położenia lub atrybutów rozszerzonych, na dysku są tworzone dodatkowe
pomocnicze struktury. Zawartość poszczególnych katalogów jest odpowiednio posortowana oraz
zapisana w blokach o wielkości 2kB każdy. Tworzą one strukturę sterty, czyli odpowiednio
posortowanego, zrównoważonego drzewa binarnego. Zapewnia to znaczne przyspieszenie
wyszukiwania oraz dostępu do pliku, natomiast spowalnia kasowanie, tworzenie oraz zmianę
nazwy poszczególnych plików, ponieważ wymuszają one niekiedy reorganizację całej struktury
danego katalogu. HPFS pozwala na operowanie długimi nazwami plików, sięgających nawet
256 znaków. Mamy również informację o datach utworzenia danego pliku, ostatniej jego
modyfikacji oraz o ostatnim dostępie do niego. Posiadamy wgląd w prawa dostępu oraz atrybuty
rozszerzone, które umożliwiają przechowanie dowolnej wykorzystywanej przez system plików
informacji, czy też aplikacji. Przykładem takich atrybutów rozszerzonych jest ikona oraz położenie
danego okna na pulpicie. Gromadzone są również informacje statystyczne, które pozwalają
na optymalizację pracy pamięci podręcznej dysku twardego. Przeciwnie do FAT, system plików
HPFS definiuje nie tylko położenie danych na dysku twardym, ale również sposób korzystania
z niego. Zawiera w sobie optymalizację wykorzystania pamięci podręcznej, mechanizmów
minimalizacji fragmentacji plików i tym podobne. Zdefiniowano również liczne mechanizmy, które
chronią przed uszkodzeniami, takie jak: wbudowany CHKDSK, weryfikacja zapisu, automatyczna
kontrola struktury plików na dysku w wypadku wykrycia błędnego zakończenia ostatniej sesji pracy
systemu operacyjnego oraz hotfix, czyli przeniesienie w czasie pracy systemu zawartości sektorów
uszkodzonych do obszaru rezerwowego. Dzięki specjalnym identyfikatorom kluczowych struktur
wewnętrznych danych oraz dzięki dublowaniu wybranych informacji w różnych katalogach, takich
jak początkowe fragmenty nazw plików umieszczonych w katalogu oraz Fnode, możemy
automatycznie odtworzyć strukturę dysku nawet w wypadku ciężkich awarii.
Download