NTFS - NTFS

NTFS
Deweloper(zy) Microsoft
Pełne imię i nazwisko System plików NT
Wprowadzono lipiec 1993 ; 28 lat temu z Windows NT 3.1 ( 1993-07 )
Identyfikator partycji 0x07 ( MBR )
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 ( GPT )
Struktury
Zawartość katalogu Wariant B-drzewa
Przydział plików Mapa bitowa
Złe bloki $BadClus (Rekord MFT)
Limity
Maks. wielkość woluminu 2 64 klastry − 1 klaster (format);
256 TiB – 64 KB ( Windows 10 wersja 1703, Windows Server 2016 lub wcześniejsza implementacja) 8 PB – 2 MB (Windows 10 wersja 1709, Windows Server 2019 lub późniejsza implementacja)  
  
Maks. rozmiar pliku 16 EiB  – 1 kB (format); 16 TB  – 64 KB ( implementacja Windows 7 , Windows Server 2008 R2 lub nowsza ) 256 TB  – 64 KB ( implementacja Windows 8 , Windows Server 2012 lub nowsza) 8 PB – 2 MiB ( implementacja Windows 10 wersja 1709, Windows Server 2019 lub nowsza) )  
  
  
  
Maks. liczba plików 4 294 967 295 (2 32 -1)
Maks. długość nazwy pliku 255 jednostek kodu UTF-16
Dozwolone znaki w nazwach plików
Cechy
Daty zarejestrowania Tworzenie, modyfikacja, zmiana POSIX, dostęp
Zakres dat 1 stycznia 1601 – 28 maja 60056 (Czasy plików to 64-bitowe liczby liczące 100-nanosekundowe interwały (dziesięć milionów na sekundę) od 1601 roku, czyli ponad 58 000 lat)
Rozdzielczość daty 100 ns
Widelce Tak (patrz § Alternatywny strumień danych (ADS) poniżej)
Atrybuty Tylko do odczytu, ukryte, systemowe, archiwalne, bez indeksowania treści, offline, tymczasowe, skompresowane
Uprawnienia systemu plików Listy ACL
Przezroczysta kompresja Na plik, LZ77 (od Windows NT 3.51 )
Przejrzyste szyfrowanie Na plik,
DESX (od Windows 2000 ),
Triple DES (od Windows XP ),
AES (Windows XP z dodatkiem Service Pack 1, Windows Server 2003 i nowsze)
Deduplikacja danych Tak ( Windows Server 2012 )
Inne
Obsługiwane systemy operacyjne Windows NT 3.1 i nowsze
Mac OS X 10.3 i nowsze (tylko do odczytu)
Jądro Linux w wersji 2.6 i nowsze
Jądro Linux w wersji 2.2-2.4 (tylko do odczytu)
FreeBSD
NetBSD
Chrome OS
Solaris
ReactOS (tylko do odczytu)

NTFS ( New Technology File System ) to zastrzeżony system plików księgowania opracowany przez firmę Microsoft . Począwszy od Windows NT 3.1 jest to domyślny system plików rodziny Windows NT .

NTFS ma kilka ulepszeń technicznych w stosunku do zastąpionych systemów plików — tablicę alokacji plików (FAT) i system plików o wysokiej wydajności (HPFS) — takich jak ulepszona obsługa metadanych i zaawansowane struktury danych w celu poprawy wydajności, niezawodności i wykorzystania miejsca na dysku. Dodatkowe rozszerzenia to bardziej rozbudowany system bezpieczeństwa oparty na listach kontroli dostępu (ACL) i dzienniku systemu plików .

NTFS jest również obsługiwany w innych systemach operacyjnych dla komputerów stacjonarnych i serwerów. Linux i BSD mają darmowy sterownik NTFS o otwartym kodzie źródłowym , zwany NTFS-3G , z funkcją odczytu i zapisu. macOS jest wyposażony w obsługę tylko do odczytu dla NTFS. System Windows jest dodatkowo zdolny do bezpośredniej konwersji FAT32 /16/12 na NTFS bez konieczności przepisywania wszystkich plików.

Historia

W połowie lat 80. Microsoft i IBM utworzyły wspólny projekt, aby stworzyć kolejną generację graficznego systemu operacyjnego ; rezultatem był OS/2 i HPFS . Ponieważ Microsoft nie zgadzał się z IBM w wielu ważnych kwestiach, ostatecznie rozdzielili się; OS/2 pozostał projektem IBM, a Microsoft pracował nad rozwojem Windows NT i NTFS.

System plików HPFS dla OS/2 zawierał kilka ważnych nowych funkcji. Kiedy Microsoft stworzył swój nowy system operacyjny, „pożyczył” wiele z tych koncepcji dla NTFS. Pierwotnymi programistami NTFS byli Tom Miller , Gary Kimura, Brian Andrew i David Goebel.

Prawdopodobnie w wyniku tego wspólnego pochodzenia, HPFS i NTFS używają tego samego kodu typu identyfikacji partycji dyskowej (07). Używanie tego samego numeru rekordu identyfikatora partycji jest bardzo nietypowe, ponieważ dostępne były dziesiątki nieużywanych numerów kodów, a inne główne systemy plików mają własne kody. Na przykład FAT ma więcej niż dziewięć (po jednym dla FAT12 , FAT16 , FAT32 , itd.). Algorytmy identyfikujące system plików na partycji typu 07 muszą wykonać dodatkowe sprawdzenia, aby odróżnić HPFS od NTFS.

Wersje

Firma Microsoft wydała pięć wersji NTFS:

Numer wersji NTFS Pierwszy system operacyjny Data wydania Nowe funkcje Uwagi
1,0 Windows NT 3.1 1993 Początkowa wersja NTFS 1.0 jest niezgodny z wersją 1.1 i nowszą: woluminy zapisane przez system Windows NT 3.5x nie mogą być odczytane przez system Windows NT 3.1 do czasu zainstalowania aktualizacji (dostępnej na nośniku instalacyjnym systemu NT 3.5x).
1,1 Windows NT 3.51 1995 Skompresowane pliki, nazwane strumienie i listy kontroli dostępu
1.2 Windows NT 4.0 1996 Deskryptory bezpieczeństwa Powszechnie nazywany NTFS 4.0 po wydaniu systemu operacyjnego
3,0 Windows 2000 2000 Przydziały dyskowe, szyfrowanie na poziomie plików w postaci systemu szyfrowania plików , pliki rzadkie , punkty ponownej analizy , rejestrowanie numerów sekwencyjnych aktualizacji (USN) , śledzenie łączy rozproszonych, $Extendfolder i jego pliki Zgodność została również udostępniona dla systemu Windows NT 4.0 z aktualizacją Service Pack 4. Powszechnie nazywany NTFS 5.0 po wydaniu systemu operacyjnego.
3.1 Windows XP Październik 2001 Rozszerzono wpisy Master File Table (MFT) o nadmiarowy numer rekordu MFT (przydatny do odzyskiwania uszkodzonych plików MFT) Powszechnie nazywany NTFS 5.1 po wydaniu systemu operacyjnego

NTFS.sys Numer wersji (np v5.0 w Windows 2000) opiera się na wersji systemu operacyjnego; nie należy go mylić z numerem wersji NTFS (v3.1 od Windows XP).

Chociaż kolejne wersje systemu Windows dodały nowe funkcje związane z systemem plików, nie zmieniły samego systemu plików NTFS. Na przykład system Windows Vista zaimplementował dowiązania symboliczne NTFS , transakcyjny NTFS , zmniejszanie partycji i samonaprawianie. Dowiązania symboliczne NTFS to nowa funkcja w systemie plików; wszystkie pozostałe to nowe funkcje systemu operacyjnego, które wykorzystują już istniejące funkcje NTFS.

Skalowalność

NTFS jest zoptymalizowany dla klastrówKB , ale obsługuje maksymalny rozmiar klastra 2 MB . (Wcześniejsze implementacje obsługiwać do 64 kb) Maksymalna wielkość objętości NTFS podpora Szczegółowy CAN 2 64 - 1 klastrów, ale nie wszystkie realizacje osiągnięcia tego teoretycznego maksimum, jak omówiono poniżej.   

