System plików NTFS

Bibliografia:

http://en.wikipedia.org/wiki/Comparison_of_file_systems

http://www.softpanorama.org/Internals/Filesystems/ntfs.shtml

http://www.windowsitpro.com/Articles/Index.cfm?ArticleID=15719 (od niedawna dostęp do tego źródła wymaga płatnej rejestracji)

http://www.windowsitpro.com/Articles/Index.cfm?ArticleID=15900 (od niedawna dostęp do tego źródła wymaga płatnej rejestracji)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcemain4/html/_wcefiles_Using_the_File_System.asp

http://www.ntfs.com

 

Opracował:

Tomasz Trabszys

 

System plików NTFS.. 1

1. Wstęp.. 1

2. Struktura woluminu NTFS.. 2

2.1 Boot Sector dysku NTFS.. 3

3. NTFS Master File Table (MFT). 3

3.1 Metadane w MFT.. 4

4. Atrybuty plików NTFS.. 6

4.1 Alternatywne potoki w NTFS.. 7

5. Prawa dostępu... 8

6. EPS (Encrypting File System). 9

7. Pliki Sparse w NTFS.. 12

7.1 Volume Change Tracking.. 13

8. Reparse points.. 14

8.1 Punkty montowania woluminów... 14

8.2 Montowanie katalogów... 14

8.3 HSM - Hierarchical Storage Management.. 15

8.4 SIS - Single Instance Storage.. 15

9. Distributed Link Tracking... 15

10. Kompresja plików NTFS.. 16

11. Quota.. 17

12. POSIX.. 18

13. Integralność danych i ich odzyskiwanie.. 18

14. Optymalizacja NTFS.. 19

 

 

1. Wstęp

 

·      Transakcyjny model wykonywania operacji.

·      Elegancki sposób przechowywania metadanych.

·      B-drzewa, bezpieczeństwo i stabilność, indeksowanie ogólne (general indexing).

·      Wydane wersje NTFS:

- NTFS v1.2 (4.0) na Windows NT

- NTFS v3.0 (5.0) na Windows 2000

- NTFS v4.0 (5.1) na Windows XP

 

Ograniczenia nałożone na pliki umieszczone w NTFS:

Maksymalna długość nazwy pliku

Dozwolone znaki w nazwie pliku

Maksymalna długość ścieżki

Maksymalny rozmiar pliku

Maksymalny rozmiar woluminu

255 bajtów

Każdy znak Unicode poza NUL

bez limitu

16TiB

256TiB

 

Każda operacja na systemie plików NTFS jest realizowana w postaci transakcji. Najpierw wszelkie zmiany w metadanych zostają zapisane do dziennika, potem dopiero nanoszone na dysk. Ułatwia to naprawianie błędów, odzyskiwanie systemu plików.

W NTFS, wszystkie informacje opisujące plik(nazwa pliku, data utworzenia, prawa dostępu, ... )  są przechowywane jako metadane. Ten abstrakcyjny, obiektowy model pozwala na łatwe rozszerzanie funkcjonalności NTFS.

Patrząc od strony implementacyjnej, B-drzewa użyte do przechowywania systemowych danych plików(folderów) pozwalają na szybki dostęp i redukcję defragmentacji na dysku. Dziennik systemu plików zapewnia jego integralność. Wpływa też znacząco na sprawdzoną stabilność NTFS, wyjątkowo ważną przy wymienianiu głównych wad poprzednich wersji systemów plików pod np. Windows NT.

