Système de fichiers Microsoft NTFS
New Technology File System
NTFS
Le format NTFS a été mis au point il y a près de 20 ans. Le nom “New Technology File System” n'est plus vraiment d'application, mais une des caractéristiques de ce format est qu'il peut facilement être étendu (par exemple les ADS ou Alternate Data Stream qui n'étaient pas présents dans la première mouture du format).

En fait, il y a relativement peu de différences entre le format FAT et NTFS. C'est pour cela qu'un volume peut être converti rapidement du format FAT en format NTFS.

-

-

New technology File System

La grande différece entre FAT et NTFS est la présence du Master File Table (MFT). Il s'agit d'une base de donnée qui contient tous les paramètres des fichiers. Le fait qu'il s'agit d'une base de donnée permet un accès (query) rapide à tous les fichiers, qu'ils soient dans la racine (root) ou au fin fond d'un répertoire contenant des milliers de fichiers. Le Master File Table est créé lors du formatage et utilise 12.5% de la capacité.

Toute cette capacité n'est pas perdue: Microsoft réserve simplement une zone contigue au milieu du disque pour éviter la fragmentation du MFT (le MFT ne peut pas être défragmenté). Si on stocke de très gros fichiers et qu'il y a un manque de place, le gestionnaire va automatiquement réduire la taille du MFT.

Les répertoires classiques existent toujours et font un peu double emploi (on voit ici très bien que le format NTFS est issus du format FAT). Les répertoires contiennent les informations basiques relatives aux fichiers (les mêmes que dans les répertoires FAT). Les nouveaux paramètres (droits d'accès ACL) sont placés dans le MFT.



Le MFT est présent dans le répertoire racine.
Il s'agit des fichiers et répertoires “super-cachés” $AttrDef et autres.

L'avantage est qu'on peut facilement augmenter les fonctionalités du système.

Le système d'exploitation utilise automatiquement la stratégie la plus rapide pour retrouver un fichier:

  • Si le fichier se trouve dans le répertoire actuel (working directory) et que ce répertoire est donc déjà en mémoire, le fichier sera recherché via le répertoire classique.
  • Si le répertoire ne se trouve pas en mémoire, le système va rechercher le fichier via le MFT.

La structure FAT est également présente dans le MFT et forme une liste de blocs libres (linked list). Il est ainsi possible de rechercher rapidement une série contigue de blocs pour le stockage de fichiers.

Compression incorporée

Un des caractéristiques de NTFS est la compression qui s'effectue de manière totalement transparante pour l'utilisateur. On peut indiquer au système d'exploitation que certains fichiers et/ou répertoires doivent être stockés sous forme comprimée. On peut même comprimer tout le contenu du disque.

L'algoritme de compression est basé sur Lempel/Ziv, et travaille par paquets de 16 clusters (unités d'allocation), donc 64kB pour des clusters de 4kB. Si la taille du fichier est réduite d'au moins un cluster, ce cluster est libéré. Les petits fichiers compressés (moins de 900 bytes) sont stockés dans le MFT.

Après avoir compressé des répertoires, il est recommandé d'effectuer une opération de défragmentation pour consolider les petits bouts récupérés entre les fichiers.

La compression qui peut être obtenue est très relative, même pour des fichiers très compressibles (pages de texte et fichiers html). Un exemple avec un répertoire de 217 fichiers (html, css et js), au total 2.854.079 octets

  • 3.305.472 octets (116%) sur le disque, à cause des pertes "slack" (clustersize=4k)
  • 2.234.078 octets (78%) à l'état comprimé
  • 1.187.840 octets (42%) stocké sous la forme d'un fichier ZIP
Comprimer des fichiers qui sont déjà comprimés (fichiers jpeg, mp-3, zip) est totalement inutile.
Compresser de petits fichiers (par exemple de 3 à 4kB) est inutile, car le fichier résultant utilise toujours un cluster, comprimé ou non.

Delayed write