Wielkość maksymalna objętość NTFS wprowadzone w systemie Windows XP Professional jest 2 32 - 1 klastry, częściowo ze względu na ograniczenia tablicę partycji. Na przykład przy użyciu  klastrów 64 KB maksymalny rozmiar woluminu NTFS systemu Windows XP wynosi 256 TB minus 64 KB . Używając domyślnego rozmiaru klastra wynoszącego 4 KB, maksymalny rozmiar woluminu NTFS to 16 TB minus 4 KB. Oba są znacznie wyższe niż limit 128 GB w systemie Windows XP SP1 . Ponieważ tabele partycji na dyskach z głównym rekordem rozruchowym (MBR) obsługują tylko rozmiary partycji do 2 TB, wiele woluminów z tabelą partycji GUID (GPT lub „dynamicznych”) musi zostać połączonych, aby utworzyć pojedynczy wolumin NTFS większy niż 2 TB. Rozruch z woluminu GPT do środowiska Windows w sposób obsługiwany przez firmę Microsoft wymaga systemu z interfejsem Unified Extensible Firmware Interface (UEFI) i obsługą 64-bitów.         

Maksymalny teoretyczny limit rozmiaru poszczególnych plików w systemie NTFS wynosi 16 EB ( 16 × 1024 6 lub 2 64 bajty ) minus 1 KB, co daje łącznie 18 446 744 073 709 550 592 bajtów. W systemie Windows 10 w wersji 1709 i Windows Server 2019 maksymalny zaimplementowany rozmiar pliku to 8 PB minus 2 MB lub 9 007 199 252 643 840 bajtów.     

Dziennikarstwo

NTFS to system plików z dziennikiem, który używa dziennika NTFS ($LogFile) do rejestrowania zmian metadanych w woluminie. Jest to funkcja, której FAT nie zapewnia i która ma kluczowe znaczenie dla systemu NTFS, aby zapewnić, że jego złożone wewnętrzne struktury danych pozostaną spójne w przypadku awarii systemu lub przesunięć danych wykonywanych przez interfejs API defragmentacji i umożliwić łatwe wycofywanie niezatwierdzonych zmian w tych krytycznych strukturach danych po ponownym zamontowaniu woluminu. Szczególnie dotknięte struktury to bitmapa alokacji woluminów, modyfikacje rekordów MFT, takie jak przenoszenie niektórych atrybutów o zmiennej długości przechowywanych w rekordach MFT i listach atrybutów oraz indeksy katalogów i deskryptorów zabezpieczeń .

Format ($LogFile) ewoluował w kilku wersjach:

Wersja Windows Wersja formatu $LogFile
Windows NT 4.0 1,1
Windows 2000
Windows XP
Windows Vista
System Windows 7
Windows 8
Windows 8.1 2,0
Okna 10

Niezgodność wersji $ LogFile zaimplementowanych przez Windows 8.1 i Windows 10 uniemożliwia Windows 8 (i wcześniejsze wersje Windows) poprawne przetwarzanie $ LogFile w przypadku pozostawienia woluminu NTFS w stanie brudnym przez nagłe zamknięcie lub hibernację na dysk w stanie wylogowania (aka: Hybrid Boot lub Fast Boot, który jest domyślnie włączony w systemie Windows 10 ). Ta niemożność przetworzenia wersji 2.0 pliku $LogFile na brudnych woluminach przez te wcześniejsze wersje systemu Windows powoduje wywołanie narzędzia do naprawy dysku CHKDSK podczas podwójnego rozruchu systemu Windows 10 ze starszymi systemami. Istnieje ustawienie rejestru systemu Windows , które zapobiega automatycznej aktualizacji pliku $LogFile do nowszej wersji.

USN Journal (Aktualizacja Sequence Number Journal) to funkcja zarządzania systemem, że zapisy (w $ Extend \ $ UsnJrnl) zmienia plików, strumieni i katalogów na objętości, jak również ich różnych cech i ustawień zabezpieczeń. Dziennik jest udostępniany aplikacjom do śledzenia zmian w woluminie. Tę kronikę można włączyć lub wyłączyć na woluminach niesystemowych.

Twarde linki

Funkcja twardego łącza umożliwia bezpośrednie odwoływanie się różnych nazw plików do tej samej zawartości pliku. Dowiązania stałe mogą zawierać linki tylko do plików w tym samym wolumenie, ponieważ każdy wolumen ma swój własny MFT . Dowiązania twarde zostały pierwotnie dołączone do obsługi podsystemu POSIX w systemie Windows NT.

Chociaż dowiązania twarde używają tego samego rekordu MFT ( i- węzła ), który rejestruje metadane pliku, takie jak rozmiar pliku, data modyfikacji i atrybuty, NTFS również buforuje te dane we wpisie katalogu jako zwiększenie wydajności. Oznacza to, że wyświetlając zawartość katalogu przy użyciu rodziny API FindFirstFile/FindNextFile (odpowiednik API opendir/readdir POSIX), oprócz nazwy i i-węzła otrzymasz również te informacje z pamięci podręcznej. Jednak możesz nie widzieć aktualnych informacji, ponieważ informacje te zostaną zaktualizowane tylko po zamknięciu pliku i tylko dla katalogu, z którego plik został otwarty. Oznacza to, że gdy plik ma wiele nazw za pośrednictwem twardych łączy, aktualizacja pliku za pomocą jednej nazwy nie aktualizuje danych w pamięci podręcznej powiązanych z drugą nazwą. Zawsze możesz uzyskać aktualne dane za pomocą GetFileInformationByHandle (co jest prawdziwym odpowiednikiem funkcji stat POSIX). Można to zrobić za pomocą uchwytu, który nie ma dostępu do samego pliku (przekazując zero do CreateFile dla dwDesiredAccess), a zamknięcie tego uchwytu skutkuje przypadkowym zaktualizowaniem informacji w pamięci podręcznej.

System Windows używa twardych łączy do obsługi krótkich (8.3) nazw plików w systemie NTFS. Obsługa systemu operacyjnego jest potrzebna, ponieważ istnieją starsze aplikacje, które mogą działać tylko z nazwami plików 8.3, ale obsługę można wyłączyć. W takim przypadku dodawany jest dodatkowy rekord nazwy pliku i wpis katalogu, ale zarówno wersja 8.3, jak i długa nazwa pliku są łączone i aktualizowane razem, w przeciwieństwie do zwykłego łącza twardego.

System plików NTFS ma limit 1024 twardych łączy w pliku.

Alternatywny strumień danych (ADS)

Alternatywne strumienie danych umożliwiają powiązanie więcej niż jednego strumienia danych z nazwą pliku ( rozwidlenie ) przy użyciu formatu „nazwa_pliku:nazwa_strumienia” (np. „tekst.txt:dodatkowy strumień”).

Strumienie NTFS zostały wprowadzone w systemie Windows NT 3.1 , aby umożliwić usługom dla komputerów Macintosh (SFM) przechowywanie wideł zasobów . Chociaż obecne wersje systemu Windows Server nie zawierają już SFM, innej firmy Apple Filing Protocol (AFP) Produkty (takie jak GroupLogic „s ExtremeZ-IP ) nadal korzystać z tej funkcji w systemie plików. Bardzo małe reklamy (o nazwie „Zone.Identifier”) są dodawane przez Internet Explorer, a ostatnio przez inne przeglądarki, aby oznaczyć pliki pobrane z zewnętrznych witryn jako potencjalnie niebezpieczne do uruchomienia; lokalna powłoka wymagałaby wówczas potwierdzenia użytkownika przed ich otwarciem. Gdy użytkownik wskaże, że nie chce już tego okna dialogowego potwierdzenia, to ADS jest usuwane.

