NTFS     NTFSologia, cz. II - Historia systemu plików NTFS i wprowadzenie do jego funkcjonalności

NTFSologia, cz. I - Historia systemu plików NTFS i wprowadzenie do jego funkcjonalności Udostępnij na: Facebook

Autor: Grzegorz Niemirowski

Opublikowano: 7 kwietnia 2005 | Zaktualizowano: 15 czerwca 2007

Zawartość strony
Wstęp  Wstęp
Historia  Historia
Obsługa dużych partycji i plików  Obsługa dużych partycji i plików
Nazwy plików  Nazwy plików
Uprawnienia do dostępu do danych  Uprawnienia do dostępu do danych
Kompresja  Kompresja
Szyfrowanie  Szyfrowanie
Punkty ponownej analizy (reparse points)  Punkty ponownej analizy (reparse points)
Twarde linki  Twarde linki
Strumienie danych (alternate data streams)  Strumienie danych (alternate data streams)
Pliki rozrzedzone (sparse files)  Pliki rozrzedzone (sparse files)
Śledzenie łączy rozproszonych (Distributed Link-Tracking)  Śledzenie łączy rozproszonych (Distributed Link-Tracking)
Przydziały (Quota)  Przydziały (Quota)
Śledzenie zmian (Journaling )  Śledzenie zmian (Journaling )
Ochrona przed uszkodzeniem systemu plików  Ochrona przed uszkodzeniem systemu plików
Przeczytaj pozostałe części tego artykułu  Przeczytaj pozostałe części tego artykułu

Wstęp

Z NTFSem spotkał się prawie każdy, ale kto tak naprawdę zna jego możliwości? Artykuł ten rozpoczyna cykl poświęcony systemowi plików NTFS, który chociaż powszechnie używany, pozostaje często nieznany. Warto więc przyjrzeć mu się z bliska. W tym odcinku zostanie przedstawiona historia NTFS-a oraz wprowadzenie do jego funkcji.

 Do początku strony Do początku strony

Historia

Pod koniec lat osiemdziesiątych powstał Windows NT. Wraz z jego rozwojem okazało się, że wykorzystywane przez niego systemy plików takie jak FAT czy HPFS miały zbyt duże ograniczenia. Microsoft był zmuszony na początku lat dziewięćdziesiątych opracować nowy system plików dla Windows NT, aby móc z nim wejść na rynek zastosowań biznesowych i wymagający bezpieczeństwa oraz integralności przechowywanych danych, a także zaawansowanych funkcji organizacji i dostępu do danych. W tym celu wykorzystano doświadczenia z pracy nad HPFS i OS/2. Nowy system plików był stosowany wewnątrz firmy podczas normalnej pracy, dzięki czemu jego twórcy mogli go od razu dobrze przetestować. Tak powstał NTFS.

Wprowadzono w nim m.in. obsługę dużych partycji, macierzy dyskowych, uprawnień do plików, zwiększono odporność na błędy, zmieniono sposób zapisu nazw plików z 8-bitowego na 16-bitowy Unicode. Pierwsza wersja (1.0) ujrzała światło dzienne wraz z Windows NT 3.1. Systemy Windows NT 3.51 i 4.0 obsługują NTFS 1.2 (niektóre źródła podają numer 1.1, wersja ta jest też znana jako NTFS 4.0 od numeru wersji Windows). Wraz z Windows 2000 pojawił się NTFS 5.0 (nazywany też 3.0), dodano m.in. możliwość szyfrowania plików, przydziały przestrzeni dyskowej (quota) oraz ewentualność montowania woluminów do katalogów. Windows XP i 2003 używają NTFS 5.1 (3.1), więc różnice w stosunku do 5.0 są niewielkie.

