System plików NTFS

Nowy system operacyjny Windows NT ma wiele wspólnych elementów z poprzednimi wersjami.

Nowy system operacyjny Windows NT ma wiele wspólnych elementów z poprzednimi wersjami. Dotyczy to możliwości pracy wielowątkowej, wykorzystania w pełni mocy obliczeniowej komputerów wieloprocesorowych, ochrony zasobów itp. Jednakże nie wszystkie jego cechy dają się wykorzystać w pracy pojedynczego komputera. Docenić je można dopiero w pracy grupowej komputerów połączonych w sieć lokalną. Inne zaś cechy wymagają podjęcia trudnych do odwołania decyzji. Do takich należy np. decyzja o korzystaniu z zaawansowanego systemu plików NTFS (NT File System), oferującego znacznie większe możliwości ochrony danych niż daje popularny system DOS-owy, z zapisem informacji o alokacji plików w tablicach FAT. Dziś właśnie mówić będziemy o systemach plików.

System plików FAT

Historia DOS-owego systemu plików FAT (File Allocation Table - tablica alokacji plików) pochodzi z 1981 r., gdy pojawił się pierwszy komputer osobisty IBM PC. Wprawdzie w owych czasach system ten był rewolucyjny i z nadmiarem spełniał oczekiwania użytkowników komputerów PC bez dysku stałego, ale dość szybko się zestarzał. Nie dopuszczał bowiem większych pojedynczych partycji dysków stałych niż 32 MB. W jednej z kolejnych wersji systemu DOS usunięto niedogodność wprowadzając tzw. 16-bitowy zapis tablicy partycji. Umożliwiło to znaczne zwiększenie rozmiaru partycji dysków stałych.

Informacja o rozmieszczeniu plików na dysku zapisywana jest w tablicy FAT w sposób pokazany na rys. 1. Każdy sektor na małym dysku (lub tzw. klaster złożony z 4 lub więcej sektorów na większych dyskach) ma odpowiadającą mu 12- lub 16-bitową pozycję w tablicy alokacji. Zapisanie pliku na dysku sprowadza się więc do zapisania w katalogu jego nazwy i numeru klastera, w którym się rozpoczyna. W tablicy alokacji pod pozycją odpowiadającą temu klasterowi zapisuje się numer kolejnego klastera, zajmowanego przez plik. W pokazanym przykładzie plik1.txt zajmuje klastery 1, 2 i 3. W pozycji 1 tablicy alokacji zapisuje się 2 - wskazującą, że dalsza część pliku znajduje się w klasterze 2. W pozycji 2 tablicy alokacji zapisuje się 3 - wskazującą, że dalsza część pliku znajduje się w klasterze 3. Zaś w pozycji 3 zapisuje się FFF (lub FFFF, zależnie od rozmiaru pozycji, 12 czy 16 bitów), oznaczające końcowy klaster pliku. Jak widać z rysunku plik1.txt zajmuje trzy kolejne klastery; plik3.txt zajmuje jedynie klaster 6; plik2.txt jest posegmentowany, gdyż zajmuje nie sąsiadujące klastery 4, 5 i 7.

Tablica alokacji plików FAT zawsze znajduje się na początku dysku. Jeśli jest to dysk startowy systemu operacyjnego DOS, to tablice FAT umieszcza się po obszarze startowym systemu - (rys. 2). Katalog główny (root) znajduje się w ustalonej pozycji na dysku i ma określony rozmiar. Ma on 32-bajtowe informacje o każdym pliku (lub katalogu) zawierające: nazwę pliku (8 znaków nazwy plus trzy znaki rozszerzenia), bajt atrybutów pliku, czas modyfikacji (2 bajty), datę modyfikacji (2 bajty) oraz informację o rozmiarze pliku (4 bajty).

Zasadniczą zaletą systemu FAT jest jego prostota. Wymaga on jednak przeszukiwania tablicy partycji przed każdym dostępem do dysku, co zwiększa wydatnie czas dostępu na dużych dyskach. Podobnie jak duża liczba plików w katalogu. Wadą jest także niezbyt oszczędne gospodarowanie miejscem na dysku: plik o długości kilku bajtów zajmuje cały klaster (2 kB; na dyskach większych niż 128 MB jest to 4 kB; na dyskach ponad 256 MB - 8 kB itd.).

