Menu Fermer

NTFS, EXT4 : les systèmes de fichiers Windows et Linux

Un système de fichiers est une structure logique qui permet au système d’exploitation d’accéder aux fichiers qui se trouvant dans un périphérique de données (Disque dur, clé USB, etc).
Le système de fichiers vise donc à organiser et structure les données des fichiers dans un disque dur.
Lorsque vous formatez une partition de disque, vous préparez le système de fichiers afin que le système d’exploitation puisse utiliser cette partition et y stocker des fichiers, répertoires.

Ce tutoriel vous apprend le fonctionnement général le système de fichiers de Windows (NTFS) et le système de fichiers Linux (ext4).

Comprendre les systèmes de fichiers

Comment fonctionne un système de fichiers

Le système de fichiers gère les opérations de fichiers dans le système d’exploitation par son organisation (nom de fichiers, structures des répertoires et des données).
Le système de fichiers est créé au moment de l’opération de formatage.

Lorsque vous formatez un disque dur, ce dernier créer le système de fichiers dans la partition de disque.
Cela commence par découper la partition de disque en bloc ou secteur de disque d’une taille qui peut être fixée manuellement.
Ces blocs contiennent des données binaires qui peuvent stocker des informations et en autres les fichiers.
Le système d’exploitation se doit de structurer ses blocs afin de pouvoir y retrouver ses fichiers.

Par défaut, la taille d’un secteur est en général de 512 octets.

Fonctionnement d'un système de fichiers

Les systèmes d’exploitation utilisent des systèmes de fichiers différents.
Par exemple, Microsoft pour Windows utilise NTFS alors que GNU/Linux utilise ext4.
L’organisation et le fonctionnement de ces systèmes de fichiers est différent, bien qu’on peut retrouver des similitudes.
De ce fait, les propriétés finales sont différentes. Certains systèmes de fichiers peuvent être plus performants dans des dossiers avec des milliers de fichiers, d’autres dans le recouvrement dans le cas de corruption, etc.

NTFS : le système de fichiers Windows

NTFS (New Technology File System) est le système de fichiers de Microsoft pour Windows.
Le système de fichiers de Microsoft découpe la partition en cluster qui sont composés d’un ou plusieurs secteurs (blocs).
Par exemple, si un bloc fait 512 et que les cluster d’une partition NTFS sont à 4096, cela signifie qu’un cluster est composé de 8 secteurs (8*512 = 4096).
Le système de fichiers de Microsoft stocke ensuite les fichiers et dossiers dans ces clusters.
Un cluster ne peut pas contenir plusieurs fichiers, de ce fait, il est plus efficient d’avoir des clusters petits pour minimiser la perte de données liées à des clusters non utilisées.

La structure NTFS

Voici la structure du système de fichier NTFS avec les différentes tables :

Fonctionnement du système de fichiers NTFS
Secteur d’amorçage
NTFS Boot Sector
Contient les paramètres de bloc du BIOS et les informations du volume et de structures du systèmes de fichiers.
On y trouve notamment l’emplacement de la MFT dans la partition.
Si cette information est perdue ou corrompue, la MFT est introuvable et la partition est considérée comme non formatée.
Sur les disques MBR, ce dernier se trouve dans le premier secteur du disque dur.
Sur les ordinateurs en GPT, au début et à la fin de la partition (sauvegarde).
Master File Table (MFT)Stocke les informations afin de pouvoir retrouver les fichiers dans le système de fichiers.
Les attributs de fichiers y sont aussi stockés comme les métadonnées, les ACL, ….
Si le MFT est endommagé, Windows ne peut plus accéder aux fichiers.
Lors d’un formatage rapide, c’est cette dernière qui est remise à zéro.
Plus d’informations : Qu’est-ce que la Master File Table
File System Data (FSD)S’y trouvent les données qui en sont pas présent dans la Master File Table.
Master File Table CopyIl s’agit d’une copie des informations essentiels, dans le cas où un problème est présent dans la MFT

On obtient alors pour un disque GPT la structure suivante :