Przesunięto też niektóre struktury danych na szybsze miejsca na dysku, co jak podaje Resource Kit, zwiększa wydajność o 5 – 8 procent. Dodano nowe i ulepszono istniejące narzędzia dyskowe, m.in. do konwersji z FAT. Zmiany, choć niewielkie, sprawiają jednak kłopoty starszym narzędziom dyskowym. Ponadto Windows XP przy pierwszym montowaniu woluminu sformatowanego jako NTFS 5.0 automatycznie konwertuje go do 5.1, co może spowodować problemy z odczytem dysku pod Win2k. Obsługę NTFS 5.1 w Windows 2000 wprowadzono w SP1, a w NT 4 w SP4.

 Do początku strony Do początku strony

Obsługa dużych partycji i plików

Teoretycznie partycja NTFS może mieć rozmiar 264 – 1 klastrów. Windows potrafi jednak obsłużyć tylko 232 – 1 klastrów; przy klastrach wielkości64 kB daje to 256 terabajtów minus 64 kB. Przy domyślnym klastrze o rozmiarze 4 kB maksymalna wielkość partycji wyniesie 16 terabajtów minus 4 kB. Należy jednak zauważyć, że tabela partycji w MBR umożliwi zdefiniowanie partycji o rozmiarze do 2 terabajtów co ogranicza rozmiar partycji podstawowych do tej właśnie wielkości. Limit 2 TB można obejść stosując dyski dynamiczne, które korzystają ze specjalnej bazy danych zamiast MBR. Ograniczenie to nie występuje też w systemach z procesorami Itanium, które korzystają z tabeli partycji GUID (GPT).

NTFS obsługuje 4,294,967,295 (232 – 1) plików w woluminie. Teoretycznie pojedynczy plik może mieć wielkość 16 eksabajtów minus 1 kB (264 bajtów minus 1 kB), czyli tyle co maksymalna wielkość partycji. Tutaj także pojawiają się ograniczenia systemu Windows, który może obsłużyć pliki o maksymalnym rozmiarze 16 terabajtów minus 64 kB (244 bajtów minus 64 kB).

Domyślna wielkość klastra zależy od rozmiaru partycji. W Windows NT 3.1 mogła osiągać wartość maksymalną, czyli 64 kB, jednak ze względu na to, że kompresja jest obsługiwana tylko gdy klastry nie przekraczają 4 kB, w Windows NT 3.5 i następnych domyślny rozmiar klastra dla formatowanych woluminów nie przekracza 4 kB.

 Do początku strony Do początku strony

Nazwy plików

Nazwy plików, podobnie jak w FAT32 mogą mieć długość 255 znaków. Znaki występujące w ścieżce nie są jednak zapisywane jako 8-bitowe znaki ASCII, ale zakodowane w standardzie Unicode do postaci 16-bitowej, więc dzięki temu użytkownicy mogą bez przeszkód używać swoich znaków narodowych.

 Do początku strony Do początku strony

Uprawnienia do dostępu do danych

W NTFS-ie wprowadzono to, czego bardzo brakowało w systemie plików FAT, a było od dawna dostępne w systemach uniksowych – uprawnienia do plików i katalogów. Nie są to jednak proste zestawy uprawnień do odczytu, zapisu i wykonania dla użytkownika, grupy użytkowników i pozostałych użytkowników. W NTFS 4.0 było 6 uprawnień, w NTFS 5.1 jest ich już 13, co pozwala na bardzo dokładne określanie, kto może wykonać jakie akcje na pliku. Nie trzeba ustawiać każdego prawa oddzielnie, ponieważ istnieją predefiniowane zestawy uprawnień. Dzięki dziedziczeniu wprowadzonemu w NTFS 5.0 można wygodnie zmieniać prawa wielu plików i katalogów jednocześnie, ale z zachowaniem wyjątków. Uprawnienia można nadawać dowolnym użytkownikom i grupom, a właścicielem pliku może być użytkownik lub grupa.

 Do początku strony Do początku strony

Kompresja