Strumienie alternatywne nie są wyświetlane w Eksploratorze Windows, a ich rozmiar nie jest uwzględniony w rozmiarze pliku. Gdy plik jest kopiowany lub przenoszony do innego systemu plików bez obsługi ADS, użytkownik jest ostrzegany, że nie można zachować alternatywnych strumieni danych. Takie ostrzeżenie zazwyczaj nie jest wyświetlane, jeśli plik jest dołączony do wiadomości e-mail lub przesłany do witryny internetowej. Dlatego używanie alternatywnych strumieni do krytycznych danych może powodować problemy. Firma Microsoft udostępnia narzędzie o nazwie Strumienie do przeglądania strumieni na wybranym woluminie. Począwszy od Windows PowerShell 3.0, możliwe jest natywne zarządzanie ADS za pomocą sześciu poleceń cmdlet: Add-Content, Clear-Content, Get-Content, Get-Item, Remove-Item, Set-Content.

Złośliwe oprogramowanie używało alternatywnych strumieni danych do ukrywania kodu. W rezultacie skanery złośliwego oprogramowania i inne specjalne narzędzia sprawdzają teraz alternatywne strumienie danych.

Kompresja pliku

NTFS może kompresować pliki przy użyciu algorytmu LZNT1 (wariant LZ77 ) Pliki są kompresowane w 16 fragmentach klastra. W przypadku klastrów 4  KB pliki są kompresowane w fragmentach 64 KB. Algorytmy kompresji w systemie NTFS są zaprojektowane do obsługi klastrów o rozmiarze do 4 KB. Gdy rozmiar klastra jest większy niż 4 KB na woluminie NTFS, kompresja NTFS jest niedostępna.

Jednak duże pliki kompresowalne ulegają znacznej fragmentacji, ponieważ każdy fragment mniejszy niż 64  KB staje się fragmentem.

Systemy z jednym użytkownikiem z ograniczoną przestrzenią na dysku twardym mogą korzystać z kompresji NTFS dla małych plików, od 4  KB do 64  KB lub więcej, w zależności od kompresji. Pliki mniejsze niż około 900 bajtów są przechowywane we wpisie katalogu MFT .

Pamięci flash, takie jak dyski SSD , nie posiadają opóźnień ruchów głowicy i wysokiego czasu dostępu mechanicznych dysków twardych , więc fragmentacja ma tylko mniejszą karę. Użytkownicy szybkich procesorów wielordzeniowych odnajdą poprawę szybkości aplikacji dzięki kompresji aplikacji i danych oraz zmniejszeniu wykorzystywanej przestrzeni. Pamiętaj, że dyski SSD z kontrolerami Sandforce już kompresują dane. Jednak ponieważ przesyłanych jest mniej danych, zmniejsza się liczba operacji we/wy.

Kompresja działa najlepiej w przypadku plików, które mają powtarzającą się zawartość, są rzadko zapisywane, zwykle są otwierane sekwencyjnie i same nie są skompresowane. Pliki mogą być kompresowane lub dekompresowane pojedynczo (poprzez zmianę zaawansowanych atrybutów) dla dysku, katalogu lub drzewa katalogów, stając się domyślnymi plikami wewnątrz.

Jeśli pliki systemowe potrzebne podczas rozruchu (takie jak sterowniki, NTLDR, winload.exe lub BOOTMGR) są skompresowane, system może nie uruchomić się poprawnie, ponieważ filtry dekompresyjne nie zostały jeszcze załadowane. Późniejsze wersje systemu Windows nie pozwalają na kompresowanie ważnych plików systemowych.

Według badań przeprowadzonych przez zespół Microsoft NTFS Development, 50–60 GB to rozsądny maksymalny rozmiar skompresowanego pliku na woluminie NTFS o rozmiarze klastra (bloku) 4 KB (domyślnym). Ten rozsądny maksymalny rozmiar gwałtownie spada w przypadku woluminów o mniejszych rozmiarach klastra. Jeśli kompresja zmniejszy 64 KB danych do 60 KB lub mniej, system NTFS traktuje niepotrzebne 4 KB strony jako puste klastry plików rozrzedzonych — nie są one zapisywane. Pozwala to na rozsądne czasy dostępu losowego, ponieważ system operacyjny musi jedynie podążać za łańcuchem fragmentów.      

Chociaż dostęp do odczytu i zapisu do skompresowanych plików jest przezroczysty , firma Microsoft zaleca unikanie kompresji na serwerach lub udziałach sieciowych z profilami mobilnymi, ponieważ powoduje to znaczne obciążenie procesora.

Algorytmy CompactOS

Od Windows 10 Microsoft wprowadził dodatkowe algorytmy, a mianowicie XPRESS4K/8K/16K i LZX . Oba algorytmy bazują na LZ77 z kodowaniem entropijnym Huffmana , którego LZNT1 brakowało. Algorytmy te zostały zaczerpnięte z formatu Windows Imaging Format . Są one używane głównie w nowej funkcji CompactOS, która kompresuje całą partycję systemową przy użyciu jednego z tych algorytmów. Można je również ręcznie włączyć dla każdego pliku za pomocą /exeflagi compactpolecenia. W przypadku użycia na plikach, algorytm CompactOS unika fragmentacji , zapisując skompresowane dane w ciągłych przydzielonych fragmentach.

Rzadkie pliki

Rzadki plik: puste bajty nie muszą być zapisywane, dlatego mogą być reprezentowane przez metadane .

Pliki rzadkie to pliki przeplatane pustymi segmentami, dla których nie jest używana rzeczywista przestrzeń do przechowywania. Dla aplikacji plik wygląda jak zwykły plik z pustymi regionami widzianymi jako regiony wypełnione zerami. Plik rzadki niekoniecznie zawiera obszary zer rzadkich; atrybut „sparse file” oznacza po prostu, że plik może je mieć.

Na przykład aplikacje bazodanowe mogą używać rzadkich plików. Podobnie jak w przypadku plików skompresowanych, rzeczywiste rozmiary plików rzadkich nie są brane pod uwagę podczas określania limitów kwot.

Kopia woluminu w tle

Usługa kopiowania woluminów w tle (VSS) przechowuje historyczne wersje plików i folderów na woluminach NTFS, kopiując stare, nowo nadpisane dane do kopii w tle za pomocą techniki kopiowania przy zapisie . Użytkownik może później zażądać odzyskania wcześniejszej wersji. Pozwala to również programom do tworzenia kopii zapasowych danych na archiwizowanie plików aktualnie używanych przez system plików. W przypadku mocno obciążonych systemów firma Microsoft zaleca skonfigurowanie woluminu kopii w tle na osobnym dysku.

W systemie Windows Vista wprowadzono również trwałe kopie w tle do użytku z funkcjami przywracania systemu i poprzednich wersji . Trwałe kopie w tle są jednak usuwane, gdy starszy system operacyjny montuje ten wolumin NTFS. Dzieje się tak, ponieważ starszy system operacyjny nie rozumie nowszego formatu trwałych kopii w tle.

Transakcje

Począwszy od systemu Windows Vista, aplikacje mogą używać transakcyjnego systemu plików NTFS (TxF) do grupowania wielu zmian w plikach w ramach jednej transakcji. Transakcja zagwarantuje, że albo wszystkie zmiany zostaną wprowadzone, albo żadna z nich nie, oraz że żadna aplikacja poza transakcją nie zobaczy zmian, dopóki nie zostaną zatwierdzone.

Wykorzystuje podobne techniki, jak te używane w przypadku kopiowania woluminów w tle (tj. kopiowanie przy zapisie), aby zapewnić bezpieczne wycofanie nadpisanych danych, oraz dziennik CLFS do oznaczania transakcji, które nadal nie zostały zatwierdzone lub te, które zostały popełnione, ale nadal nie w pełni zastosowane (w przypadku awarii systemu podczas zatwierdzania przez jednego z uczestników).

