Introduction
La partition NTFS, soit l'abréviation de New Technology File System, est un système de fichiers moderne conçu par Microsoft pour les systèmes d'exploitation de la famille Windows NT. Contrairement aux anciennes partitions FAT12, FAT16 et FAT32, NTFS repose sur une structure de type B+ Tree, ce qui lui permet d'offrir une gestion beaucoup plus rapide et efficace des fichiers, particulièrement lorsque le volume contient plusieurs milliers, voire plusieurs millions de fichiers. Cette organisation optimise les recherches, les insertions et les suppressions tout en limitant la fragmentation des informations de gestion.
NTFS a été développé afin de répondre aux besoins des environnements professionnels nécessitant une meilleure fiabilité, une plus grande sécurité et une capacité d'entreposage largement supérieure aux anciens systèmes de fichiers. En plus de supporter des partitions de très grande taille, il intègre des mécanismes de récupération après incident, de journalisation des opérations et de protection des données permettant de réduire les risques de corruption lors d'une panne du système ou d'une coupure d'alimentation.
Par rapport aux systèmes FAT, NTFS introduit également de nombreuses fonctionnalités avancées telles que les attributs étendus, les métadonnées, les listes de contrôle d'accès (ACL), les flux de données alternatifs (Alternate Data Streams), les noms de fichiers longs compatibles Unicode, la compression transparente, le chiffrement EFS, les quotas de disque ainsi que les points de réanalyse utilisés notamment pour les liens symboliques et les points de montage. Toutes ces caractéristiques en font aujourd'hui le système de fichiers de référence pour la quasi-totalité des versions modernes de Windows, tant sur les ordinateurs personnels que sur les serveurs professionnels.
Version
Depuis son apparition avec Windows NT 3.1, le système de fichiers NTFS a connu plusieurs évolutions importantes. Chaque nouvelle version a apporté des améliorations concernant la fiabilité, les performances, la sécurité ou encore la prise en charge de nouvelles fonctionnalités. Microsoft a conservé une excellente compatibilité entre les différentes versions afin de permettre aux nouvelles éditions de Windows de continuer à lire les partitions créées par les versions précédentes, tout en profitant des nouvelles possibilités offertes par les versions les plus récentes.
Voici la liste des différentes versions de la partition NTFS :
| Version | Alias | Système d'exploitation | Date de publication |
|---|---|---|---|
| 1.0 | Windows NT 3.1 | Mi-1993 | |
| 1.1 | Windows NT 3.5 | Automne 1994 | |
| 1.2 | «NTFS 4.0» | Windows NT 3.51 | mi-1995 |
| Windows NT 4.0 | mi-1996 | ||
| 3.0 | «NTFS v5.0» ou «NTFS5» | Windows 2000 | 2000 |
| 3.1 | «NTFS v5.1» | Windows XP | Automne 2001 |
Les versions ultérieures de Windows, notamment Windows Vista, Windows 7, Windows 8, Windows 10 et Windows 11, utilisent toujours la version 3.1 du format NTFS tout en ajoutant de nouvelles fonctionnalités directement dans le système d'exploitation. Ainsi, la structure fondamentale du système de fichiers est demeurée remarquablement stable depuis plus de vingt ans, ce qui explique son excellente compatibilité et sa grande robustesse.
Secteur de démarrage de la partition
Comme tous les systèmes de fichiers, une partition NTFS possède un secteur de démarrage (Boot Sector) situé au tout début de la partition. Ce secteur constitue l'un des éléments les plus importants de la structure, puisqu'il contient toutes les informations nécessaires au système d'exploitation pour reconnaître la partition et accéder correctement aux données qu'elle renferme. Lors du démarrage de l'ordinateur ou lors du montage d'un volume, Windows lit en premier ce secteur afin d'obtenir les paramètres fondamentaux décrivant l'organisation de la partition.
Le secteur de démarrage contient notamment la signature NTFS, la taille des secteurs physiques, le nombre de secteurs par unité d'allocation (cluster), l'emplacement du fichier maître $MFT, celui de sa copie miroir $MFTMirr, le numéro de série du volume ainsi que plusieurs paramètres internes permettant au pilote NTFS de localiser rapidement les principales structures du système de fichiers. La présence de ces informations garantit que le volume pourra être monté correctement même lorsque celui-ci contient plusieurs milliards de fichiers.
Voici la structure typique du secteur de démarrage qu'utilise la partition NTFS :
| Position | Longueur | Valeur | Nom du champ | Description |
|---|---|---|---|---|
| 0000h | 3 octets | EB5290h | JMP instruction | Ce champ permet de provoquer la poursuite de l'exécution après les données de structure dans le secteur de démarrage. |
| 0003h | 8 octets | Le mot «NTFS» suivi de 4 espaces. | OEM ID | Ce champ permet d'indiquer la signature indiquant une partition avec un système de fichier NTFS. |
| 000Bh | 2 octets | 0200h | Bytes per sector | Ce champ permet d'indiquer combien d'octets contient un secteur. |
| 000Dh | 1 octet | 08h | Sectors Per Cluster | Ce champ permet d'indiquer combien de secteurs sont dans une unité d'allocation. |
| 000Eh | 2 octets | 0000h | Reserved Sectors | Ce champ est réservé. |
| 0010h | 3 octets | 000000h | Unused | Ce champ est toujours à 0. |
| 0013h | 2 octets | 0000h | Unused by NTFS | Ce champ est toujours à 0. |
| 0015h | 1 octet | F8h | Media Descriptor | Ce champ permet d'indiquer le descripteur de média. |
| 0016h | 2 octets | 0000h | Ce champ est toujours à 0. | |
| 0018h | 2 octets | 003Fh | Sectors Per Track | Ce champ permet d'indiquer combien de secteur contient une piste. |
| 001Ah | 2 octets | 00FFh | Number Of Heads | Ce champ permet d'indiquer d'indiquer combien de tête magnétique en lecture/écrire sont contenues dans cette unité. |
| 001Ch | 4 octets | 0000003Fh | Hidden Sectors | Ce champ permet d'indiquer combien de secteurs cachés sont contenu sur cette partition. |
| 0020h | 4 octets | 00000000h | Ce champ n'est pas utilisé par la partition NTFS. | |
| 0024h | 4 octets | 0x80008000 | Ce champ n'est pas utilisé par la partition NTFS. | |
| 0028h | 8 octets | 0x00000000007FF54A | Total sectors | Ce champ permet d'indiquer combien de secteurs sont dans cette partition. |
| 0030h | 8 octets | 0000000000000004h | $MFT cluster number | Ce champ permet d'indiquer quel unité d'allocation contient le «$MFT». |
| 0038h | 8 octets | 000000000007FF54h | $MFTMirr cluster number | Ce champ permet d'indiquer quel unité d'allocation contient la copie miroir du «$MFT». |
| 0040h | 1 octet | F6h | Bytes Per File Record Segment | Ce champ permet d'indiquer combien il y a d'octets dans un segment d'enregistrement de fichier. |
| 0041h | 3 octets | 000000h | Ce champ n'est pas utilisé par la partition NTFS. | |
| 0044h | 1 octet | 01h | Clusters Per Index Buffer | Ce champ permet d'indiquer combien il y a d'unité d'allocation par tampon d'index. |
| 0045h | 3 octets | 000000h | Ce champ n'est pas utilisé par la partition NTFS. | |
| 0048h | 8 octets | variable | Volume Serial Number | Ce champ permet d'indiquer un nombre aléatoire associé avec cette partition correspondant à son numéro de série. |
| 0050h | 4 octets | 00000000h | Checksum | Ce champ permet d'indiquer la valeur précédente de la sommation de vérification. |
| 0054h | 426 octets | variable | Bootstrap Code | Ce champ permet d'indiquer le code étant charger dans le système d'exploitation. |
| 01FEh | 2 octets | AA55h | End-of-sector Marker | Ce champ permet d'indiquer un marqueur indiquant la fin du secteur de démarrage. |
Métafichiers
Contrairement aux systèmes de fichiers plus anciens, NTFS organise pratiquement toutes ses informations internes sous forme de fichiers spéciaux appelés métafichiers. Ces fichiers résident directement dans la partition et sont gérés comme des fichiers ordinaires, bien qu'ils soient normalement invisibles pour l'utilisateur. Leur nom commence systématiquement par le caractère «$», ce qui permet de les distinguer des fichiers créés par les applications.
Ces métafichiers jouent un rôle fondamental dans le fonctionnement de NTFS. Ils décrivent la structure du volume, la localisation des données, les informations de sécurité, les journaux de transactions, les quotas de disque, les caractères Unicode, les points de réanalyse, les index des répertoires ainsi que de nombreux autres éléments essentiels. Sans eux, le système d'exploitation serait incapable de retrouver les fichiers présents sur la partition ou d'assurer l'intégrité des données après une interruption imprévue.
La plupart de ces informations sont entreposées dans des flux de données sans nom, accessibles uniquement au pilote NTFS. Bien que certains outils spécialisés permettent de consulter ces fichiers système, Windows empêche volontairement leur modification afin d'éviter toute corruption pouvant rendre la partition inutilisable. Cette architecture constitue l'une des principales raisons expliquant la robustesse et la fiabilité du système de fichiers NTFS.
Voici donc les principaux métafichiers :
| Numéro de segment | Nom du fichier | Description |
|---|---|---|
| 0 | $MFT | Ce fichier permet de décrire tous les fichiers dans le volume, incluant les noms de fichiers, les temps, les noms de flux de données, la liste des nombres d'unité d'allocation où les données de flux sont situés, les indexes, les identificateurs de sécurité et les attributs de fichiers comme en lecture seulement, compressé ou encrypté,... |
| 1 | $MFTMirr | Ce fichier est un miroir du fichier «$MFT» et contient les premières entrées vitales. |
| 2 | $LogFile | Ce fichier contient le journal de bord des transactions des changements de métadonnées du système de fichiers. |
| 3 | $Volume | Ce fichier contient les informations à propos du volume, comme les identificateurs d'objet, le nom du volume, la version du système de fichiers, les drapeaux de volume (monté, requête CHKDSK, requête de taille $LogFile, monté dans NT 4, mise à jour de numéro de série de volume, requête de mise à jour de structure). |
| 4 | $AttrDef | Ce fichier contient une table des attributs MFT associant les identificateurs numériques avec les noms. |
| 5 | . | Ce fichier contient le répertoire racine, les données du répertoire sont entreposés dans les attributs $INDEX_ROOT et $INDEX_ALLOCATION nommé $I30. |
| 6 | $Bitmap | Ce fichier contient un tableau d'entrées de bit indiquant les correspondances d'unité d'allocation utilisés (alloué) ou libre (disponible pour allocation). |
| 7 | $Boot | Ce fichier contient un tableau d'entrées de bit indiquant les correspondances d'unité d'allocation utilisés (alloué) ou libre (disponible pour allocation). |
| 8 | $BadClus | Ce fichier contient toutes les unités d'allocation marqué par de mauvais secteurs. |
| 9 | $Secure | Ce fichier contient la base de données ACL (Access Control List) réduisant ainsi les passages aérien dans de nombreux ACL identiques entreposés dans chacun des fichiers et en les entreposant uniquement un fichier centralisé. |
| 10 | $UpCase | Ce fichier contient une table de caractères majuscules Unicode assurant la conversion entre l'espace de nom DOS et Win32. |
| 11 | $Extend | Ce fichier contient les informations d'extensions optionnel des dossiers du système de fichiers, comme le $Quota, $ObjId, $Reparse ou $UsnJrnl. |
| 12 à 23 | Ces numéros de segments sont réservés pour les entrées d'extension $MFT. Les entrées d'extensions sont enregistrements suppléments $MFT contenant les attributs additionnel ne pouvant entrée dans l'enregistrement primaire. Cette situation peut se produire lorsque les fichiers sont trop fragmentés, les noms de fichiers sont trop long, dans une sécurité complexe ou d'autres situations rarissime. | |
| 24 | $Extend\$Quota | Ce fichier contient les informations associé au quota d'un disque, soit deux racines d'index nommé $O et $Q. |
| 25 | $Extend\$ObjId | Ce fichier contient les informations de pistage de liaison, soit une racine d'index et l'allocation nommé «$O». |
| 26 | $Extend\$Reparse | Ce fichier contient les données de point de réanalyse comme les liens symboliques, soit la racine d'index et l'allocation nommé «$R». |
| 27 et plus | Ces numéros de segment permettent d'indiquer les entrées régulières de fichiers et accessible par toutes les applications. | |
Légende
Cette couleur permet d'indiquer les informations sensibles nécessitant une
attention particulière lors de l'analyse ou de la modification d'une partition NTFS. Toute modification incorrecte de ces champs peut compromettre le fonctionnement du
volume et entraîner une perte de données.
Remarques
- Fait assez curieux, l'identificateur de partition 07h utilisé par NTFS est exactement le même que celui utilisé auparavant par le système de fichiers HPFS développé par IBM environ quatre années plus tôt. Les systèmes d'exploitation distinguent donc ces deux formats à l'aide de leur secteur de démarrage plutôt qu'avec le seul identificateur de partition.
- Bien que Windows 2000 supporte officiellement les partitions dépassant les 120 Go, certains matériels plus anciens ainsi que certains BIOS de l'époque pouvaient rencontrer des difficultés lors de la détection ou de la lecture de très grands volumes. Ces limitations provenaient souvent du matériel plutôt que de NTFS lui-même.
- Les versions modernes de Windows mettent continuellement à jour différents attributs associés aux fichiers, notamment la date du dernier accès. Cette fonctionnalité améliore certaines opérations de gestion, mais elle peut également générer un grand nombre d'écritures supplémentaires sur le disque. Pour cette raison, certains administrateurs choisissent de désactiver cette mise à jour en modifiant la valeur «HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate» en fixant la clef DWORD à la valeur 1 dans la base de registres Windows afin d'obtenir de meilleures performances.
- Les métafichiers système comme $MFT, $LogFile, $Bitmap, $Boot, $Secure, $UpCase ou $AttrDef sont normalement invisibles dans l'Explorateur Windows. Pour les examiner, il est généralement nécessaire d'utiliser un logiciel spécialisé tel qu'OSForensics ou d'autres utilitaires d'analyse de systèmes de fichiers capables d'accéder directement aux structures internes de NTFS.
- L'utilisation d'une Master File Table (MFT) constitue l'une des innovations majeures de NTFS. Chaque fichier et chaque répertoire possèdent un enregistrement dans cette table centrale, ce qui permet au système d'exploitation de retrouver très rapidement les informations descriptives sans parcourir l'ensemble du disque.
- Grâce à son mécanisme de journalisation des métadonnées, NTFS est capable de récupérer automatiquement de nombreuses incohérences après une panne ou une coupure de courant. Cette caractéristique réduit considérablement les risques de corruption comparativement aux anciens systèmes FAT qui ne disposaient d'aucun mécanisme équivalent.
- NTFS prend également en charge les permissions de sécurité basées sur les listes de contrôle d'accès (ACL). Chaque fichier ou dossier peut ainsi posséder des droits très précis définissant quels utilisateurs ou groupes peuvent lire, modifier, supprimer ou exécuter son contenu.
- Enfin, l'architecture interne de NTFS a été conçue afin de rester évolutive. Même si son numéro de version n'a pratiquement pas changé depuis Windows XP, Microsoft continue d'ajouter de nouvelles fonctionnalités directement dans le pilote du système de fichiers, ce qui permet au format de demeurer compatible avec les versions modernes de Windows tout en conservant une excellente stabilité.
Voir également
Système d'exploitation - Windows - Nom de fichiers de format court (8.3 filename SFN) et de format long (LFN)
Système d'exploitation - OS/2 - Partition HPFS
Système d'exploitation - Linux - Les partitions Linux : Ext2, Ext3 & Ext4