Kompresja jest natywnie obsługiwana przez NTFS i Windows NT, dzięki czemu nie trzeba korzystać z żadnych zewnętrznych programów. Posługiwanie się skompresowanymi plikami wygląda tak samo jak praca ze zwykłymi plikami, jedyną odczuwalną różnicą może być wolniejszy dostęp. Skompresowanie pliku czy katalogu jest bardzo proste i wymaga zaznaczenia atrybutu kompresji w okienku właściwości pliku/katalogu. Pliki skompresowane nie mogą być zaszyfrowane, ponadto kompresja nie jest dostępna w Windows XP Home Edition.

 Do początku strony Do początku strony

Szyfrowanie

Także obsługa szyfrowania została wbudowana w NTFS. Dzięki niej osoba mająca fizyczny dostęp do dysku, a nie posiadająca odpowiedniego klucza prywatnego nie może odczytać z niego danych. Szyfrowaniu podlegają pojedyncze pliki, a zaznaczenie szyfrowania dla katalogu oznacza, że szyfrowane będą nowe pliki tworzone w tym katalogu. Plików z atrybutami systemowy i tylko do odczytu nie można szyfrować.

 Do początku strony Do początku strony

Punkty ponownej analizy (reparse points)

Punkty ponownej analizy pozwalają aplikacji na dodanie do pliku lub katalogu specjalnego bloku danych oraz powiązaniu go z określoną aplikacją. Gdy następuje odwołanie do danego pliku/katalogu na podstawie znalezionych danych i dzięki powiązanej aplikacji zachodzi zmiana (ponowna analiza) odwołania. Co się stanie w wyniku tej analizy, to zależy tylko od samej aplikacji. Ta funkcja NTFS-a daje duże możliwości, bo tworząc nowy rodzaj punktu ponownej analizy oraz sterownik dla niego, można dodawać własne funkcje do NTFS-a. Microsoft wbudował w Windows obsługę następujących rodzajów punktów ponownej analizy:

  • Linki symboliczne

    Linki symboliczne znane z systemów uniksowych mogą być dzięki NTFS-owi używane także pod Windows. Pozwalają one tworzyć skróty specjalnego rodzaju do plików (tzw. symlinki), nie są one jednak tym samym co pliki lnk. Pliki lnk są zwykłymi plikami otwieranymi i interpretowanymi przez powłokę systemu (explorer.exe). Symlinki istnieją na poziomie systemu plików, a z punktu widzenia użytkownika symlink nie różni się od elementu docelowego. Można go np. wyświetlić poleceniem type. Symlinki oraz opisane dalej punkty połączenia, bardzo często okazują się rozwiązaniem znacznie lepszym niż skróty lnk, a czasem są wręcz nie do zastąpienia. Mogą być bardzo pomocne przy organizacji rozmieszczenia danych na dysku.

  • Punkty połączenia (junction points)

    Działają jak linki symboliczne, które są skrótami do katalogów, a można do nich wejść poleceniem cd. W ich przypadku widać dobrze różnicę w stosunku do plików lnk. Plik lnk przenosi nas do innego miejsca na dysku. Gdy klikniemy przycisk „W górę” przejdziemy do katalogu nadrzędnego względem katalogu wskazywanego przez skrót lnk. Wchodząc do punktu połączenia, to nie my przechodzimy do katalogu docelowego, ale potocznie mówiąc „on przychodzi do nas” – jego zawartość widoczna jest w punkcie połączenia. Jeśli więc klikniemy „W górę”, albo naciśniemy Backspace, znajdziemy się w katalogu, w którym byliśmy, zanim weszliśmy do punktu połączenia.

  • Punkty montowania woluminów

    Punkty montowania także znane są z systemów uniksowych, za pomocą których można zamontować wolumin w pustym katalogu. Wolumin może być zamontowany w wielu punktach: jako katalogi lub literki napędów. Można przykładowo zamontować stację dyskietek jako C:\Dyskietka a nie jako napęd A:; punkty montowania pozwalają obejść ograniczenie 26 liter woluminów. Podobnie jak linki symboliczne i punkty połączenia, są one przydatne przy porządkowaniu dostępu do danych.

  • Magazyn zdalny (Remote Storage)

    Jest to usługa pozwalająca tworzyć punkty ponownej analizy będące linkami do plików przechowywanych w urządzeniach archiwizacyjnych, takich jak np. napędy taśmowe. Przykładowo rzadko używane pliki mogą zostać przeniesione na urządzenie archiwizujące i usunięte z dysku. Aby nadal były widoczne i dostępne, tworzony jest link do nowej lokalizacji pliku.

 Do początku strony Do początku strony