Transakcyjny NTFS nie ogranicza transakcji tylko do lokalnego woluminu NTFS, ale obejmuje również inne dane transakcyjne lub operacje w innych lokalizacjach, takie jak dane przechowywane w oddzielnych woluminach, rejestr lokalny lub bazy danych SQL lub bieżący stan usług systemowych lub usług zdalnych . Transakcje te są koordynowane w całej sieci ze wszystkimi uczestnikami korzystającymi z określonej usługi, DTC , aby zapewnić, że wszyscy uczestnicy otrzymają ten sam stan zatwierdzenia, oraz przetransportować zmiany, które zostały zatwierdzone przez dowolnego uczestnika (aby inni mogli unieważnić swoje lokalne pamięci podręczne dla starych danych lub wycofywania bieżących niezatwierdzonych zmian). Transakcyjny NTFS umożliwia na przykład tworzenie w całej sieci spójnych rozproszonych systemów plików, w tym z ich lokalnymi pamięciami podręcznymi na żywo lub w trybie offline.

Firma Microsoft odradza teraz używanie TxF: „Microsoft zdecydowanie zaleca programistom korzystanie z alternatywnych środków”, ponieważ „TxF może nie być dostępny w przyszłych wersjach systemu Microsoft Windows”.

Bezpieczeństwo

W systemie NTFS do każdego pliku lub folderu przypisany jest deskryptor zabezpieczeń, który definiuje jego właściciela i zawiera dwie listy kontroli dostępu (ACL). Pierwsza lista ACL, zwana arbitralną listą kontroli dostępu (DACL), określa dokładnie, jaki rodzaj interakcji (np. odczyt, zapis, wykonanie lub usuwanie) jest dozwolony lub zabroniony przez jakiego użytkownika lub grupy użytkowników. Na przykład pliki w C:\Program Files folderze mogą być odczytywane i wykonywane przez wszystkich użytkowników, ale modyfikowane tylko przez użytkownika posiadającego uprawnienia administracyjne. System Windows Vista dodaje obowiązkowe informacje dotyczące kontroli dostępu do list DACL. Listy DACL są głównym przedmiotem kontroli konta użytkownika w systemie Windows Vista i nowszych.

Druga lista ACL, zwana listą kontroli dostępu do systemu (SACL), określa, które interakcje z plikiem lub folderem mają być kontrolowane i czy powinny być rejestrowane, gdy działanie zakończy się pomyślnie, niepowodzeniem lub obiema sytuacjami. Na przykład audyt może być włączony na wrażliwych plikach firmy, aby menedżerowie wiedzieli, kiedy ktoś próbuje je usunąć lub zrobić ich kopię i czy mu się to udaje.

Szyfrowanie

System szyfrowania plików (EFS) zapewnia silne i przejrzyste dla użytkownika szyfrowanie dowolnego pliku lub folderu na woluminie NTFS. EFS działa w połączeniu z usługą EFS, CryptoAPI firmy Microsoft i biblioteką wykonawczą systemu plików EFS (FSRTL). EFS działa poprzez szyfrowanie pliku za pomocą zbiorczego klucza symetrycznego (znanego również jako klucz szyfrowania plików lub FEK), który jest używany, ponieważ szyfrowanie i odszyfrowywanie dużych ilości danych zajmuje stosunkowo niewiele czasu niż w przypadku szyfrowania z kluczem asymetrycznym jest używany. Klucz symetryczny używany do szyfrowania pliku jest następnie szyfrowany kluczem publicznym skojarzonym z użytkownikiem, który zaszyfrował plik, a zaszyfrowane dane są przechowywane w alternatywnym strumieniu danych zaszyfrowanego pliku. Aby odszyfrować plik, system plików używa klucza prywatnego użytkownika do odszyfrowania klucza symetrycznego przechowywanego w strumieniu danych. Następnie używa klucza symetrycznego do odszyfrowania pliku. Ponieważ odbywa się to na poziomie systemu plików, jest to niewidoczne dla użytkownika. Ponadto, w przypadku utraty dostępu użytkownika do swojego klucza, w systemie EFS wbudowano obsługę dodatkowych kluczy deszyfrujących, dzięki czemu agent odzyskiwania może nadal uzyskiwać dostęp do plików w razie potrzeby. Szyfrowanie zapewnione przez NTFS i kompresja zapewniona przez NTFS wzajemnie się wykluczają; jednak NTFS może być używany do jednego, a narzędzie innej firmy do drugiego.

Obsługa EFS nie jest dostępna w wersjach Basic, Home i MediaCenter systemu Windows i należy ją aktywować po zainstalowaniu wersji Professional, Ultimate i Server systemu Windows lub za pomocą narzędzi do wdrażania w przedsiębiorstwie w domenach systemu Windows.

Kontyngenty

Przydziały dyskowe zostały wprowadzone w NTFS v3. Umożliwiają administratorowi komputera z wersją systemu Windows obsługującą NTFS ustawienie progu miejsca na dysku, z którego mogą korzystać użytkownicy. Pozwala także administratorom śledzić, ile miejsca na dysku używa każdy użytkownik. Administrator może określić pewien poziom miejsca na dysku, z którego użytkownik może korzystać, zanim otrzyma ostrzeżenie, a następnie odmówić użytkownikowi dostępu po osiągnięciu górnego limitu miejsca. Przydziały dyskowe nie uwzględniają przezroczystej kompresji plików NTFS , jeśli ta opcja jest włączona. Aplikacje, które sprawdzają ilość wolnego miejsca, zobaczą również ilość wolnego miejsca pozostawioną użytkownikowi, który ma do nich zastosowany przydział.

Punkty naprawcze

Wprowadzone w systemie NTFS v3 punkty ponownej analizy NTFS są używane przez powiązanie znacznika ponownej analizy w atrybucie przestrzeni użytkownika pliku lub katalogu. Firma Microsoft zawiera kilka domyślnych znaczników, w tym dowiązania symboliczne , punkty połączenia katalogów i punkty montowania woluminów . Gdy Menedżer obiektów analizuje wyszukiwanie nazwy systemu plików i napotka atrybut ponownej analizy, dokona ponownej analizy wyszukiwania nazwy, przekazując kontrolowane przez użytkownika dane ponownej analizy do każdego sterownika filtru systemu plików, który jest ładowany do systemu Windows. Każdy sterownik filtru sprawdza dane ponownej analizy, aby sprawdzić, czy są skojarzone z danym punktem ponownej analizy, a jeśli ten sterownik filtru określi dopasowanie, przechwytuje żądanie systemu plików i wykonuje swoją specjalną funkcję.

Zmiana rozmiaru

Począwszy od Windows Vista Microsoft dodał wbudowaną możliwość zmniejszania lub rozszerzania partycji. Jednak ta możliwość nie powoduje przeniesienia fragmentów plików stronicowania ani plików, które zostały oznaczone jako nieprzenośne, więc zmniejszenie woluminu często będzie wymagało przeniesienia lub wyłączenia dowolnego pliku stronicowania , indeksu wyszukiwania systemu Windows oraz wszelkich kopii w tle używanych przez narzędzie Przywracanie systemu . Różne narzędzia innych firm mogą zmieniać rozmiar partycji NTFS.

Wewnętrzne

Uprawnienia systemu plików NTFS na Windows Vista systemu

Wewnętrznie NTFS używa B-drzewa do indeksowania danych systemu plików. Dziennik system plików jest używany w celu zagwarantowania integralności metadanych systemu plików, ale nie zawartość poszczególnych plików. Wiadomo, że systemy korzystające z NTFS mają lepszą niezawodność w porównaniu z systemami plików FAT.

NTFS dopuszcza dowolną sekwencję wartości 16-bitowych do kodowania nazw (nazwy plików, nazwy strumieni, nazwy indeksów itp.) z wyjątkiem 0x0000. Oznacza to , że obsługiwane są jednostki kodu UTF-16 , ale system plików nie sprawdza, czy sekwencja jest poprawna UTF-16 (umożliwia dowolną sekwencję krótkich wartości, nieograniczoną do tych w standardzie Unicode). W przestrzeni nazw Win32 wszystkie jednostki kodu UTF-16 nie rozróżniają wielkości liter, podczas gdy w przestrzeni nazw POSIX rozróżniana jest wielkość liter. Nazwy plików są ograniczone do 255 jednostek kodu UTF-16. Niektóre nazwy są zarezerwowane w katalogu głównym woluminu i nie można ich używać dla plików. Są to $MFT, $MFTMirr, $LogFile, $Volume, $AttrDef, .(kropka), $Bitmap, $Boot, $BadClus, $Secure, $UpCase, i $Extend. .(kropka) i $Extendoba są katalogami; pozostałe to pliki. Jądro NT ogranicza pełne ścieżki do 32 767 jednostek kodu UTF-16. Istnieją pewne dodatkowe ograniczenia dotyczące punktów kodowych i nazw plików.

