B- Le SGF de Windows NT : NTFS

Le NTFS (New Technology File System) est le système de gestion de fichiers créé par Microsoft pour Windows NT 4, les systèmes existants alors ne satisfaisant pas les critères de fiabilité et de taille des nouveaux espaces disques disponibles. La version utilisée sous Windows NT 4 est NTFS 4.

NTFS intègre certaines fonctionnalités utilisées dans les SGF existants mais aussi de nouvelles :

Une partition formatée en NTFS doit avoir une capacité d'au moins 400 Mo. En effet, NTFS utilise une grande quantité d'espace disque pour stocker les structures du système. Mais une fois la structure créée,  la puissance de ce SGF permet de mieux exploiter l'espace. C'est ce qui sera détaillé plus loin. Notons au passage que NTFS gère des partitions jusqu'à 16 Eo (1 Eo = 10^18 o).

Structure du système

Les principaux fichiers constituant la structure du systèmes sont les suivants :

Quand un fichier est créé sur un volume NTFS, une entrée est ajoutée à la MFT qui grandit alors. Quand un fichier est supprimé, son entrée dans la MFT est marquée comme libre et peut être réutilisée mais la MFT ne réduit pas. 
Pour garantir des performances optimales, NTFS tente de trouver des espaces contigus de stockage qui pourraient contenir l'intégralité du fichier.

Les autres éléments de la structure de fichiers (pour les téméraires ...)

Les descripteurs de fichiers

Chaque objet externe reçoit à sa création un numéro qui est l'indice dans la MFT où est situé le descripteur. La taille de ces descripteurs est fixée à la création du volume et est comprise entre 1 koctets et 4 koctets. Un objet externe, fichier ou répertoire, est constitué d'un certain nombre d'attributs qui peuvent être résidents, c'est à dire rangés dans le descripteur de l'objet externe lui-même, ou non résidents et donc à l'extérieur de la MFT dans un espace qui lui est alloué en propre.
Si un objet externe est suffisamment petit, tous ses attributs dont le contenu se trouveront dans le descripteur. Dans le cas contraire, certains attributs (et en particulier les données) seront non résidents.
La sélection de la taille des clusters utilisée est un compromis entre l'utilisation de l'espace disque et le nombre d'accès au disque nécessaires pour ce fichier. La taille d'un cluster est donc variable et va de 512 octets à 64 koctets.

NTFS utilise le principe de l'allocation par zone pour les attributs non résidents d'un objet externe, et la valeur de l'attribut est remplacée dans le descripteur par la suite des descriptions des zones allouées. Le nombre de zones est quelconque, chacune étant de taille quelconque. La taille du quantum est un nombre entier de secteurs, ce nombre étant une puissance de 2. Le terme de cluster désigne les unités d'allocation. Les clusters sont numérotés sur 64 bits, ce qui implique la gestion de 16 milliards de clusters par volume. Comme un descripteur de zone doit localiser le premier cluster de la zone et son nombre de clusters, soit 16 octets, une technique de compression est utilisée, d'une part en prenant son déplacement par rapport au premier cluster de la zone précédente, et en supprimant les octets nuls en tête de ces deux valeurs.

La longueur d'un attribut non résident est mémorisée sur 64 bits, ce qui permet donc des fichiers dont la taille peut aller jusqu'à 16 Go.
Notons que le contenu d'un fichier est un attribut sans nom, mais l'utilisateur peut créer des attributs nommés qui peuvent avoir des contenus séparés dans des espaces distincts.
 
Format d'un fichier
 

Les Répertoires

NTFS utilise une arborescence de répertoire. Le contenu d'un répertoire est organisé en arbre binaire. Les entrées d'un répertoire contiennent les informations suivantes, la première étant la clé:
En fait, seuls les deux premiers sont effectivement nécessaires, puisque les trois derniers se trouvent dans le descripteur de l'objet. Cette duplication a un avantage et un inconvénient. L'avantage est que l'on a accès aux informations essentielles de l'objet sans devoir accéder au descripteur. L'inconvénient est inhérent à la duplication : toute modification de ces informations doit être portée à plusieurs endroits sur le disque, sous peine d'avoir des données incohérentes. En fait, toutes ces informations, avec la clé, font partie de l'attribut "nom de fichier", présent dans le descripteur du fichier, et en sont une copie. Or, le numéro du répertoire parent d'un fichier permet de remonter l'arborescence des fichiers et répertoires, en retrouvant ainsi le parent de chaque répertoire.
Le principe des arbres binaires implique que des nœuds soient créés ou supprimés au fur et à mesure des adjonctions ou suppressions. La suppression d'un nœud peut ne pas être le dernier nœud physique du répertoire, et il faut prévoir sa réutilisation ultérieure. Ceci se fait en définissant un attribut $Bitmap pour chaque répertoire qui indique quels sont les nœuds libres. S'il n'y en a plus, une allocation d'une nouvelle zone est effectuée, et la table Bitmap est mise à jour pour tenir compte des nœuds libres ajoutés.

retour