Twarde linki

Twarde linki działają podobnie do symbolicznych, a różnią się tym, że nie różnicuje się skrótu i elementu docelowego, do którego ten skrót prowadzi, wszystkie one są równoważne. Plik istnieje dopóki wszystkie hardlinki nie zostaną skasowane. Hardlinki są po prostu nazwami pliku, bowiem każdy plik ma co najmniej jedną nazwę, tak więc przynajmniej jeden hardlink łączy nazwę ze zbiorem danych na dysku. Twardy link można zrobić tylko do pliku znajdującego się na tym samym woluminie.

 Do początku strony Do początku strony

Strumienie danych (alternate data streams)

NTFS wspiera wiele strumieni danych, które są atrybutami pliku i mogą przechowywać różne dane – są one czymś w rodzaju plików w pliku. Na pewno wielu użytkowników Windows 2000 i XP zauważyło, że we właściwościach dowolnego pliku można wpisać m.in. autora, tytuł, temat czy słowa kluczowe. Bardziej dociekliwi sprawdzili pewnie, że dane te nie są zapisywane w samym pliku ani w rejestrze. Windows umieszcza je właśnie w jednym ze strumieni pliku, gdzie można przechowywać dowolne dane, nawet całe duże pliki. Daje to wiele różnych możliwości, np. w jednym pliku może się znajdować kod źródłowy programu, backup kodu źródłowego, skompilowany kod wykonywalny oraz plik pomocy.

 Do początku strony Do początku strony

Pliki rozrzedzone (sparse files)

Pliki rozrzedzone są podobne do plików skompresowanych, ich wielkość może być bardzo duża, a równocześnie zabierać mało miejsca. Nie są one jednak kompresowane jakimś szczególnym algorytmem, a jedynie bloki zer nie są zapisywane na dysku. Zapisywana jest natomiast tylko informacja umożliwiająca ich odtworzenie przy odczycie pliku.

 Do początku strony Do początku strony

Funkcja Distributed Link-Tracking polega na odnajdywaniu elementów docelowych łączy w przypadku gdy zostały one przeniesione, chodzi tu mianowicie o skróty lnk oraz obiekty OLE jednego pliku osadzone w drugim. Gdy podczas uruchamiania skrótu lnk okaże się, że docelowego katalogu lub pliku nie ma, zostanie podjęta próba odnalezienia go i aktualizacji skrótu. Podobnie wygląda sytuacja w przypadku gdy np. w dokumencie Worda jest osadzony wykres z pliku Excela. Jeśli dokument Excela nie zostanie odnaleziony w lokalizacji wskazywanej przez łącze, także nastąpi próba odnalezienia pliku i aktualizacji łącza. Jak pewnie się niektórzy domyślają, takie poszukiwanie plików nie odbywa się na poziomie sterownika NTFS, lecz znacznie wyżej.

Odpowiedzialna za to jest usługa-klient zajmująca się odnajdywaniem łączy rozproszonych, wykorzystując w tym celu identyfikatory szukanych obiektów. Może ona odnajdywać pliki nie tylko w obrębie woluminu czy komputera, ale nawet domeny. W przypadku domeny usługa-klient korzysta z usługi-serwera Distributed Link Tracking Server uruchomionej na kontrolerze domeny.

 Do początku strony Do początku strony

Przydziały (Quota)