Sektor rozruchowy partycji (VBR)

Zawartość sektora rozruchowego NTFS (wszystkie wartości z wyjątkiem ciągów są przechowywane w kolejności little endian ).
Przesunięcie bajtów Długość pola Typowa wartość Nazwa pola Cel, powód
0x00 3 bajty 0xEB5290 Instrukcja JMP Powoduje, że wykonywanie jest kontynuowane po strukturach danych w tym sektorze rozruchowym.
0x03 8 bajtów " NTFS    "
Słowo "NTFS", po którym następują cztery końcowe spacje (0x20)
Identyfikator OEM To jest magiczna liczba wskazująca, że ​​jest to system plików NTFS.
0x0B 2 bajty 0x0200 BPB Bajty na sektor Liczba bajtów w sektorze dysku.
0x0D 1 bajt 0x08 Sektory na klaster Liczba sektorów w klastrze. Jeśli wartość jest większa niż 0x80, ilość sektorów wynosi 2 do potęgi wartości bezwzględnej uznania tego pola za ujemną.
0x0E 2 bajty 0x0000 Sektory zastrzeżone, niewykorzystane Ile miejsca jest zarezerwowane przez system operacyjny na początku dysku. To jest zawsze 9.
0x10 3 bajty 0x000000 Nie używany To pole to zawsze 0
0x13 2 bajty 0x0000 Nieużywane przez NTFS To pole to zawsze 0
0x15 1 bajt 0xF8 Deskryptor mediów Rodzaj napędu. 0xF8 służy do oznaczenia dysku twardego (w przeciwieństwie do kilku rozmiarów dyskietek).
0x16 2 bajty 0x0000 Nie używany To pole to zawsze 0
0x18 2 bajty 0x003F Sektory na ścieżkę Liczba sektorów dysku na ścieżce dysku.
0x1A 2 bajty 0x00FF Liczba głów Liczba głowic na dysku.
0x1C 4 bajty 0x0000003F Ukryte sektory Liczba sektorów poprzedzających partycję.
0x20 4 bajty 0x00000000 Nie używany Nieużywane przez NTFS
0x24 4 bajty 0x00800080 EBPB Nie używany Nieużywane przez NTFS
0x28 8 bajtów 0x00000000007FF54A Sektory ogółem Rozmiar partycji w sektorach.
0x30 8 bajtów 0x00000000000000004 $Numer klastra MFT Klaster zawierający główną tabelę plików
0x38 8 bajtów 0x0000000000007FF54 $MFTMirr numer klastra Klaster zawierający kopię zapasową głównej tabeli plików
0x40 1 bajt 0xF6 Bajty lub klastry na segment rekordu pliku Wartość dodatnia oznacza liczbę klastrów w segmencie rekordu pliku. Wartość ujemna oznacza ilość bajtów w segmencie rekordu pliku, w którym to przypadku rozmiar wynosi 2 do potęgi wartości bezwzględnej. (0xF6 = -10 → 2 10 = 1024).
0x41 3 bajty 0x000000 Nie używany To pole nie jest używane przez NTFS
0x44 1 bajt 0x01 Bajty lub klastry na bufor indeksu Wartość dodatnia oznacza liczbę skupień w buforze indeksu. Wartość ujemna oznacza ilość bajtów i używa tego samego algorytmu dla liczb ujemnych, co „Bajty lub klastry na segment rekordu pliku”.
0x45 3 bajty 0x000000 Nie używany To pole nie jest używane przez NTFS
0x48 8 bajtów 0x1C741BC9741BA514 Numer seryjny woluminu Unikalny losowy numer przypisany do tej partycji, aby utrzymać porządek.
0x50 4 bajty 0x00000000 Suma kontrolna, niewykorzystana Podobno suma kontrolna.
0x54 426 bajtów Kod Bootstrap Kod, który ładuje resztę systemu operacyjnego. Wskazują na to pierwsze 3 bajty tego sektora.
0x01FE 2 bajty 0xAA55 Znacznik końca sektora Ta flaga wskazuje, że jest to prawidłowy sektor rozruchowy.

Ten format partycji rozruchowej jest z grubsza oparty na wcześniejszym systemie plików FAT , ale pola znajdują się w różnych lokalizacjach. Niektóre z tych pól, zwłaszcza pola „sektory na ścieżkę”, „liczba głowic” i „ukryte sektory” mogą zawierać wartości fikcyjne na dyskach, na których albo nie mają sensu, albo nie można ich określić.

System operacyjny najpierw patrzy na 8 bajtów w 0x30, aby znaleźć numer klastra $MFT, a następnie mnoży tę liczbę przez liczbę sektorów na klaster (1 bajt znaleziony w 0x0D). Ta wartość to przesunięcie sektora ( LBA ) do $MFT, które opisano poniżej.

Główna tabela plików

W systemie NTFS wszystkie dane plików, katalogów i metaplików — nazwa pliku, data utworzenia, uprawnienia dostępu (przy użyciu list kontroli dostępu ) i rozmiar — są przechowywane jako metadane w głównej tabeli plików ( MFT ). To abstrakcyjne podejście umożliwiło łatwe dodawanie funkcji systemu plików podczas tworzenia systemu Windows NT — przykładem jest dodawanie pól do indeksowania używanych przez oprogramowanie Active Directory . Dzięki temu oprogramowanie do szybkiego wyszukiwania plików może bardzo szybko zlokalizować nazwane lokalne pliki i foldery zawarte w MFT, bez konieczności stosowania żadnego innego indeksu.

Struktura MFT obsługuje algorytmy minimalizujące fragmentację dysku . Wpis w katalogu składa się z nazwy pliku i „identyfikatora pliku” (analogicznie do numeru i-węzła ), który jest numerem rekordu reprezentującym plik w głównej tabeli plików. Identyfikator pliku zawiera również licznik ponownego użycia w celu wykrycia nieaktualnych odwołań. Chociaż bardzo przypomina to W_FID z Files-11 , inne struktury NTFS radykalnie się różnią.

Częściowa kopia MFT, zwana lustrem MFT, jest przechowywana do wykorzystania w przypadku uszkodzenia. Jeśli pierwszy rekord MFT jest uszkodzony, NTFS odczytuje drugi rekord, aby znaleźć plik lustrzany MFT. Lokalizacje obu plików są przechowywane w sektorze rozruchowym.

Metapliki

NTFS zawiera kilka plików, które definiują i organizują system plików. Pod każdym względem większość z tych plików ma strukturę jak każdy inny plik użytkownika (najbardziej osobliwy jest $Volume), ale nie są one bezpośrednio interesujące dla klientów systemu plików. Te metapliki definiują pliki, tworzą kopie zapasowe krytycznych danych systemu plików, buforują zmiany systemu plików, zarządzają alokacją wolnego miejsca, spełniają oczekiwania systemu BIOS , śledzą złe jednostki alokacji oraz przechowują informacje o bezpieczeństwie i wykorzystaniu miejsca na dysku. Cała zawartość znajduje się w nienazwanym strumieniu danych, chyba że wskazano inaczej.