L'écriture d'un fichier demande de nombreuses étapes, surtout quand la taille du fichier croît ou quand la création d'un fichier force une réorganisation de la base de données (MFT). On utilise le "delayed write" à grande échelle pour éviter les ralentissements. Les modifications dans la structure du MFT ne sont pas effectuées directement, mais enregistrés dans un journal. Ces opérations sont effectuées plus tard, quand le système est libre. Le démarrage d'un ordinateur avec partition de démarrage au format NTFS est parfois plus lent qu'avec une partition FAT: la première chose que le système fait est d'effectuer toutes les opérations en attente.

La fonction "delayed write" n'est pas une nouveauté de NTFS: elle existait déjà sous DOS 6.2 (smartdrv) et s'appellait alors "write behind". Mais smartdrv ne fait que mettre les opérations d'écriture dans une mémoire-tampon pour les effectuer quand le disque est libre. La fonction "delayed write" utilise un journal pour le stockage intermédiaire (et provoque de ce fait une "write amplification": de nombreuses opérations d'écriture supplémentaires pour un seul fichier de modifié).

ADS - Alternate Data Stream

Microsoft a ajouté à son système une option que personne ne demandait: le Alternate Data Stream (ADS). Un fichier contient les données normales et un nombre indéterminé de flux de données alternatifs. Ces flux sont invisibles: ils ne se remarquent pas à la longueur du fichier et un listing dans le navigateur n'en signale pas l'existence. On ne remarque la présence de ces flux alternatifs que quand on copie le fichier vers un format qui ne permet pas les ADS (FAT, en l'occurence).

Le but original était d'offrir une fonctionalité similaire au "resource fork" utilisés par Apple (à l'époque pas iMac mais Macintosh). Les ADS sont par exemple utilisés pour ajouter la couverture du CD à un fichier MP3, ce qui est interessant (le format mp-3 n'a pas été concu pour inclure des représentations graphiques).

Certaines applications (éditeurs de logiciel) utilisent un ADS pour indiquer la position du curseur dans des fichiers txt, html, javascript et css. Il n'est en effet pas possible de stocker la position actuelle du curseur dans le fichier qui n'est pas prévu pour cela. Quand le fichier est rechargé en mémoire, le curseur vient se positionner à l'endroit où il se trouvait lors de la sauvegarde.

Un ADS est également ajouté à chaque fichier exécutable qui est téléchargé de l'internet (c'est l'ADS Zone.Identifier:$DATA bien connu des experts). Chaque fois que tu essaies d'exécuter le fichier, tu reçois un message 'fichier dangereux'.

Si tu montes le disque sur un ordinateur Linux, ou si tu consultes les répertoires à partir d'un ordinateur Linux, Nautilus (le navigateur) te montre ces fichiers (voir printscreen à droite). Le système d'exploitation utilise généralement un bloc (4k), mais parfois un stream reçoit 64k même si le stream ne fait que quelques octets..

Ce sont des informations qui ne peuvent pas être reprises dans les attributs des fichiers: quand NTFS a été développé, le réseau internet n'existait que sur les ordinateurs linux.

Un inconvénient des ADS est que s'il s'agit d'un fichier exécutable, il n'apparait pas dans la liste des tâches en cours et sont donc virtuellement indétectables, même sans rootkit. Les virus utilisent donc cette fonctionalité pour rester invisible aux anti-virus. Même un répertoire peut contenir un ADS.

La seule manière d'éliminer un ADS d'un fichier, est de le copier vers un disque externe ou une clef USB (formatée en FAT), ou d'utiliser une application specfique comme celle de Nirsoft.


Même NTFS ne permet pas d'éliminer
la fragmentation des fichiers.


Le système ne fonctionne pas pour les fichiers qui grandissent, comme des répertoires
(printscreen effectué après défragementation complète et copie de deux répertoires)

Avantages du NTFS
  • Beaucoup de possibilités
    On peut comprimer des fichiers, les crypter,... On peut ajouter des informations supplémentaires (les ADS, normalement invisibles). Il est possible d'attribuer des droits à chaque répertoire et fichier. Le système peut être étendu, car les paramètres ne sont pas stockés dans des tableaux à longueur fixe (FAT) mais dans une base de donnée.

  • Journal de bord
    Toutes les transactions sont notées dans un journal circulaire. Les transactions terminées sont marquées. Cela permet de "rejouer" les transactions manquantes en cas de coupure de courant ou de plantage. L'organisation NTFS est nettement plus complexe que FAT et nécessite un journal pour garantir que les informations dans le MFT soient consistantes.

  • Pas de problèmes avec la taille des fichiers et des répertoires
    La limite de 2GB pour un fichier n'existe plus (limite FAT-32). Comme le système de fichiers est une base de données, il faut pratiquement le même nombre d'étapes (=opérations de lecture élémentaires) pour accéder à un ficher dans la racine ou à un fichier au fond d'un grand répertoire.

  • Moins de fragmentation (en théorie...)
    Le système NTFS tient une liste des blocs libres et peut donc attribuer des blocs consécutifs aux fichiers. Malheureusement, la fragmentation est toujours aussi présente pour les fichiers qui grandissent (répertoires, logs, bases de données,...). Le format EXT utilise un algoritme bien plus performant.

  • Unités d'allocation plus petites
    La grandeur des unités d'allocation (clusters) peut être fixée à 512 octets, ce qui fait qu'il n'y a jamais plus de 511 octets perdus. De nombreuses unités d'allocations rendent la mise à jour complexe: ce qu'on gagne en espace, on le perd en temps d'accès. On recommande d'utiliser des unités d'allocation de 4kB (qui correspondent à la grandeur des blocs physiques de l'advanced format et des pages des SSD).

Inconvénients de NTFS

  • Complexe
    L'organisation est très complexe. L'écriture d'un fichier se fait en de nombreuses étapes (ce qui oblige à avoir un journal de bord). On perd jusqu'à 30% de la capacité, c'est pour cela qu'il n'est pas possible de formatter une disquette au format NTFS (il n'y a plus de place pour les données).

  • Lent
    Ecrire des fichiers est bien plus lent avec le format NTFS. Cela est particulièrement le cas avec les mémoires flash qui sont particulièrement lentes en écriture. Fais le test: formatte une carte de mémoire en NTFS et remplis-la de milliers de fichiers dans divers répertoires. Reformatte la carte en FAT et effectue la même opération: tu noteras que le format FAT est plus rapide. Remarque qu'il faudra probablement formatter la carte sous Linux, car microsoft refuse parfois le choix du format.

  • Système patenté
    Les spécifications du système NTFS ne sont pas libres: les fabricants d'appareils qui veulent pouvoir utiliser le format NTFS doivent payer une patente. C'est pour cela qu'on retrouve relativement peu d'appareils (balladeurs, smartphone) qui utilisent le format NTFS.

WinFS

Il était dans les intentions de Bill d'inclure un tout nouveau système de fichiers avec Vista (c'est une des raisons pourquoi Vista s'est tellement fait attendre). Mais le système n'était pas prêt à temps. WinFS (Windows Future Storage) aurait dû être une évolution plus poussée de NTFS.

NTFS n'enregistre que les attributs classiques dans le MFT. Ces attributs sont identiques pour tous les fichiers.

WinFS aurait dû enregistrer les méta-données dans une base de donnée. Les méta-données dépendent du type de fichier. Dans un fichier jpeg, il s'agit des paramètres optiques (temps de pose, diaphragme, sensibilité, etc), dans un fichier mail il s'agit de l'expéditeur, du destinataire et du sujet,...

Les méta-données sont différentes pour tous les types de fichiers et extraire ces données représente une surcharge de travail (comme si Vista n'est pas assez lent comme çà). L'extraction de ces données se ferait heureusement quand le processeur n'est pas occupé (fonctionnement identique au système d'indexation).

Le but non avoué est une plus grande intégration des programmes, des données et du système d'exploitation. Si tu utilises Outlook, tu bénéficies d'une recherche plus rapide, mais si tu utilises Thunderbird, tu ne bénéficie d'aucun avantage. De plus le système d'indexation (que Thunderbird ne sait pas utiliser) bouffe en pure perte de la mémoire et du remps d'exécution et empèche le disque dur de se mettre au repos (augmentation de la consommation).

Links to relevant pages - Liens vers d'autres pages au contenu similaire - Links naar gelijkaardige pagina's