# New Technology File System

New Technology File System (NTFS) is het bestandssysteem dat gebruikt wordt door Windows NT en hoger. NTFS is gebaseerd op HPFS, het bestandssysteem dat door Microsoft werd ontwikkeld voor OS/2 als een vervanging voor het oudere FAT-bestandssysteem dat MS-DOS gebruikte. NTFS heeft enkele verbeteringen ten opzichte van FAT, zoals de ondersteuning van "metagegevens" en bestandsbeveiliging. Bovendien maakt het gebruik van bepaalde gegevensstructuren die de prestaties, betrouwbaarheid en gebruik van schijfruimte verbeteren.

## Omzetting

Vanuit Windows XP is het mogelijk om een FAT32-volume (partitie) naar NTFS om te zetten, maar niet andersom. Dit gebeurt door middel van het convert.exe-programma, dat standaard meegeleverd wordt met Windows NT 4.0 en hoger. Programma's als PartitionMagic van Norton en het opensourceprogramma NTFSResize kunnen de grootte van NTFS-volumes aanpassen. Sinds Windows Vista kan het besturingssysteem dit zelf ook.

## Versies

NTFS bestaat in verschillende versies:
* 1.0, 1.1 en 1.2 van NT 3.51 en NT 4.0
* 3.0 van Windows 2000
* 3.1 van Windows XP en hoger
Deze versies worden soms ook 4.0, 5.0 en 5.1 genoemd, volgens het versienummer van Windows waarmee ze samenhangen. Nieuwere versies bevatten nieuwe mogelijkheden. Windows 2000 bijvoorbeeld introduceerde quota en Windows Vista introduceerde Transactional NTFS, symbolische links en zelfherstelling van het volume.

## Werking

In NTFS wordt alles dat te maken heeft met een bestand (de naam, aanmaakdatum, toegangsmachtigingen en ook de inhoud) bewaard als metadata. Door deze aanpak konden achteraf nieuwe mogelijkheden toegevoegd worden – een voorbeeld is de toevoeging van indexvelden gebruikt door de Active Directory. Bestandsnamen worden bewaard in Unicode (gecodeerd als UTF-16).
Intern gebruikt NTFS B+-bomen om gegevens in het bestandssysteem te indexeren. Hoewel dit moeilijker te implementeren is, geeft het soms een snellere bestandstoegang. De details hiervan zijn niet vrijgegeven, waardoor andere fabrikanten niet gemakkelijk hulpprogramma's kunnen maken om NTFS te verwerken.
NTFS-volumes kunnen door Linux gelezen (niet geschreven) worden sinds versie 2.2.0. Linux 2.6 bevat een nieuwe driver met beperkte schrijfmogelijkheid (alleen bestaande bestanden en bestanden zonder schrijfbeveiliging). Het maken en verwijderen van mappen wordt momenteel ondersteund door NTFS-3G. Tegenwoordig is het schrijven naar NTFS wel mogelijk met Linux.
Mac OS X ondersteunt sinds versie 10.4 alleen het lezen van NTFS. Wanneer er gebruikgemaakt wordt van MacFUSE is het ook mogelijk om te schrijven naar NTFS-partities door middel van NTFS-3G.
De master file table (MFT) bevat hoofdzakelijk metadata over elk bestand en elke directory op een NTFS-bestandssysteem. Ze bevat gegevens zoals de plaats, de grootte en de machtigingen. De tabel wordt gebruikt om schijffragmentatie tegen te gaan.

## Kenmerken
### Alternate data streams (ADS)

    ADS laat toe dat een bestand meerdere datastreams bevat. WordPad gebruikt dit bijvoorbeeld om metadata over het bestand op te slaan. De extra data worden niet aangegeven in de bestandsgrootte, en gaat verloren als het bestand verwijderd wordt of gekopieerd naar een FAT-partitie (bijvoorbeeld een diskette of een USB-stick).

### Quota

    Bestandsquota werden toegevoegd in NTFS 3.0. Een beheerder kan een maximum schijfruimte opgeven die door een gebruiker mag ingenomen worden.

### Sparse files

    Sparse files zijn bestanden waarbij alleen de nuttige data (niet 'nul' bytes) wordt opgeslagen op schijf. Deze functie wordt ondersteund voor zowel gecomprimeerde als niet-gecomprimeerde bestanden.

### Volume mount points

    Naar analogie met Unix-mount points, kunnen bijkomende bestandssystemen gekoppeld worden zonder dat zij een schijfletter (zoals C: of D:) nodig hebben.

### Junction points

    Vergelijkbaar met volume mount points, maar ze verwijzen naar andere mappen in het bestandssysteem in plaats van volumes. Een map C:\voorbeeldmap kan bijvoorbeeld met een folder junction verwijzen naar een andere map D:\gekoppeldemap. Alles wat in de eerste map wijzigt, gebeurt in feite in de tweede.