MFT (wpisy od 0 do 26 to metapliki NTFS)
Numer segmentu Nazwa pliku Cel, powód
0 $MFT Opisuje wszystkie pliki w woluminie, w tym nazwy plików, sygnatury czasowe, nazwy strumieni i listy numerów klastrów, w których znajdują się strumienie danych, indeksy, identyfikatory zabezpieczeń oraz atrybuty plików, takie jak „tylko do odczytu”, „skompresowany”, „zaszyfrowany” itp.
1 $MFTMirr Duplikat pierwszych ważnych wpisów $MFT, zwykle 4 wpisy (4 kilobajty ).
2 $LogFile Zawiera dziennik transakcji zmian metadanych systemu plików.
3 $Volume Zawiera informacje o woluminie, a mianowicie identyfikator obiektu woluminu, etykietę woluminu , wersję systemu plików i flagi woluminu (podłączony, zażądano chkdsk, zażądano zmiany rozmiaru pliku $LogFile, zamontowano na NT 4, aktualizację numeru seryjnego woluminu, żądanie uaktualnienia struktury). Te dane nie są przechowywane w strumieniu danych, ale w specjalnych atrybutach MFT: Jeśli jest obecny, identyfikator obiektu woluminu jest przechowywany w rekordzie $OBJECT_ID; etykieta woluminu jest przechowywana w rekordzie $VOLUME_NAME, a pozostałe dane woluminu znajdują się w rekordzie $VOLUME_INFORMATION. Uwaga: numer seryjny woluminu jest przechowywany w pliku $Boot (poniżej).
4 $AttrDef Tabela atrybutów MFT, która kojarzy identyfikatory numeryczne z nazwami.
5 . Katalog główny . Dane katalogowe są przechowywane w atrybutach $INDEX_ROOT i $INDEX_ALLOCATION o nazwach $I30.
6 $Bitmap Tablica wpisów bitowych: każdy bit wskazuje, czy odpowiadający mu klaster jest używany (przydzielony), czy wolny (dostępny do przydziału).
7 $Boot Rekord rozruchowy woluminu (VBR). Ten plik zawsze znajduje się w pierwszych klastrach woluminu. Zawiera kod ładowania początkowego (patrz NTLDR / BOOTMGR ) i blok parametrów BIOS zawierający numer seryjny woluminu i numery klastrów $MFT i $MFTMirr.
8 $BadClus Plik zawierający wszystkie klastry oznaczone jako posiadające uszkodzone sektory . Plik ten upraszcza zarządzanie klastrami przez narzędzie chkdsk, zarówno jako miejsce do umieszczania nowo odkrytych uszkodzonych sektorów, jak i do identyfikowania klastrów, do których nie ma odniesień. Ten plik zawiera dwa strumienie danych, nawet na woluminach bez uszkodzonych sektorów: nienazwany strumień zawiera uszkodzone sektory — w przypadku idealnych woluminów jego długość wynosi zero; drugi strumień ma nazwę $Bad i zawiera wszystkie klastry na woluminie, które nie znajdują się w pierwszym strumieniu.
9 $Secure Baza danych list kontroli dostępu, która zmniejsza obciążenie związane z przechowywaniem wielu identycznych list ACL z każdym plikiem, poprzez unikatowe przechowywanie tych list ACL tylko w tej bazie danych (zawiera dwa indeksy: $SII (Standard_Information ID) i $SDH ( Security Descriptor Hash) , które indeksują strumień o nazwie $SDS zawierające rzeczywistą tabelę ACL).
10 $UpCase Tabela wielkich liter Unicode dla zapewnienia niewrażliwości na wielkość liter w przestrzeniach nazw Win32 i DOS.
11 $Extend Katalog systemu plików zawierający różne opcjonalne rozszerzenia, takie jak $Quota, $ObjId, $Reparse lub $UsnJrnl.
12–23 Zarezerwowane dla wpisów rozszerzeń $MFT. Wpisy rozszerzeń to dodatkowe rekordy MFT zawierające dodatkowe atrybuty, które nie mieszczą się w rekordzie podstawowym. Może się tak zdarzyć, jeśli plik jest wystarczająco pofragmentowany, ma wiele strumieni, długie nazwy plików, złożone zabezpieczenia lub inne rzadkie sytuacje.
24 $Extend\$Quota Przechowuje informacje o przydziale dysku. Zawiera dwa pierwiastki indeksowe o nazwach $O i $Q.
25 $Extend\$ObjId Przechowuje informacje o śledzeniu linków . Zawiera katalog główny i alokację o nazwie $O.
26 $Extend\$Reparse Przechowuje dane punktu ponownej analizy (takie jak dowiązania symboliczne ). Zawiera katalog główny i alokację o nazwie $R.
27– Początek zwykłych wpisów do plików.

Te metapliki są specjalnie traktowane przez Windows, obsługiwane bezpośrednio przez NTFS.SYSsterownik i są trudne do bezpośredniego przeglądania: potrzebne są specjalnie zaprojektowane narzędzia. Począwszy od systemu Windows 7, sterownik NTFS całkowicie zabrania dostępu użytkownikom, co powoduje pojawienie się BSoD za każdym razem, gdy podjęta zostanie próba wykonania pliku metadanych. Jednym z takich narzędzi jest nfi.exe („Narzędzie do informacji o sektorze plików NTFS”), które jest swobodnie rozpowszechniane jako część „Narzędzi obsługi OEM” firmy Microsoft. Na przykład, aby uzyskać informacje o segmencie "$MFT"-Master File Table Segment, używane jest następujące polecenie: nfi.exe c:\$MFTInnym sposobem na ominięcie ograniczenia jest użycie menedżera plików 7-Zip i przejście do ścieżki NTFS niskiego poziomu \\.\X:\(gdzie X:\przypomina dowolny dysk/partycję). Tutaj pojawią się 3 nowe foldery: $EXTEND, [DELETED](pseudofolder, którego 7-Zip używa do dołączania plików usuniętych z systemu plików w celu wyświetlenia) i [SYSTEM](kolejny pseudofolder, który zawiera wszystkie pliki metadanych NTFS). Ta sztuczka może być używany z urządzeń wymiennych ( USB dyski flash, zewnętrzne dyski twarde , karty pamięci SD itp) wewnątrz Windows, ale robi to na aktywnej partycji wymaga dostępu w trybie offline (czyli WinRE ).

Listy atrybutów, atrybuty i strumienie

Dla każdego pliku (lub katalogu) opisanego w rekordzie MFT istnieje liniowe repozytorium deskryptorów strumieni (także nazwanych atrybutami ), spakowanych razem w jeden lub więcej rekordów MFT (zawierających tzw. listę atrybutów ), z dodatkowym wypełnieniem do wypełnienia stały rozmiar 1 KB każdego rekordu MFT, który w pełni opisuje efektywne strumienie skojarzone z tym plikiem.

Każdy atrybut ma typ atrybutu (odwzorowanie liczb całkowitych o stałej wielkości na definicję atrybutu w pliku $AttrDef), opcjonalną nazwę atrybutu (na przykład używaną jako nazwa alternatywnego strumienia danych) oraz wartość reprezentowaną w sekwencji bajtów. W systemie NTFS standardowe dane plików, alternatywne strumienie danych lub dane indeksowe dla katalogów są przechowywane jako atrybuty.