System plików HPFS

W roku 1990 wraz z wprowadzeniem OS/2 1.5 pojawił się nowy system plików High Performance File System (wysokowydajny system plików) HPFS, przeznaczony do obsługi dużych dysków w komputerach 16-bitowych. Wkrótce w sieciowym systemie operacyjnym Microsoft LAN Manager wprowadzono system HPFS386, korzystający z 32-bitowych możliwości procesorów 386. HPFS jest to tzw. instalowalny system plików, czyli program obsługi dysków, z którego mogą korzystać różne systemy operacyjne.

W HPFS możliwe jest korzystanie z nazw plików zawierających do 255 znaków, co zdecydowanie ułatwia ich kontekstowe wyszukiwanie. W systemie FAT dyski organizowane są w partycje, na których można zakładać dyski logiczne. W HPFS organizuje się dyski w formie wolumenów (volume). Gdy system HPFS formatuje wolumen, rezerwuje pierwsze 17 sektorów na bloki: Startowy, Specjalny i Zapasowy (Boot Block, Super Block i Spare Block). Pośrodku każdego ciągłego obszaru 16 MB system HPFS rezerwuje także 2 mapy bitowe 2 kB, jedną na końcu pierwszego obszaru 8 MB, drugą na początku następnego obszaru 8 MB. Każdy bit w mapach odpowiada jednemu sektorowi 8 MB obszaru dysku. Jeżeli sektor jest zajęty, odpowiadający mu bit ma wartość 1, jeśli wolny - wartość 0.

Taka organizacja pozwala na zapisywanie plików do 16 MB w jednym ciągłym obszarze dyskowym oraz na bardzo oszczędne wykorzystanie przestrzeni na dysku. Nawet bardzo mały plik zajmie nie więcej niż 1 sektor, czyli 512 bajtów. Instalowany system plików HPFS dąży do takiego ułożenia plików na dysku, aby nie były one posegmentowane.

Kolejną zaletą systemu plików HPFS jest korzystanie z B- drzew dla organizacji zapisu danych na dysku. B-drzewo jest to struktura logiczna składająca się z pnia i wielu węzłów, zorganizowanych tak, aby można było szybko przejrzeć ich zawartość. Pień zawiera niewielką liczbę informacji administracyjnych, mapę reszty struktury oraz czasami niewielką liczbę danych. Większość danych zawierają węzły drzewa. Na wielkich dyskach, zawierających dużo plików, znajdowanie pliku przez przeszukiwanie B-drzewa jest dużo szybsze niż przeszukiwanie struktury liniowej FAT.

Aby przyspieszyć operacje dyskowe stosuje się buforowanie danych (disk cache) i opóźniony zapis na dysk. Buforowanie polega na czytaniu z dysku do pamięci całych ścieżek. Ponieważ pliki zapisywane są w ciągłych obszarach dyskowych, to szansa że właśnie ta część pliku będzie potrzebna jest duża. Opóźniony zapis na dysk (lazy writing) polega na zapisywaniu danych do bufora. Na dysk zapisywane są one wtedy, gdy system plików nie ma żadnych innych, pilnych zadań do wykonania. Pozwala to także na takie posortowanie danych w pamięci, aby zminimalizować ruchy głowicy dyskowej. Oczywiście, istnieje wtedy ryzyko, że plik będzie zapisywany na uszkodzonym sektorze dyskowym. Aplikacja nie będzie mogła już zadziałać, gdyż może już nie funkcjonować. Dlatego w systemie stosuje się tzw. naprawy na gorąco (hotfix) polegające na wykorzystaniu pewnego zbioru zapasowych sektorów, zastępujących sektory uszkodzone. W razie wystąpienia znacznej liczby uszkodzonych sektorów, system HPFS powiadamia administratora o konieczności przeciwdziałania. System wykonuje samodzielnie testowanie powierzchni dysku przy każdym starcie systemu operacyjnego, wywołując program CHKDSK, sprawdzający stan powierzchni dysku.

Poważną wadą systemu plików HPFS jest możliwość uszkodzenia sektorów startowych, co spowoduje kompletne zablokowanie dostępu do całego wolumenu.