Fonctionnement du système de fichiers NTFS
Fonctionnement du système de fichiers NTFS

Pour des détails plus complets sur la structure des disques, partitions et NTFS, vous pouvez commencer par ce lien : Recupération de partitions I : Quelques définitions et structures

Ext4 : le système de fichiers ext4

Ext est le système de fichiers par défaut de Linux qui supporte beaucoup de type de fichiers comme JFS, ReiserFS etc.
Ce file system est actuellement en version 4 et porte donc le nom de ext4.

Fonctionnement du système de fichiers ext4

Le système de fichiers ext4 possède un boot block pour amorcer le système d’exploitation puis découpe le disque en série de groupe de blocs.
Chaque groupe de blocs est composé de la même manière :

Contrairement à NTFS, les informations des fichiers ne sont pas stockés dans un emplacement spécifique du disque mais éparpillé dans les groupes de blocs du disque.
Ces derniers stockent :

  • Les inodes : les métadonnées des fichiers et dossiers comme le type de fichiers, les quota, permissions, etc.
  • Les données du fichier

Les dossiers contiennent la liste des fichiers et leurs inodes.
Ci-dessous le dossier /home/vous avec les fichiers foo et bar et leurs inodes.

Structure des inodes dans le système de fichiers ext4 de Linux

Voici la structure d’un groupe de bloc :

Structure du système de fichiers ext4 pour Linux
  • Super Block
    • Le superblock stocke des informations du système de fichiers comme le nombre et la taille des blocs du disque, le nombre d’inodes et bien d’autres informations.
  • Group Descriptor
    • Stocke l’emplacement de la table bitmaps des d’inodes et blocs et la table des inodes
    • Le nombre de blocs et inodes libres
    • Stocke le nombre de dossiers dans le groupe
  • Block et Inode Bitmap
    • Il s’agit de la liste (ou carte si vous préférez) des blocs et inodes stockées en bits du groupe
  • Inode Table
    • Stocke les métadonnées et les emplacements des blocs datas pour un fichier

On peut alors très bien travailler avec les inodes au lieu des noms de fichiers.
Par exemple, ci-dessous on liste les inodes pour un fichier et on peut lire son contenu avec icat (package sleuthkit).
Généralement, on utilise les inodes pour supprimer un fichier quand on ne peut pas le nommer facilement depuis l’invite de commandes :

find -inum <num>  -exec rm -f {} \;
Fonctionnement du système de fichiers ext4

Le nombre d’inodes sur un disque est limité, si vous créé des dossiers avec des milliers de fichiers (ce qui ajoute des inodes).
Ainsi vous pouvez saturer la place disque alors que df vous indique qu’il reste de la place disque.
Cela arrive s’il ne reste plus accès d’inodes libres.

Fonctionnement du système de fichiers ext4

Enfin la commande dumpe2fs permet d’obtenir les informations du système de fichiers :

Fonctionnement du système de fichiers ext4

On retrouve alors la structure des blocs :

Fonctionnement du système de fichiers ext4

Lors d’un formatage en ext4, vous pouvez choisir la taille des inodes avec l’option -I (mke2fs -I)
Sinon, la taille par défaut des inodes peuvent être changée depuis le fichier /etc/mke2fs.conf

Journal et réparation du système du fichiers

Enfin, la plupart des systèmes de fichiers sont journalisés afin de conserver une intégrité et cohérences des données en cas de coupure de coupure, plantage du système d’exploitation, etc.
Le journal enregistre les modifications qui doivent être opérées sur le système de fichiers.
Lorsqu’une panne a lieu, on repart sur les informations du journal.
L’inconvénient de ce dernier est une double écriture des actions opérées sur le système de fichiers et peut donc jouer sur les performances.

Tous les systèmes d’exploitation offre des utilitaires qui permettent de vérifier la cohérence du système de fichiers et opérer des réparations.

Lorsque le système de fichiers est monté, c’est à dire en cours d’utilisation, vous êtes obligé d’effectuer la vérification et réparation au démarrage du système d’exploitation.
(Bien que sur Linux, il est possible de démonter la partition / sans redémarrer).