System plików NTFS
21 grudnia 2005
Zbyszek Skowron
 
View with Opera!

System plików NTFS

Zbyszek Skowron

21 grudnia 2005

Wprowadzenie

Podstawowe możliwości systemu plików NTFS:

Podstawowe cechy

Ograniczenia i rozmiary klastrów

Ograniczenia systemu NTFS i jego implementacji w systemie Windows są różne:

NTFS Windows
Numery klastrów 64-bitowe 32-bitowe
Maks. rozmiar klastra 64 KB 64 KB
Maks. wielkość woluminu 16 EB 256 TB
Maks. wielkość pliku 16 EB 16 TB
Maks. liczba plików 232-1 232-1

Domyślne wielkości klastrów dla woluminów NTFS:

Rozmiar woluminu Wielkość klastra
≤ 512MB 512 B
≤ 1GB 1 KB
≤ 2GB 2 KB
> 2GB 4 KB

Zastosowanie małych klastrów w systemie NTFS pozwala oszczędzić miejsce na dysku.

Zaawansowane możliwości

Atrybuty i stumienie

Przykład użycia strumieni:
Program Windows Explorer używa strumienia Summary Information do zapisania informacji o autorze pliku, tytule, temacie itp. (File>Properties>Summary)

Przegląd atrybutów

$STANDARD_INFORMATION flagi takie jak as read-only, archive itp.; czasy utworzenia, dostępu, modyfikacji; liczba dowiązań z katalogów (hard link count); właściciel
$FILE_NAME nazwa pliku (w Unicode); plik może mieć wiele nazw (np. długą nazwę i wersję 8.3)
$DATA poszczególne strumienie danych (jeden nienazwany i dowolna liczba nazwanych)
$OBJECT_ID unikalny, 64-bajtowy identyfikator pliku (dolne 16 bajtów identyfikuje wolumin); NTFS pozwala na wyszukiwanie plików po tym atrybucie (używane przez link-tracking)
$ATTRIBUTE_LIST lista atrybutów z ich położeniem - używana, gdy atrybuty nie mieszczą się w jednym rekordzie tablicy MFT (o niej za chwilę)
$EFS zawiera dane o szyfrowaniu pliku, m.in. klucze potrzebne do ich odszyfrowania
$REPARSE_POINT zawiera reparse-tag i dodatkowe dane; służy m.in. do implementacji linków symbolicznych i punktów montowania

Metadane w systemie NTFS

Struktura i właściwości woluminu NTFS są definiowane przez następujące pliki z metadanymi:
$Mft Master File Table - plik definiujący rozmieszczenie wszyskich plików na dysku (także samego $Mft!). Jest umieszczany przy początku dysku.
$MftMirr Kopia pierwszych 16 rekordów z MFT (zawierających informacje o plikach z metadanymi). Jest umieszczany przy środku dysku.
$LogFile Plik journala.
$Volume Zawiera informacje o nazwie i typie woluminu.
$AttrDef Zawiera definicje atrybutów (m.in. ich nazwy i numery).
\ Katalog główny woluminu.
$Bitmap Mapa zajętości klastrów na dysku (jeden bit na klaster).
$Boot Boot sektor (pierwsze 16 sektorów) - zawiera położenie MFT i boot record.
$BadClus Plik składający się z zepsutych klastrów. Ponieważ każdy taki klaster jest do niego doalokowywany, to nie może zostać użyty przez inny plik.
$Secure Trzyma informacje o prawach dostępu do plików.
$UpCase Tablica mapująca małe litery na wielkie.
$Extend Katalog z pozostałymi plikami specjalnymi (jak $Quota, $ObjID, $UsnJrnl, $Reparse).

Master File Table

ntfs-resid-attr

Master File Table, cd.

Master File Table, cd. 2

Pliki skompresowane

Pliki rzadkie i małe

ntfs-sparse

Katalogi

Małe katalogi

Duże katalogi

ntfs-dir

Journal

Transakcje

Zasada działania journala

Aby journal był wiarygodny zapis danych musi się odbywać odpowiedniej kolejności:
  1. NTFS zapisuje transakcję w kopii log'a w pamięci.
  2. NTFS modyfikuje wolumin w pamięci.
  3. Cache manager zapisuje log na dysk.
  4. Cache manager zapisuje modyfikacje woluminu na dysk.
Dzięki temu plik journalla zawsze wyprzedza faktyczną modyfikację struktury woluminu.

Ponadto driver NTFS co kilka sekund zapisuje do log'a tablice niedokończonych transakcji i niezaaplikowanych podoperacji, oraz tzw. checkpoint record zawierający ich położenie i informacje o tym, jak daleko w log'u trzeba się wrócić aby rozpocząć przywracanie spójności.

Undo i Redo

Przywracanie spójności

W przypadku, gdy wskutek awarii systemu część danych nie została zapisana na dysk, journal zawiera informacje o przerwanych transakcjach. Przywracanie spójności odbywa się w trzech fazach:

1. Analiza

1. Analiza, cd.

2. Redo

3. Undo


Po tym kroku wolumin jest przywrócony do spójnego stanu.

Uprawnienia do plików

Uprawnienia do plików: plik $Secure

ntfs-secur

Koniec

Zbyszek Skowron, zs210995@zodiac.mimuw.edu.pl