Windows NT może korzystać z istniejącego na dysku systemu plików HPFS (z OS/2 lub Microsoft LAN Managera) ale ze względu na inną realizację systemu, nie obsługuje on naprawy na gorąco (hotfix).

System plików NTFS

System plików zastosowany w Windows NT korzysta z najlepszych cech systemu HPFS. Wszystko co znajduje się na dysku jest częścią jakiegoś pliku; każdy sektor należy do jakiegoś pliku. Nawet dane o organizacji systemu plików należą do pliku.

Każdy zbiór na dysku ma swój zapis (rekord) w pliku zwanym Master File Table (MFT). Pierwsze 16 rekordów tej tablicy jest zarezerwowanych dla opisu struktury samej tablicy MFT. Zawiera on m.in. opis tablicy, kopię opisu oraz tzw. log file. Rekordy 17 i dalsze przeznaczone są do zapisu informacji o plikach i katalogach na dysku.

Rekord w MFT, oprócz standardowych informacji, związanych ze strukturą B-drzewa plików, zawiera także nazwę pliku (do 255 znaków), informacje o prawach dostępu oraz ma zarezerwowane na dysku tyle miejsca (512 kB), że jest w stanie bezpośrednio zawierać małe pliki lub katalogi. Jeżeli plik jest duży, to rekord MFT zawiera wskaźnik do jego dalszej części. Tak więc jeśli w wyniku poszukiwania struktury B- drzewa plików NTFS dotarliśmy do rekordu NTFS, to mamy już bezpośredni dostęp do pliku, nie zaś do samego jego adresu na dysku. Z tego powodu system NTFS jest bardzo szybki. W podobny sposób w rekordach MFT przechowywane są informacje o katalogach, jedynie zamiast danych zawierają indeks do plików katalogu.

Zapis na dysk

zorganizowany jest w sposób transakcyjny: wszystko albo nic (zwany czasem double commit). Jeżeli więc jakiś plik został zmodyfikowany przez użytkownika, to we wspomnianym już log file zapisywana jest informacja undo i redo. Redd umożliwia systemowi NTFS zakończenie transakcji zapisu pliku na dysk (łącznie z uaktualnieniem informacji w MFT) i jest to możliwe do wykonania nawet po awarii zasilania. Undo służy do przywrócenia stanu przed operacją.

Jeżeli więc system komputerowy padnie, to po starcie systemu Windows NT w pierwszym przebiegu analizuje stan zapisu plików i wykrywa wszelkie niezgodności. W drugim przebiegu korzysta z informacji typu redo aby przywrócić stan tych plików, których modyfikacja przed awarią da się odzyskać. W trzecim przebiegu (undo) następuje przywrócenie stanu tych plików, o których wiadomo jaki był ich stan przed awarią, nie są zaś znane wyniki modyfikowania.

W celu uzyskania pełnego bezpieczeństwa systemu plików, informacje do log file powinny być zapisywane bez buforowania w pamięci. Zwalnia to jednak wszystkie operacje dyskowe. Dlatego w NTFS także przy tej operacji zastosowano opóźniony zapis na dysk (lazy commit). Zapewnienie integralności systemu plików wymaga dodatkowego sprawdzania integralności log file. Jeżeli nie ma pewności, że ostatnia transakcja została dokończona, system wycofuje ją. Tak więc stosowanie opóźnionego zapisu do log file może spowodować zagubienie nie więcej niż jednej operacji zapisu plików na dysk, za to znacznie zwiększa szybkość wszystkich operacji dyskowych.

Bezpieczeństwo systemu NTFS

Każdy rekord w MFT zawiera listę Access Control List (ACL), podającą informacje o prawach dostępu do pliku dla użytkowników indywidualnych lub ich grup. Przy próbie korzystania z pliku system NTFS sprawdza, na tej liście, czy użytkownik ma odpowiednie prawo dostępu. Problemy bezpieczeństwa będę omawiać bardziej szczegółowo w kolejnych odcinkach cyklu o Windows NT.

Nazwy plików

System NTFS pozwala na korzystanie z nazw plików o długości do 255 znaków. Aby ułatwić koegzystencję systemów DOS-wych i Windows NT, wszystkie te nazwy są automatycznie skracane do standardowej postaci 8 znaków nazwy i 3 znaków rozszerzenia dla DOS-owych klientów Windows NT.


TOP 200