NTFS w Windows NT nie dawał możliwości kontrolowania ilości miejsca na dysku zajętej przez użytkowników. Można to było osiągnąć stosując oprogramowanie firm trzecich, jednak już wtedy w strukturze NTFS-a było przewidziane miejsce na quotę, którą wprowadzono w Windows 2000 wraz z NTFS 5. W Win2k danemu użytkownikowi przydziela się miejsce na danym woluminie. Nie ustala się więc np. maksymalnej wielkości katalogu tylko maksymalną sumę rozmiarów plików na danym woluminie. Przy zapisie na dysk sprawdzane jest miejsce wykorzystywane przez użytkownika. Jeśli limit zostaje przekroczony, to zależnie od ustawień, użytkownik może stracić możliwość dalszego zapisu na dysk i/lub może zostać zapisane zdarzenie w dzienniku zdarzeń. Oprócz górnego limitu objętości plików administrator może też określić próg, którego przekroczenie powoduje wygenerowanie ostrzeżenia o zbliżaniu się do granicy objętości plików. W przypadku plików skompresowanych liczony jest ich rozmiar po rozpakowaniu, a w pomocy Windows XP znajduje się informacja, że w przypadku folderów skompresowanych brana pod uwagę jest ich wielkość na dysku. Nie chodzi jednak tu o foldery z włączonym atrybutem kompresji, a o pliki ZIP, których obsługa została wbudowana w XP i są one nazywane folderami skompresowanymi.

 Do początku strony Do początku strony

Śledzenie zmian (Journaling )

Journaling to mechanizm śledzenia zmian na dysku i zapisywania ich listy do pliku dziennika. Funkcja ta jest bardzo przydatna dla programów antywirusowych, wykonujących kopie zapasowe, menedżery replikacji czy usługi indeksujące. Programy te nie muszą już sprawdzać dat modyfikacji plików czy tworzyć ich hashy (skrótów kryptograficznych), co było wolne i wymagało dużo pamięci. Wpisy w dzienniku są dość małe (80 – 100 bajtów) i nie zawierają zmienionych danych, więc nie można na ich podstawie odtwarzać poprzedniej zawartości dysku.

 Do początku strony Do początku strony

Ochrona przed uszkodzeniem systemu plików

Jednym z wymogów stawianych systemom plików jest odporność na uszkodzenia. System FAT nie posiadał takiej odporności, a zawieszenie się systemu czy błąd aplikacji niejednokrotnie powodowały powstawanie błędów na dysku. W NTFS-ie wprowadzono m.in. mechanizm transakcji znany z systemów bazodanowych. Każda operacja na dysku jest traktowana jako transakcja składająca się z kilku czynności. Jeśli powiodą się wszystkie składniki transakcji jest ona uznawana za wykonaną poprawnie, natomiast w przeciwnym wypadku składniki transakcji są wycofywane i transakcja kończy się błędem. Podczas odzyskiwania danych wykonywane są ponownie wszystkie transakcje oznaczone jako udane. Następnie wyszukiwane są nieukończone transakcje, a podoperacje które wchodzą w ich skład są wycofywane – gwarantuje to, że na dysku nie znajdą się nieukończone transakcje. Nie uchroni to oczywiście przed utratą danych spowodowaną np. powstaniem uszkodzonych sektorów po zapisie do nich danych. NTFS posiada funkcję zwaną przemieszczaniem klastrów (Cluster Remapping), polegającą na automatycznym zaalokowaniu nowego, w momencie gdy podczas odczytu lub zapisu zostanie napotkany uszkodzony sektor.

 Do początku strony Do początku strony

Przeczytaj pozostałe części tego artykułu


Grzegorz Niemirowski Grzegorz Niemirowski (MVP, MCP)
Studiuje na kierunku Electrical and Computer Engineering na Politechnice Warszawskiej. Rozwija program OE PowerTool - dodatek ulepszający Outlook Express. Autor strony www.grzegorz.net, poświęconej Windows, programowaniu, Outlook Express i OE PowerTool. Bierze udział w konstruowaniu satelitów studenckich.
 Do początku strony Do początku strony

NTFS     NTFSologia, cz. II - Historia systemu plików NTFS i wprowadzenie do jego funkcjonalności