New Technology File System

Restez toujours informé : suivez-nous sur Google (☆)

Introduction

NTFS
DéveloppeurMicrosoft
Nom anglaisNew Technology File System
Introductionjuillet 1993

(Windows NT 3.1)
Identificateur de partition0x07 (MBR)

EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
Structure
Contenu des répertoiresB+ tree
Allocation de fichiersB+ tree
Mauvais blocsB+ tree
Limitations
Taille maximale de fichieren pratique 16 TiB

(en théorie 16 EiB)
Nombre maximal de fichiers4 294 967 295 (2 − 1)
Taille maximale du nom de fichiers255 caractères (UTF-16)
Taille maximale de volumeen pratique 256 TiB

(en théorie 16 EiB)
Caractères autorisés dans les noms de fichiersUnicode (UTF-16), tout caractère à l'exception de "/"
Fonctionnalités
Dates enregistréesCréation, modification, accès
Plage de dates1 janvier 1601 - 28 mai 60056
ForksOui (Alternate Data Streams, voir (en) Fork (filesystem))
AttributsLecture seule, caché, système, archive
PermissionsACL
Compression intégréePar fichier, LZ77 (à partir de Windows NT 3.51)
Chiffrement intégréPar fichier,

DES-X (à partir de Windows 2000),

Triple DES (à partir de Windows XP),

AES (Windows XP Service Pack 1, Windows 2003 et suivants)

NTFS (New Technology File System) est un système de fichiers conçu pour Windows NT (et ses successeurs chez Microsoft) pour stocker des données sur disque dur. Il s’inspire d’HPFS, le système de fichiers conçu pour OS/2. Le sigle NTFS désigne en anglais NT File System (littéralement « système de fichiers de la génération NT »). Ce système est arrivé avec la première version de Windows NT, en 1993.

NTFS permet de :

  • mettre des droits très spécifiques (ACL) sur les fichiers et répertoires : lecture, écriture, exécution, appropriation, etc. ;
  • chiffrer des fichiers avec EFS (Encrypting File System) ;
  • compresser des fichiers ;
  • d'établir des quotas par volume.

Histoire

NTFS a été lancé en 1993 avec le système multi-utilisateur Windows NT. En effet, la technologie FAT, qui était utilisée par MS-DOS et les versions grand public de Windows ne permettait que difficilement d’offrir un système de fichiers multi-utilisateurs :

  • pas de zone indiquant le propriétaire du fichier ;
  • pas de date du dernier accès en lecture ;
  • pas de droits d’accès de groupe.

Il cherchait également à assurer une bonne performance dans un contexte multi-tâche, c’est-à-dire de nombreux programmes accédant simultanément ou presque au disque dur. La tâche critique était donc l'ordonnancement des requêtes.

NTFS sous GNU/linux

NTFS est peu documenté, à dessein selon certains, car, pour cette raison, et aussi parce que l’on n’avait pas pu effectuer de rétroconception complète à son sujet, les pilotes GNU/Linux n’y donnaient accès qu’en lecture et partiellement en écriture jusqu'à l'arrivée du pilote libre NTFS-3G. Celui-ci n'est pas complet, mais permet des lecture/écriture sur du NTFS.

Historique des pilotes (pour permettre l'accès et l'écriture sur des partitions NTFS non compressées) :

  • Le premier, Linux-NTFS ne permet que la lecture et l'écriture en mode remplacement seulement (considéré comme stable depuis le noyau 2.6.15), mais ni la création, ni la suppression de fichiers.
  • Un deuxième, Captive (Captive NTFS), qui est beaucoup plus lent, mais permet la lecture et l'écriture de manière plus sûre pour la partition, est une encapsulation de la DLL de Windows. Il fonctionne plutôt bien, mais peut planter, par exemple sur l'écriture de gros fichiers.
  • Le logiciel commercial Paragon (voir Paragon).
  • Le pilote libre NTFS-3G, en version stable 1.0 depuis le 21 février 2007, permet une écriture fiable et la création de fichiers sur les partitions NTFS.

Améliorer les performances au détriment de la traçabilité

À chaque accès à un fichier ou à un répertoire, la date de dernier accès est mise à jour (cela fait partie de la norme POSIX.1 c'est-à-dire IEEE 1003.1). Il existe des cas extrêmes où cela peut être prohibitif pour les performances. Dans ce cas, il est possible de l'éviter : dans la base de registre, il faut créer une valeur nommée NtfsDisableLastAccessUpdate (type DWORD, de donnée 1) dans la clé HKLM\SYSTEM\CurrentControlSet\Control\FileSystem.

Ce paramètre NtfsDisableLastAccessUpdate de Windows est à peu près l'équivalent du paramètre noatime d'Unix dans la commande mount (et dans le fichier de configuration fstab), la différence principale est que la clef de registre a un impact sur la totalité des lecteurs NTFS accédés alors que noatime peut être individuellement activé ou non sur chaque file-system linux.