Według $AttrDef niektóre atrybuty mogą być rezydentami lub nierezydentami. Takim przykładem jest atrybut $DATA, który zawiera dane pliku. Gdy atrybut jest rezydentny (reprezentowany przez flagę), jego wartość jest przechowywana bezpośrednio w rekordzie MFT. W przeciwnym razie klastry są przydzielane dla danych, a informacje o lokalizacji klastra są przechowywane jako przebiegi danych w atrybucie.

  • Dla każdego pliku w MFT atrybuty identyfikowane przez typ atrybutu, nazwę atrybutu muszą być unikalne. Dodatkowo system NTFS ma pewne ograniczenia porządkowania tych atrybutów.
  • Istnieje predefiniowany typ atrybutu null, używany do wskazania końca listy atrybutów w jednym rekordzie MFT. Musi być obecny jako ostatni atrybut w rekordzie (cała pozostała przestrzeń dyskowa dostępna po tym zostanie zignorowana i składa się tylko z bajtów dopełniających, aby dopasować rozmiar rekordu w MFT).
  • Niektóre typy atrybutów są wymagane i muszą być obecne w każdym rekordzie MFT, z wyjątkiem nieużywanych rekordów, które są wskazywane przez typy atrybutów zerowych.
    • Tak jest w przypadku atrybutu $STANDARD_INFORMATION, który jest przechowywany jako rekord o stałym rozmiarze i zawiera znaczniki czasu i inne podstawowe atrybuty jednobitowe (kompatybilne z tymi zarządzanymi przez FAT w DOS lub Windows 9x ).
  • Niektóre typy atrybutów nie mogą mieć nazwy i muszą pozostać anonimowe.
    • Dzieje się tak w przypadku standardowych atrybutów lub preferowanego typu atrybutu NTFS „nazwa pliku” lub typu „krótka nazwa pliku”, gdy jest on również obecny (w celu uzyskania zgodności z aplikacjami podobnymi do systemu DOS, patrz poniżej). Możliwe jest również, że plik będzie zawierał tylko krótką nazwę pliku, w takim przypadku będzie to preferowana nazwa wymieniona w Eksploratorze Windows.
    • Atrybuty nazwy pliku przechowywane na liście atrybutów nie sprawiają, że plik jest natychmiast dostępny za pośrednictwem hierarchicznego systemu plików. W rzeczywistości wszystkie nazwy plików muszą być indeksowane oddzielnie w co najmniej jednym innym katalogu na tym samym woluminie. Musi mieć tam swój własny rekord MFT oraz własne deskryptory i atrybuty bezpieczeństwa, które odwołują się do numeru rekordu MFT dla tego pliku. Dzięki temu ten sam plik lub katalog może być kilkakrotnie „dowiązany na stałe” z kilku kontenerów na tym samym woluminie, prawdopodobnie z różnymi nazwami plików.
  • Domyślnym strumieniem danych zwykłego pliku jest strumień typu $DATA, ale z anonimową nazwą, a ADS są podobne, ale muszą być nazwane.
  • Z drugiej strony domyślny strumień danych katalogów ma odrębny typ, ale nie jest anonimowy: mają nazwę atrybutu ("$I30" w NTFS 3+), która odzwierciedla jego format indeksowania.

Wszystkie atrybuty danego pliku można wyświetlić za pomocą narzędzia nfi.exe („Narzędzie do informacji o sektorach plików NTFS”), które jest swobodnie rozpowszechniane jako część „Narzędzi obsługi OEM” firmy Microsoft.

Wywołania systemowe Windows mogą obsługiwać alternatywne strumienie danych. W zależności od systemu operacyjnego, narzędzia i zdalnego systemu plików transfer plików może dyskretnie usuwać strumienie danych. Bezpiecznym sposobem kopiowania lub przenoszenia plików jest użycie wywołań systemowych BackupRead i BackupWrite, które umożliwiają programom wyliczanie strumieni, weryfikację, czy każdy strumień powinien być zapisany na woluminie docelowym i świadome pomijanie niechcianych strumieni.

Atrybuty rezydenta a nierezydenta

Aby zoptymalizować pamięć i zmniejszyć obciążenie we/wy dla bardzo częstego przypadku atrybutów z bardzo małą skojarzoną wartością, NTFS woli umieścić wartość w samym atrybucie (jeśli rozmiar atrybutu nie przekracza wtedy maksymalnego rozmiaru atrybutu rekord MFT), zamiast używania przestrzeni rekordów MFT do wylistowania klastrów zawierających dane; w takim przypadku atrybut nie będzie przechowywał danych bezpośrednio, ale po prostu przechowuje mapę alokacji (w postaci przebiegów danych ) wskazującą na rzeczywiste dane przechowywane w innym miejscu na woluminie. Gdy wartość jest dostępna bezpośrednio z poziomu atrybutu, jest ona nazywana „danymi rezydentnymi” (przez pracowników informatyki śledczej ). Ilość pasujących danych w dużym stopniu zależy od charakterystyki pliku, ale w plikach jednostrumieniowych o niedługich nazwach i bez list ACL często występuje od 700 do 800 bajtów.

  • Niektóre atrybuty (takie jak preferowana nazwa pliku, podstawowe atrybuty pliku) nie mogą być nierezydentne. W przypadku atrybutów nierezydentów ich mapa alokacji musi mieścić się w rekordach MFT.
  • Zaszyfrowane przez NTFS, rzadkie strumienie danych lub skompresowane strumienie danych nie mogą być rezydentne.
  • Format mapy alokacji dla atrybutów nierezydentnych zależy od jej możliwości obsługi rzadkiego przechowywania danych. W obecnej implementacji NTFS, gdy nierezydentny strumień danych został oznaczony i przekonwertowany jako rzadki, nie można go zmienić z powrotem na nierzadkie dane, więc nie może ponownie stać się rezydentnym, chyba że dane te zostaną całkowicie obcięte, odrzucając rzadkie mapa alokacji całkowicie.
  • Gdy atrybut nierezydent jest tak pofragmentowany, że jego efektywna mapa alokacji nie może zmieścić się całkowicie w jednym rekordzie MFT, NTFS przechowuje atrybut w wielu rekordach. Pierwszy z nich nazywa się rekordem podstawowym, a pozostałe rekordami rozszerzenia. NTFS tworzy specjalny atrybut $ATTRIBUTE_LIST do przechowywania informacji mapujących różne części długiego atrybutu na rekordy MFT, co oznacza, że ​​mapa alokacji może być podzielona na wiele rekordów. Sama $ATTRIBUTE_LIST może również być nierezydentna, ale jej własna mapa alokacji musi mieścić się w jednym rekordzie MFT.
  • Gdy istnieje zbyt wiele atrybutów dla pliku (w tym ADS, atrybuty rozszerzone lub deskryptory zabezpieczeń ), tak że nie mogą zmieścić się wszystkie w rekordzie MFT, rekordy rozszerzenia mogą być również używane do przechowywania innych atrybutów, używając tego samego formatu, co jeden używany w podstawowym rekordzie MFT, ale bez ograniczeń przestrzennych jednego rekordu MFT.

Mapa alokacji jest przechowywana w postaci przebiegów danych ze skompresowanym kodowaniem. Każde uruchomienie danych reprezentuje ciągłą grupę klastrów, które przechowują wartość atrybutu. W przypadku plików na woluminie o wielu GB każdy wpis może być zakodowany jako od 5 do 7 bajtów, co oznacza, że ​​rekord MFT o wielkości 1 KB może przechowywać około 100 takich przebiegów danych. Jednakże, ponieważ $ATTRIBUTE_LIST ma również limit rozmiaru, niebezpieczne jest posiadanie więcej niż 1 miliona fragmentów pojedynczego pliku na woluminie NTFS, co oznacza również, że generalnie nie jest dobrym pomysłem stosowanie kompresji NTFS na pliku większy niż 10  GB.

Sterownik systemu plików NTFS czasami próbuje przenieść dane niektórych atrybutów, które mogą stać się nierezydentne w klastrach, a także będzie próbował przenieść dane przechowywane w klastrach z powrotem do atrybutu w rekordzie MFT, na podstawie priorytet i preferowane zasady porządkowania oraz ograniczenia rozmiaru.

Ponieważ pliki rezydentne nie zajmują bezpośrednio klastrów („jednostek alokacji”), wolumin NTFS może zawierać więcej plików na woluminie niż jest klastrów. Na przykład  formaty NTFS partycji 74,5 GB z 19 543 064 klastrami po 4  KB. Odjęcie plików systemowych (  plik dziennika 64 MB, plik mapy bitowej o wielkości 2 442 888 bajtów i około 25 klastrów stałego obciążenia) pozostawia 19 526 158 klastrów wolnych dla plików i indeksów. Ponieważ na klaster są cztery rekordy MFT, ten wolumin teoretycznie może pomieścić prawie 4 × 19 526 158 = 78 104 632 plików rezydentnych.

Zamki oportunistyczne

Oportunistyczne blokady plików (oplocks) umożliwiają klientom zmianę strategii buforowania dla danego pliku lub strumienia w celu zwiększenia wydajności i zmniejszenia wykorzystania sieci. Blokady mają zastosowanie do danego otwartego strumienia pliku i nie wpływają na blokadę w innym strumieniu.

