Souborový systém NTFS byl navržen pro Windows NT. NT také podporují nebo podporovaly HPFS (navržený pro OS/2) a FAT (navržený pro DOS), ale tyto souborové systémy mají omezené možnosti a nesplňují podmínky kladené dnešními potřebami. Těmito nedostatky jsou zejména omezená velikost disku a bezpečnost. Rovněž FAT32 podporovaný Windows 2000 tyto požadavky nesplňuje.
NTFS byl navržen na konci 80 let při součastně zahájeném vývoji NT a lze říct, že byl navržen, aby splňoval nejen součastné, ale i předpokládané požadavky.
Disky (resp. partition) většiny souborových systémů jsou děleny na logické jednotky nazývané clustery. FAT používá 16-bitovou identifikaci clusterů, proto může adresovat maximálně 65536 clusterů. Velikost clusteru je tedy přímo úměrná na velikosti disku. Větší clustery způsobují větší vnitřní fragmentaci a větší plýtvání s prostorem na disku. Například 250-ti bajtový soubor na disku s 16 kB clustery zabírá celý cluster a více než 15 kB je nevyužito.
Vývojáři FAT a HPFS nevěnovali pozornost bezpečnosti, ale NTFS používá stejný bezpečnostní model jako NT. Seznamy řízení libovolného přístupu (Discretionary access control lists - DACL) a seznamy řízení systémového přístupu (system access control lists - SACL) řídí, kdo vykoná akci se souborem a zajistí její zaznamenání.
FAT používá pro pojmenování souborů 8-bitové ASCII kódování. V NTFS je použito 16-bitové kódování Unicode, což umožňuje pojmenovat soubor v libovolném jazyce.
FAT nemá žádné opatření proti chybám na disku. Při pádu systému se systémové struktury stát nekonzistentní, což může způsobit ztrátu dat. NTFS má zabudováno transakční zaznamenávání akcí, proto se může při pádu systému pokusit obnovit data při jejich minimální ztrátě.
|
|
|
| Velikost svazku | Velikost clusteru |
| 512MB nebo méně | 512 bajtů |
| 513MB-1024MB | 1KB |
| 1025MB-2048MB | 2KB |
| 2049MB a více | 4KB |
K uživatelským datům jsou přidružena tzv. metadata, ve kterých jsou informace o organizaci dat na disku. Jestliže inicializujete NTFS disk, NTFS vytvoří 11 souborů s metadaty. Tyto soubory nejsou normálně viditelné z nějakého souborového manažeru, ale můžete je zobrazit, když víte jak. Můžete je zobrazit napsáním do příkazového řádku:
dir /ah <jmenosouboru>
Například:
C:\>dir /ah $badclus
Svazek v jednotce C nemá žádnou jmenovku.
Sériové číslo svazku je BCF6-0C04
Výpis adresáře C:\
29.03.99 11:38 0 $BadClus
1 souborů 0 bajtů
964 798 464 bajtů volných
|
|
||
| MFT jméno | Záznam | Popis |
| $MFT | 0 | Master File Table — hlavní část NTFS |
| $MFTMIRR | 1 | Kopie prvních 16-ti záznamů MFT |
| $LOGFILE | 2 | Transakční logovací soubor |
| $VOLUME | 3 | Obsahuje sériové číslo svazku, čas vytvoření |
| $ATTRDEF | 4 | Definice atributů |
| . | 5 | Kořenový adresář disku |
| $BITMAP | 6 | Obsahuje mapu použití clusterů (použité vs. volné) |
| $BOOT | 7 | Boot record jednotky |
| $BADCLUS | 8 | Seznam špatných clusterů na disku |
| $QUOTA | 9 | Obsahuje informace o uživatelských kvótách — nepoužito před NT 5.0 NTFS |
| $UPCASE | 10 | Přidělení velkých znaků k malým |
$BITMAP je velké pole bitů, kde každému bitu odpovídá cluster na disku. Když je bit 0, cluster je prázdný, jinak je použitý. NTFS udržuje tento soubor ke sledování volných clusterů na disku k jejich přidělení pro nová data.
Podobně jako v souborovém systému FAT je hlavní částí file allocation table, tak v NTFS je hlavní částí MFT, protože udržuje informace o rozložení všech souborů, adresářů i metadat na disku. MFT je rozdělena na jednotky, které se nazývají záznamy. V jednom nebo více MFT záznamech NTFS ukládá metadata, která popisují vlastnosti souboru nebo adresáře (bezpečnostní nastavení, atributy) a jeho umístění na disku. Protože MFT je také soubor, je i on zaznamenán v MFT. Uložení informací v těchto záznamech umožňuje, aby MFT mohla růst nebo zmenšovat se. NTFS vnitřně určuje soubory a adresáře podle pozice jejich záznamů v MFT, které označují začátek jejich metadat. Soubory metadat v tabulce 2 mají určené první záznamy v MFT. Velikost záznamu je obvykle 1kB, ale může být i větší.
$MFTMIRR je další opatření proti ztrátě dat. $MFTMIRR obsahuje kopii prvních 16 záznamů MFT a NTFS ukládá tento soubor uprostřed disku (MFT blízko začátku disku). Jestliže má NTFS problém při čtení disku, použije kopii. Bootovací záznam NTFS disku (512 bajtů na začátku disku) obsahuje pozici MFT i její kopie. Rychlost přístupu do MFT hraje rozhodující roli v celkovém výkonu NTFS, proto se NTFS snaží tento přístup maximálně zrychlit. Protože MFT je soubor, který může růst a zmenšovat se, může být fragmentovaný (rozdělený do více částí). Tato fragmentace vzniká, protože NTFS nemůže přidělit souvislý prostor pro MFT, protože velikost MFT nelze dopředu určit.
Přístup k souboru je nejrychlejší, jestliže celý soubor je v jednom souvislém bloku clusterů, ale fragmentovaná MFT může způsobit opakované čtení záznamu, což snižuje výkon. Aby se předcházelo fragmentaci, NTFS vytváří oblasti clusterů okolo MFT, ve kterých zabraňuje ukládání jiných souborů a adresářů. Tato oblast (MFT-Zóna) snižuje pravděpodobnost fragmentace MFT. NTFS uvolní tuto oblast pouze, jestliže je na disku málo volného prostoru. Bohužel NTFS nenechá defragmentovací nástroje defragmentovat MFT.