Niektóre z funkcji NTFS opierają się na wyjątkowo ważnej jego cesze: ogólnym indeksowaniu po atrybutach. Pozwala ono na sortowanie plików(folderów) po atrybutach, a następnie na szybkie wyszukiwanie. Standardowo, zawartość katalogu jest przechowywana alfabetycznie w strukturze B+ drzewa(B-drzewa z połączeniami pomiędzy liśćmi.

2. Struktura woluminu NTFS

 

Rys. http://www.ntfs.com

 

2.1 Boot Sector dysku NTFS

Byte Offset

Field Length

Field Name

0x00

3 bytes

Jump Instruction

0x03

LONGLONG

OEM ID

0x0B

25 bytes

BPB

0x24

48 bytes

Extended BPB

0x54

426 bytes

Bootstrap Code

0x01FE

WORD

End of Sector Marker

Rys. http://www.ntfs.com

 

Boot Sektor znajduje się w pierwszym sektorze dysku, zawiera informacje potrzebne do odczytania systemu plików NFTS i jego rozruchu. Na rysunku przestawiona jest jego zawartość.

 

3. NTFS Master File Table (MFT)

 

Rys.: http://www.windowsitpro.com/Articles/Index.cfm?ArticleID=15719

 

Każdy plik na woluminie NTFS ma swojego reprezentanta jako rekord w specjalnym pliku Master File Table (MFT). Jego pierwsze 16 rekordów jest zarezerwowanych na szczególne informacje systemowe, pozostałe rekordy są przeznaczone dla reprezentantów plików.

Uproszczony schemat:

Rys.: http://www.ntfs.com

 

MFT alokuje stałą przestrzeń dyskową dla każdego reprezentanta pliku. Metadane plików są zapisywane w przestrzeni MFT, w przypadku małych plików, zostają one w całości wpisane w rekord MFT. W przypadku plików o dużej ilości metadanych, są one przechowywane w wielu rekordach MFT.

Rekord MFT dla małego pliku ( katalogu):

Rys.: http://www.ntfs.com

 

Takie rozwiązanie pozwala na dużo szybszy dostęp w porównaniu ze starszymi rozwiązaniami, np. FAT.

3.1 Metadane w MFT

Pierwsze 16 rekordów zawiera specjalne metadane systemu plików:

System plików

Nazwa Pliku

Rekord MFT

Funkcje

Master file table

$Mft

0

Zawiera podstawowe informacje nt. plików i folderów w systemie plików. W razie potrzeby alokuje dodatkowe rekordy MFT.

Master file table 2

$MftMirr

1

Kopia 4 pierwszych rekordów MFT. Pozwala odzyskać dane w przypadku wystąpienia błedów w sektorach zawierających MFT.

Log file

$LogFile

2

Zapamiętuje ostatnei transakcje wtykonane na systemie plików. Jego rozmiar może dochodzić nawet do 4 MB. Jest używany przez rodzinę SO Windows, po awarii systemu.

Volume

$Volume

3

Zawiera informacje nt. woluminu: nazwa, wersja.  

Attribute definitions

$AttrDef

4

Tablica atrybutów, ich nazw oraz opisu.

Root file name index

$

5

Katalog główny.

Cluster bitmap

$Bitmap

6

Przechowuje informacje o używanych klastrach.

Boot sector

$Boot

7

Boot sector

Bad cluster file

$BadClus

8

Zawiera informacje o niedziałających klastrach.

Security file

$Secure

9

Deskryptory praw dostępu.

Upcase table

$Upcase

10

Zamienia małe litery na wielkie, zgodnie z Unicode.

NTFS extension file

$Extend

11

Używana w wielu fukncjach NTFS, np.: quota’y, reparse point’y, object ID.

 

 

12–15

Zarezerwowane na przyszłość.

 

 

4. Atrybuty plików NTFS

 

 

·      Atrybutami są: nazwa pliku, informacja nt. praw dostępu, zawartość, …

·      Każdy atrybut jest identyfikowany kodem(numerem).

·      Atrybuty rezydentne i nierezydentne, listy atrybutów.

 

Dla systemu plików NTFS każdy z plików jest zbiorem atrybutów. Praktycznie wszystkie informacje związane z plikiem są jego atrybutami. Wszystkie atrybuty pliku, które mieszczą w pojedynczej instancji(rekordzie) MFT są nazywane atrybutami rezydentnymi. Atrybuty nierezydentne są alokowane w innych obszarach pamięci, jeśli miejsca w rekordzie macierzystym się wyczerpały. W przypadku gdy atrybutów jest tak dużo, że nawet wskaźników do ciągłych obszarów pamięci jest za dużo by pomieścić w jednym rekordzie, stosuje się wskaźnik do listy atrybutów.

Atrybuty plików zdefiniowane przez NTFS:

Typ atrybutu

Opis

Standard Information

Zawiera informacje takie jak czas ostatniego dostępu bądź licznik linkowań.

Attribute List

Lista wszystkich atrybutów, ktore nie mieszczą się w MFT.

File Name

Nazwa pliku.

Security Descriptor

Informacje nt. właściciela pliku oraz praw dostępu.

Data

Zawiera dane pliku. NTFS dopuszcza możliwość posiadania wielu strumieni danych dla pliku.

Object ID

Unikalny identyfikator. Nie każdy element NTFS posiada ten atrybut.

Logged Tool Stream

Podobne do strumieni danych, z tym, że zmiany tego atrybutu są lgoowane w dzienniku tak jak metadane. Uzywane przy EFS.

Reparse Point

Atrybut opisany obszernie niżej.

Index Root

Używany do implementacji folderów i innych indeksów.

Index Allocation

Używany do implementacji folderów i innych indeksów.

Bitmap

Używany do implementacji folderów i innych indeksów.

Volume Information

Wersja woluminu.

Volume Name

Wersja woluminu.

 

4.1 Alternatywne potoki w NTFS

 

 

Rys.: http://www.windowsitpro.com/Articles/Index.cfm?ArticleID=15719

·      Potoki alternatywne swoje powstanie zawdzięczają systemom plików Mac. Początkowo miały zapewnić zachowanie dodatkowych danych(zapisanych właśnie w postaci alternatywnych potoków) plików z Mac’ów na serwerach Windows.

·      Każdy potok w pliku ma osobne blokady wykluczające, ale wspólne prawa dostępu.

·      Dane zawarte w alternatywnych potokach zostają utracone w skutek przenoszenia danych na inny system plików np. FAT.

 

Alternatywne potoki są w pewnym sensie plikami wewnątrz plików. Każdy plik NTFS zawiera związany z nim plik bez nazwy. Jest on domyślnym, standardowym potokiem danych, używanym przez praktycznie każdy program. Są to dane, na których operujemy używając najprostszych programów np. do edycji pliku tekstowego.

Funkcjonalność alternatywnych potoków z reguły nie jest wykorzystywana. Nawet tak zintegrowane ze środowiskiem Windows programy jak Windows Explorer, przy odczytywaniu rozmiaru pliku uwzględniają tylko standardowy potok danych. Poprzez wykorzystanie alternatywnych potoków można także łatwo przemycić wirusy, zatem m.in. z tych względów to rozszerzenie NTFS ma zostać w przyszłości usunięte.

 

5. Prawa dostępu

 

 

Rys.: http://www.windowsitpro.com/Articles/Index.cfm?ArticleID=15719

 

·      NTFS tworzy jeden schemat praw dostępu w tablicy laszującej. Pliki NTFS zawierają jedynie wskaźniki do elementu tablicy.

 

 

W wersjach NTFS przed Windows 2000, każdy plik przechowywał swoje prawa dostępu w swoich atrybutach. Okazało się, że różnych schemat ów praw dostępu, nawet dla rozbudowanych serwerów z wieloma użytkownikami jest ograniczona, relatywnie niewielka ilość. Dlatego od wersji 5.0 NTFS przechowuje w plikach jedynie wskaźnik do odpowiednich praw dostępu, zapisanych w metadanych systemu. Pozwala to na zaoszczędzenie miejsca na dysku, gdyż nie występuje redundancja informacji.

Przy zapisie pliku, system sprawdza czy schemat praw dostępu jest już obecny w tablicy. W przypadku nowego schematu, dodaje element do tablicy i aktywuje wskaźniki. W przypadku odczytu, system szybko sprawdza czy użytkownik ma prawa dostępu poprzez odczytanie informacji zapisanej pod wskaźnikiem.

 

6. EPS (Encrypting File System)

 

Zalety:

·      Działanie w tle

·      Kombinacja algorytmów:

- 128-bitowy (ew. 168) symetryczny DESX

- 1024-bitowy RSA

daje efektywny i zarazem relatywnie trudny do złamania klucz.

·      Szyfrowanie odbywa się w wątkach jądra, co utrudnia odczytanie nieużywanych już stron pamięci.

·      Dodatkowy klucz nadzorcy do odzyskiwania danych.

 

Wady:

·      Pliki tymczasowe są tylko zaznaczane do usunięcia, nie wspominając o zamazywaniu.

·      Niektóre programy tworzą kopie tymczasowe, które też powinny być szyfrowane. Na szczęście, z reguły pliki te znajdują się w tym samym katalogu(łatwo obejść tę niedogodność).

·      Klucz znajduję się na dysku.

 

Szyfrowanie plików ma za zadanie uchronić użytkownika przed niepowołanym dostępem do jego danych. EFS jest narzędziem zapewniającym podstawowe bezpieczeństwo – wykorzystuje szybki algorytm z symetrycznym kluczem do szyfrowania danych, a następnie szyfruje ten klucz przy pomocy ciężkiego algorytmu RSA z 1024-bitowym kluczem.

System szyfruje dane w tle, użytkownik nie widzi różnicy pomiędzy działaniem systemu plików z szyfrowaniem danych i bez tej funkcji. Można szyfrować dowolny zbiór danych na dysku, jednakże zaleca się szyfrowanie katalogami, gdyż niektóre programy użytkowe tworzą kopie tymczasowe. W przypadku Microsoft Word kopie te znajdują się w tym samym katalogu, co uchroni je przed niepowołanym dostępem, jeśli również zostaną zaszyfrowane. Można uzyskać to bezpieczeństwo szyfrując cały katalog zawierający ważne pliki.

NTFS oferuje dodanie do szyfrowania kluczy nadzorców do odzyskiwania danych. W przypadku lokalnych sieci komputerowych, firm zrzeszających wielu pracowników, taki klucz może okazać się przydatny przy przetasowaniach kadrowych, gdy trzeba odzyskać dane i pracę odchodzącego pracownika.

W przypadku Windows XP domyślnie nie dołącza się klucza do odzyskiwania danych, gdyż większość użytkowników wyklucza prawo dostępu wielu osób do danych. W Windows 2000 klucz administratora do odzyskiwania danych jest tworzony automatycznie.

Szyfrowanie pliku:

Rys.: http://www.ntfs.com

 

Rozszyfrowanie pliku:

Rys.: http://www.ntfs.com

 

Odzyskanie danych przy pomocy klucza nadzorcy:

Rys.: http://www.ntfs.com

 

 

 

7. Pliki Sparse w NTFS

 

 

Rys.: http://www.ntfs.com

 

·      Podobieństwo do podalgorytmów kompresji dysku.

·      Zastosowanie w monitorowaniu zmian na woluminie (Volume Change Tracking)

 

W przypadku pliku z ustawionym atrybutem sparse, większe rejony pliku zawierające same zera nie są fizycznie zapisywane na dysku. System w przypadku odwołania do takich obszarów generuje zera i przekazuje klientowi. Takie rozwiązanie pozwala na zaoszczędzenie miejsca w przypadku plików zawierającym wiele zer następujących kolejno po sobie. Takich plików, może wbrew pozorom przytrafia się wiele. Jako przykład przedstawię zastosowanie funkcjonalności plików sparse przy okazji opisywania Volume Change Tracking.

 

7.1 Volume Change Tracking

Rys.: http://www.windowsitpro.com/Articles/Index.cfm?ArticleID=15900

 

 

·      Rozsądna, funkcjonalna implementacja zmian plików na woluminie.

·      Implementacja oparta na Sparse File, opisanym wcześniej.

 

Przed Windows 2000, aplikacje wymagające monitorowania zmian w woluminie, miały bardzo mało możliwości. System powiadamiał praktycznie tylko o tym, że zaszły zmiany, nie podając rodzaju zmiany. Program musiał samoczynnie odszukiwać modyfikacji. Od Windows 2000 sytuacja uległa zmiana, dzięki Volume Change Tracking. Jest to tablica zawierająca zmiany zachodzące na woluminie. Każdy element tablicy to rekord zawierający m.in. informację o tym jaki plik się zmienił, adres jego reprezentanta w MFT, kiedy i co tak naprawdę się z nim stało(utworzony, skasowany, zmodyfikowany). Aplikacja może zażądać prowadzenia dla niej takiego dziennika.

Przy implementacji tego dziennika zmian na woluminie użyto atrybutu sparse. Plikiem sparse jest tablica zawierająca rekordy z informacjami o zmianach na woluminie. Rozmiar dziennika jest ograniczony, jednakże nawet w przypadku następowania ekstremalnie często zmian na dysku, aplikacja zdąży zanotować informacje przed usunięciem jej z tablicy. W miarę napływania zmian dodaje się nowe rekordy do tablicy. Gdy trzeba zwolnić trochę miejsca wskutek zapełniania się tablicy, miejsce zawierające najstarsze zmiany oznacza się jako wypełnione zerami. Zapewnia to oszczędność przestrzeni dyskowej bez utraty szybkości działania.

 

 

8. Reparse points

 

- Atrybut, na podstawie którego zostały zaimplementowane inne funkcje systemu NTFS:

·      punkty montowania woluminów (Volume Mount Points)

·      montowanie katalogów (Directory Junctions)

·      HSM (Hierarchical Storage Management)

·      SIS (Single Instance Storage)

 

Gdy plik, bądź katalog systemu plików NTFS zawiera atrybut reparse, przy każdej próbie odwołania się do elementu, zostanie wykonany specjalny kod adresowany atrybutem reparse. Ta funkcjonalność NTFS została wykorzystana do innych wbudowanych cech NTFS:

 

8.1 Punkty montowania woluminów

Funkcjonalność analogiczna do Unix’owych Mount point’ów. Każdy istniejący system plików(taki że jest mu przypisana pewna litera: C:, …, Z: ) może zostać podłączony jako katalog w bieżącym systemie plików.

 

8.2 Montowanie katalogów

Montowanie katalogów działa analogicznie do punktów montowania woluminów, z tą różnicą, że podczepia się pojedyncze katalogi z systemy plików.

 

8.3 HSM - Hierarchical Storage Management

HSM pozwala na przechowywania rzadko używanych danych na wolniejszych bądź tańszych nośnikach. Gdy tylko dane nie są długo używane zostają zastąpione plkiem reparse, a plik originalny zostaje przeniesiony na tańsze urządzenie. Przy próbie dostępu do pliku uprzednio przeniesionego, uruchamia się kod reparse, a mechanizm HSM przenosi plik z powrotem na droższe urządzenie.

 

8.4 SIS - Single Instance Storage

W przypadku gdy system plików zawiera wiele takich samych plików rozsianych po strukturze katalogowej, mechanizm SIS znajduje takie bliźniacze pliki, zastępuje je plikami z atrybutem reparse, a właściwą treść pliku przechowuje w jednej kopii w specjalnym miejscu. Kod zawarty w reparse przekierowuje żadania do miejsca, gdzie faktycznie znajduje się plik.

 

9. Distributed Link Tracking

 

 

Rys.: http://www.windowsitpro.com/Articles/Index.cfm?ArticleID=15900

 

·      szeroki (16 bajtów) zakres numeracji Obcject ID daje unikalny numer w obrębie domeny, szansa że Object ID będzie dobrym identyfikatorem w bardziej ogólnych przypadkach zmniejsza się wraz z rozrostem modelu.

·      Linki odnajdują pliki, na które wskazują za pomocą Object ID

·      Operacje zachowujące Object ID:

1.   zmiana ścieżki

2.   przy tworzeniu kopii zapasowej

3.   odzyskiwanie z kopii zapasowej

4.   zmiana nazwy komputera

5.   zmiana komputera w obrębie domeny

 

Od Windows 2000, skróty do plików, katalogów oprócz ścieżki katalogowej zapamiętują też Object ID. Dlatego nawet gdy przeniesiemy element docelowy na inny komputer w sieci, skrót będzie działał poprawnie. Przy próbie odwołania się do nieaktualnego skrótu, obiekt zostanie znaleziony na podstawie indeksu wszystkich plików i folderów po atrybucie Object ID. Ścieżka zostanie też automatycznie zaktualizowana.

 

10. Kompresja plików NTFS

 

·      Działa w tle

·      Rozmiar klastra na dysku nie może przekraczać 4kB

 

Od wersji 5.0, NTFS na życzenie użytkownika, może w tle kompresować żadane pliki na dysku, a przy próbie odczytu, również w tle, dekompresuje przed odczytem. Zaletą takiego rozwiązania jest oszczędność miejsca bez praktycznie żadnego nakładu pracy oraz dodatkowego „klikania” w momencie, gdy kompresja jest włączona.

Odbywa się to kosztem wydajności, procesor za każdym razem musi być wykorzystywany do konwersji na postać spakowaną i rozpakowaną. Algorytmy kompresji działają tylko dla woluminów o rozmiarze klastra nie większym niż 4kB, w innym przypadku nie można stosować kompresji.

 

 

11. Quota

 

 

Rys.: http://www.windowsitpro.com/Articles/Index.cfm?ArticleID=15719

 

·      Model per-volume, per-user.

·      Mierzy (i ogranicza) zaalokowaną pamięć użytkowników.

·      Wyjątkiem są pliki sparse oraz kompresja w tle, w których uwzględnia się wirtualny rozmiar przy wyliczaniu zajętego obszaru.

 

Funkcjonalność już dawno zaimplementowana pod linuxem, wreszcie obsługiwana przez Windows’owy system plików.

 

12. POSIX

 

 

Działania NTFS(dla Windows 2000) spełniające normy POSIX:

·        Pliki na woluminach NTFS spełniają konwencję nazewnictwa POSIX. Nazwy plików mogą zawierać spacje, kropki oraz są rozróżnialne względem małych i wielkich liter.

·        Przechodnie sprawdzanie dostępu do pliku katalogu. Przed uzyskaniem dostępu do pliku/katalogu sprawdzane są prawa dostępu wszystkich katalogów nadrzędnych.

·        Zostawianie śladu: „File change time”.

·        Twarde dowiązania zgodne z normami POSIX.

 

 

13. Integralność danych i ich odzyskiwanie

 

·        Standardowe pliki log do implementacji transakcji

·        Dynamiczne mapowanie klastrów (Cluster remapping)

Każda operacja jest wykonywana na zasadzie transakcji. Najpierw zmiany dokonywane na metadanych zostają zapisane w dzienniku, dopiero potem faktyczna operacja ma miejsce i jest zatwierdzana. W przypadku awarii systemu, uruchamiane jest odzyskiwanie systemu plików. Przeglądany jest dziennik i wszystkie niedokończone transakcje są usuwane bądź realizowane zgodnie z zapamiętanymi tam informacjami. Taki rozwiązanie gwarantuje stabilność systemu plików, aczkolwiek czasami można utracić część informacji, które były modyfikowane w trakcie awarii, bądź znajdowały się na zepsutym klastrze.

W przypadku gdy system plików odkryje niedziałające klastry na dysku, automatycznie oznacza je jako zepsute i podstawia na jego miejsce nieużywany klaster. W przypadku odwołania do adresu podmienionego klastra, NTFS realizuje żądanie na nowym zmapowanym klastrze. W przypadku odczytu z błędnego klastra traci się informacje na nim zawarta, jednak w przypadku zapisu, użytkownik nie dowie się nawet, że wystąpił po drodze jakiś błąd. Oczywiście powtarzające się awarie klastrów są poważną wskazówką do wymiany nośnika.

 

14. Optymalizacja NTFS

 

 

·        Odpowiednie zdefiniowanie rozmiaru klastrów.

·        Zmiana ilości rezerwowanego miejsca dla MFT

·        Defragmentacja:

-       MFT

-       Plików i folderów

-       Plików stronicowania

·        Kompresja danych