### Hard links

    Zoals junction points, maar voor bestanden in plaats van mappen.

### Bestandscompressie

    NTFS kan bestanden comprimeren, vergelijkbaar met een zipbestand. De bestandscompressie die gebruikt wordt is een variant op het LZ77-algoritme en is transparant voor de gebruiker. Deze functie is niet te verwarren met gecomprimeerde mappen, die eigenlijk gewoon zipbestanden zijn.

### Encrypting File System (EFS)

    Biedt transparante versleuteling voor bestanden. Deze versleuteling is gebonden aan de gebruikersaccount en het gebruikerswachtwoord.

### Transactional NTFS (TxF)

    Transactional NTFS werd toegevoegd in Windows Vista en laat applicaties toe wijzigingen in het bestandssysteem samen te brengen in een transactie. De transactie zorgt ervoor dat alle veranderingen worden toegepast, of dat geen enkele verandering wordt toegepast.

## Beperkingen
### Maximale volumegrootte

    In theorie is de maximale volumegrootte in NTFS 2$^{64}$−1 clusters. In Windows XP Professional is dit echter in de praktijk maar 2$^{32}$−1 clusters. Met standaard 4 KiB-clusters geeft dit een maximale grootte van 16 tebibytes (TiB) per volume.

### Maximale bestandsgrootte

    Theoretisch 16 exbibytes (2$^{64}$ bytes). Praktisch: 16 TiB (2$^{44}$ bytes). Windows kan geen uitvoerbare bestanden (executables) uitvoeren die groter zijn dan 2 gigabyte.

### Alternate data streams (ADS)

    Bij bestanden die alternate data streams bevatten, moet men uitkijken als men deze naar een ander bestandssysteem kopieert. Afhankelijk van het programma dat gebruikt wordt om bestanden te kopiëren naar een ander volume (zoals een USB-stick of een floppy geformatteerd met FAT) worden streams buiten de inhoud van het bestand zelf mogelijk verwijderd zonder interactie van de gebruiker. Windows Verkenner laat hierbij een dialoog zien.

### Hoogste datum

    De hoogste datum die op een NTFS-bestandssysteem gebruikt kan worden is 28 mei 60056. Dit komt doordat NTFS bestandsdatums opslaat met een grootte van 64 bits en een resolutie van 100 nanoseconden.

### Gereserveerde bestandsnamen

    Er zijn enkele bestandsnamen gereserveerd op een NTFS-volume, maar alleen in de hoofddirectory van het bestandssysteem. Dit zijn voornamelijk elementaire bestanden die nodig zijn voor de goede werking van het bestandssysteem. De namen zijn: $MFT, $MFTMirr, $LogFile, $Volume, $AttrDef, . (punt), $Bitmap, $Boot, $BadClus, $Secure, $Upcase en $Extend. $Extend en . (punt) zijn beide mappen, de andere zijn bestanden.

## Vergelijking met andere bestandssystemen

In de tabel hieronder wordt NTFS vergeleken met FAT (Windows), HFS (Mac) en JFS (IBM).
| | NTFS | exFAT | FAT32 | FAT16 | HFS | JFS | HFS+ | ZFS |
| Maximale bestandsgrootte | beperkt door de schijfruimte | 16 exbibytes | 4 gigabyte | 2 gigabyte | 2 gigabyte | 4 petabyte | 8 exabyte | 16 exabyte |
| Maximale programmagrootte (.exe) | 2 gigabyte | | | | | | | |
| Maximale schijfgrootte | 256 terabyte | 128 PiB theoretische max, 512 TiB aanbevolen max | 32 gigabyte** | 2 gigabyte | 2 terabyte | 32 petabyte | 16 exabyte | n.v.t. |
| Ontwerpjaar | 1993 | 2006 | 1996 | 1977 | 1985 | 1990 | 1998 | 2005 |
| Lezen | Windows OSX Linux | Windows OSX Linux | Windows OSX Linux | Windows OSX Linux | Mac OS Mac OS X | Mac OS X Linux IBM AIX | Mac OS Mac OS X | zie art. |
| Schrijven | Windows OSX (*) Linux | Windows OSX Linux | Windows OSX Linux | Windows OSX Linux | Mac OS Mac OS X | Mac OS X Linux IBM AIX | Mac OS Mac OS X | |
(*) Om vanuit OS X te schrijven naar een NTFS-schijf is extra software nodig zoals Paragon NTFS of NTFS-3G.
(**)Dit is een theoretisch maximale grootte, dit kan met behulp van externe hulpmiddelen uit worden gebreid tot 2 TB.
Standaard is het niet mogelijk om vanaf een Windowsmachine naar een JFS-geformatteerde schijf te schrijven of lezen. Middels software (MacDrive), is het schrijven en lezen naar een JFS-schijf onder Windows wel mogelijk.