NTFS používá k ukládání všech informací o souborech a adresářích atributy. Ve Windows NT 4.0 je v NTFS 14 atributů. Na disku se atributy dělí do dvou částí: hlavička a data. V hlavičce je uloženo: typ, jméno a příznaky atributu, které určují umístění dat atributu. Pro lepší výkon NTFS jsou data atributů raději umístněna v MFT záznamu, je-li to možné, než v jiném clusteru. Jestliže jsou data atributu uložena v MFT záznamu je atribut "rezidentní" jinak je "nerezidentní". Atribut může být rezidentní pouze tehdy, jestliže data atributu mají takovou velikost, aby mohla být umístěna v MFT záznamu. Obvyklá velikost MFT záznamu je 1kB. Jméno souboru, standardní informace a bezpečnostní atributy jsou vždy rezidentní.
|
|
|
| Typ atributu | Popis |
| $VOLUME_VERSION | Verze svazku |
| $VOLUME_NAME | Jméno svazku disku |
| $VOLUME_INFORMATION | NTFS verze a dirty příznak |
| $FILE_NAME | Jméno souboru nebo adresáře |
| $STANDARD_INFORMATION | Časová razítka souboru a příznaky - skrytý, systémový a pouze pro čtení |
| $SECURITY_DESCRIPTOR | Bezpečnostní informace |
| $DATA | Data souboru |
| $INDEX_ROOT | Obsah adresáře |
| $INDEX_ALLOCATION | Obsah adresáře |
| $BITMAP | Mapování obsahu adresáře |
| $ATTRIBUTE_LIST | Popisuje hlavičky "nerezidentních" atributů |
| $SYMBOLIC_LINK | Nepoužitý |
| $EA_INFORMATION | Atribut pro slučitelnost s OS/2 |
| $EA | Atribut pro slučitelnost s OS/2 |

Jestliže se data pro adresář vejdou do MFT záznamu, jsou uložena atributu "index root". Jakmile velikost dat překročí možnosti MFT záznamu, NTFS použije atribut "index buffers" k uložení dalších dat. Tento atribut určuje umístnění bloku dat pro adresář. Na NT 4.0 mají tyto bloky velikost 4 kB.
Velikost logovacího souboru (obvykle 2 až 4 MB) je závislá na velikosti disku. Logovací soubor není naplněn, dokud NTFS nazajistí, že redo a undo záznamy, které se ukládají do logovacího souboru, nejsou požadovány pro obnovu. NTFS obnovuje logovací soubor periodicky každých 5 sekund.
Přestože matadatový soubor $QUOTA existoval již ve verzi NT 3.5, kvóty byly implementovány až ve verzi NT 5.0. NTFS přiděluje kvóty na uživatelském základě a soubor $QUOTA v dalších metadatech ($Extend) ukládá specifikace kvót pro jednotlivé svazky. Kvóta určuje limit množství dat uživatele na svazku.