Oplocks można używać do przezroczystego dostępu do plików w tle. Klient sieciowy może unikać zapisywania informacji do pliku na zdalnym serwerze, jeśli żaden inny proces nie uzyskuje dostępu do danych, lub może buforować dane odczytu z wyprzedzeniem, jeśli żaden inny proces nie zapisuje danych.

Windows obsługuje cztery różne typy blokad:

  • Poziom 2 (lub współdzielony) oplock: wielu czytelników, brak pisarzy (tj. buforowanie odczytu).
  • Poziom 1 (lub wyłączny) oplock: wyłączny dostęp z dowolnym buforowaniem (tj. buforowaniem odczytu i zapisu).
  • Batch oplock (również ekskluzywny): strumień jest otwierany na serwerze, ale zamykany na komputerze klienta (tj. odczyt, zapis i obsługa buforowania).
  • Filter oplock (również ekskluzywny): aplikacje i filtry systemu plików mogą „wycofać się”, gdy inni próbują uzyskać dostęp do tego samego strumienia (tj. buforowanie odczytu i zapisu) (od Windows 2000)

Blokady oportunistyczne zostały ulepszone w systemach Windows 7 i Windows Server 2008 R2 za pomocą kluczy oplock dla poszczególnych klientów.

Czas

Windows NT i jego potomkowie przechowują wewnętrzne znaczniki czasu jako UTC i dokonują odpowiednich konwersji do celów wyświetlania; wszystkie znaczniki czasu NTFS są w UTC.

Ze względów historycznych wszystkie wersje systemu Windows, które nie obsługują systemu NTFS, przechowują czas wewnętrznie jako czas strefy lokalnej, a zatem wszystkie systemy plików — inne niż NTFS — obsługiwane przez aktualne wersje systemu Windows, tak samo. Oznacza to, że gdy pliki są kopiowane lub przenoszone między partycjami NTFS i innymi niż NTFS, system operacyjny musi konwertować znaczniki czasu w locie. Ale jeśli niektóre pliki są przenoszone, gdy obowiązuje czas letni (DST), a inne pliki są przenoszone, gdy obowiązuje czas standardowy , mogą wystąpić pewne niejasności w konwersjach. W rezultacie, szczególnie krótko po jednym z dni, w których zmienia się czas strefy lokalnej, użytkownicy mogą zauważyć, że niektóre pliki mają sygnatury czasowe niepoprawne o jedną godzinę. Ze względu na różnice we wdrażaniu DST w różnych jurysdykcjach może to skutkować potencjalnym błędem sygnatury czasowej wynoszącym do 4 godzin w ciągu dowolnych 12 miesięcy.

Interoperacyjność

Podczas gdy różne wersje NTFS są w większości w pełni zgodne w przód i wstecz , istnieją techniczne względy dotyczące montowania nowszych woluminów NTFS w starszych wersjach systemu Microsoft Windows. Dotyczy to podwójnego rozruchu i zewnętrznych przenośnych dysków twardych. Na przykład próba użycia partycji NTFS z „Poprzednimi wersjami” (czyli kopią woluminu w tle ) w systemie operacyjnym, który jej nie obsługuje, spowoduje utratę zawartości poprzednich wersji. Narzędzie wiersza polecenia systemu Windows o nazwie convert.exe może konwertować obsługiwane systemy plików na NTFS, w tym HPFS (tylko w systemie Windows NT 3.1, 3.5 i 3.51), FAT16 i FAT32 (w systemie Windows 2000 i nowszych).

Począwszy od wersji 1709 systemu Windows 10, znanej jako aktualizacja Fall Creators, firma Microsoft wymaga, aby struktura plików OneDrive znajdowała się na dysku NTFS. Dzieje się tak, ponieważ funkcja OneDrive Files On-Demand wykorzystuje punkty ponownej analizy NTFS do łączenia plików i folderów przechowywanych w OneDrive z lokalnym systemem plików, co sprawia, że ​​plik lub folder nie nadaje się do użytku z jakąkolwiek wcześniejszą wersją systemu Windows, z dowolnym innym sterownikiem systemu plików NTFS, lub dowolny system plików i narzędzia do tworzenia kopii zapasowych, które nie zostały zaktualizowane w celu ich obsługi.

Realizacje

FreeBSD 3.2 wydany w maju 1999 zawierał obsługę NTFS tylko do odczytu napisaną przez Semena Ustimenko. Implementacja ta została przeniesiona do NetBSD przez Christosa Zoulasa i Jaromira Dolecka i wydana z NetBSD 1.5 w grudniu 2000. Implementacja systemu NTFS FreeBSD została również przeniesiona do OpenBSD przez Juliena Bordeta i oferuje domyślnie natywną obsługę NTFS tylko do odczytu na platformach i386 i amd64 jako wersji 4.9 wydanej 1 maja 2011 r.

Jądro Linuksa w wersjach 2.1.74 i nowszych zawiera sterownik napisany przez Martina von Löwisa, który ma możliwość odczytu partycji NTFS; wersje jądra 2.5.11 i późniejsze zawierają nowy sterownik napisany przez Antona Altaparmakova ( Uniwersytet Cambridge ) i Richarda Russona, który obsługuje odczyt plików. Możliwość zapisu do plików została wprowadzona w wersji jądra 2.6.15 w 2006 roku, która umożliwia użytkownikom zapisywanie do istniejących plików, ale nie pozwala na tworzenie nowych. Sterownik NTFS firmy Paragon (patrz niżej) został włączony do jądra w wersji 5.15 i obsługuje odczyt/zapis na normalnych, skompresowanych i rzadkich plikach, a także odtwarzanie dziennika.

Mac OS X 10.3 zawierał implementację tylko do odczytu systemu NTFS Ustimenko z FreeBSD. Następnie w 2006 roku firma Apple zatrudniła Antona Altaparmakova do napisania nowej implementacji NTFS dla systemu Mac OS X 10.6 . Natywna obsługa zapisu w systemie NTFS jest zawarta w wersji 10.6 i nowszych, ale nie jest domyślnie aktywowana, chociaż istnieją obejścia umożliwiające włączenie tej funkcji. Jednak raporty użytkowników wskazują, że funkcjonalność jest niestabilna i powoduje panikę jądra .

Captive NTFS , sterownik „ opakujący ”, który używa własnego sterownika Windows ntfs.sys , istnieje dla systemu Linux. Został zbudowany jako program Filesystem in Userspace (FUSE) i wydany na licencji GPL, ale prace nad Captive NTFS przerwano w 2006 roku.

NTFS-3G jest darmową, licencjonowaną przez GPL implementacją systemu FUSE systemu plików NTFS, która została początkowo opracowana jako sterownik jądra Linuksa przez Szabolcs Szakacsits. Został przepisany jako program FUSE do pracy na innych systemach obsługiwanych przez FUSE, takich jak macOS , FreeBSD, NetBSD, OpenBSD , Solaris, QNX i Haiku i umożliwia odczytywanie i zapisywanie na partycjach NTFS. Komercyjna wersja NTFS-3G o zwiększonej wydajności, zwana „ Tuxera NTFS for Mac”, jest również dostępna u programistów NTFS-3G.

Paragon Software Group sprzedaje sterownik do odczytu i zapisu o nazwie NTFS dla systemu Mac OS X , który jest również dołączany do niektórych modeli dysków twardych Seagate .

Pakiet NetDrive dla OS/2 (i pochodnych, takich jak eComStation i ArcaOS ) obsługuje wtyczkę, która umożliwia dostęp do odczytu i zapisu woluminów NTFS.

Istnieje darmowy do użytku osobistego sterownik odczytu/zapisu dla MS-DOS firmy Avira o nazwie „NTFS4DOS”.

Ahead Software opracowało sterownik „NTFSREAD” (wersja 1.200) dla DR-DOS 7.0x w latach 2002-2004. Był on częścią ich oprogramowania Nero Burning ROM .

Zobacz też

Bibliografia

Dalsza lektura