Fonctionnement du système de fichiers
Tous les systèmes de fichiers fonctionnement de façon différente, mais les concepts sont similaires.
1. Concepts de base
1.1. Cluster
Le cluster est également appelé bloc ou taille d'unité d'allocation.
Le cluster consiste à un regroupement de secteurs. C'est un regroupement logique.
C'est la plus petite unité de mesure utilisable par le système d'exploitation pour écrire un fichier.
Comme pour le secteur, le cluster n'est pas divisible. Il doit être dédié entièrement à un seul fichier. Les bits inutilisés d'un **cluster ** sont perdus.
Avec le système de fichiers NTFS, la taille du cluster par défaut est de 4096 octets, soit 8 secteurs.
La taille du cluster varie également en fonction de la taille de la partition.
Plus qu'un cluster est gros, le système d'exploitation est généralement plus rapide à lire et à écrire sur le disque, mais la quantité d'octets perdus est plus grande.
À l'inverse, plus qu'un cluster est petit, le système d'exploitation est généralement plus lent à lire et à écrire sur le disque, mais la quantité d'octets perdus est plus petite.
Également, les systèmes de fichiers ont un nombre maximal d'adresses pour identifier les clusters. Sous NTFS, le nombre de clusters est de 4 294 967 295. Si le cluster était d'un seul secteur, soit 512 octets, la taille maximale de la partition serait de 2 To (4 294 967 296 clusters * 512 octets = 2 199 023 255 552 octets = 2 To).
Par défaut, le cluster du NTFS est de 4096 octets, donc il peut avoir une partition de 16 To.
Voici la charte pour le NTFS pour la taille du cluster en fonction de la taille de la partition. https://learn.microsoft.com/en-us/windows-server/storage/file-server/ntfs-overview
1.2. Taille fichier sur disque et taille du fichier
Voici une fenêtre de détail d'un fichier provenant de Windows. Le système de fichiers est NTFS et la taille du cluster est de 4096 octets.
Dans l'image ci-dessus :
- En jaune : La taille du fichier
- En rose : La taille utilisée réellement sur l'unité de stockage.
Un fichier qui a une taille de 804 octets va prendre sur l'unité de stockage 4096 octets. Il y a donc 3292 octets de perdus, car un cluster est indivisible et il doit être utilisé par un seul fichier.
Pour tous les fichiers dans un système de fichier, il peut avoir une perte d'octets sur le disque qui peut aller jusqu'à la taille du cluster - 1.
1.3. Métadonnées
Un système de fichiers a besoin de contenir de l'information sur les fichiers qui ne sont pas de données de contenu. Ces informations consistent aux métadonnées du fichier.
Voici des items qui peuvent être contenus dans les métadonnées
- La taille du fichier ou répertoire.
- La date et l’heure de création du fichier.
- La date et l’heure de modification du fichier.
- La date et l’heure d’accès du fichier.
- Le type de fichier.
- Le propriétaire du fichier.
- Les attributs du fichier.
- Les permissions du fichier.
1.4. Formatage
Le formatage consiste à effacer les données d’une partition.
La table des répertoires et la table d’allocation sont effacées.
Pour un formatage rapide :
-
Seulement le contenu de la table de répertoires et d'allocation est effacé.
-
La zone des données reste intouchée
-
Il est toujours possible de récupérer les données.
-
La durée de l'opération est similaire, peu importe la taille de la partition.
Pour un formatage complet (low format) :
- La zone des données est réinitialisée également.
- Chaque secteur est analysé pour s'assurer de son bon fonctionnement.
- La durée de l'opération est proportionnelle à la taille de la partition.
1.5. Fragmentation
La fragmentation des données sur un disque dur consiste que les clusters d’un fichier ne sont pas en ordre séquentiel dans la zone des données.
La défragmentation consiste à réordonner les clusters des fichiers en ordre séquentiel.
Pour un HDD, il y a un impact sur la performance. La tête de lecture/écriture doit faire plusieurs va-et-vient pour lire ou écrire le fichier au complet.
Pour le SSD, la fragmentation n’a pas d’impacte.
Il est non recommandé de faire une défragmentation, car cette action effectue des cycles d’écriture inutiles. La durée de vie du SSD est donc réduite inutilement et sans aucun gain en performance.
2. Fonctionnement du FAT
Le système de fichiers FAT est très simple et il est facile d’expliquer son fonctionnement.
Il n’est plus utilisé comme système de fichiers principal des systèmes d’exploitation moderne.
Le fonctionnement décrit dans les sections ci-dessous a été simplifié.
Le fonctionnement des autres systèmes de fichiers reste tout de même similaire.
2.1. Structures
Voici les éléments qui définissent la structure du système de fichiers FAT.
2.1.1. Secteurs réservés
Les secteurs réservés se retrouvent au début de la partition. Ces secteurs contiennent des informations importantes sur le fonctionnement de la partition.
Voici les éléments des secteurs réservés pour le système FAT.
-
Instruction de branchement vers le code d’amorçage du système de fichier FAT. C’est le BOOT sector.
-
Identification du manufacturier (OEM ID).
-
Nombre d’octets par secteur (bytes per sector).
-
Nombre de secteurs par cluster {1,2,4,…,64} (sector per cluster).
-
Nombre de secteurs réservés au début de la partition (reserved sectors).
-
Le nombre de FAT (number of FATs).
-
Nombre d’éléments possible dans le répertoire racine (root entries).
-
Nombre de secteurs total (total sectors (small)).
-
Type de média (media descriptor).
-
Le nombre de secteurs par FAT (sectors per FAT).
-
Le nombre de secteurs par piste (sectors per track).
-
Le nombre de têtes (number of head).
-
Le nombre de secteurs cachés (hidden sectors).
-
Nombre de secteurs total (total sectors (large)).
-
La signature toujours 55AA.
2.1.2. Table des répertoires
La table des répertoires contient l'information des dossiers et des fichiers qui sont enregistrés dans la partition.
Cette table ne contient aucune donnée.
La table contient l'information ci-dessous :
- Le nom du fichier ou du dossier.
- Les métadonnées du fichier ou du dossier.
- L'adresse du premier cluster du fichier.
2.1.3. Table d'allocation
La table d'allocation contient l'information pour chacun des clusters de la zone de données.
Pour chacun des clusters, on peut avoir l’une des valeurs ci-dessous :
- Cluster non utilisé.
- L’adresse du prochain cluster pour continuer le fichier.
- Dernier cluster du fichier.
- Indique si le cluster ne peut pas être utilisé ou est défectueux.
Le nombre d'emplacements dans la table d'allocation est fixe et limité.
2.1.4. Zone des données
C’est la partie de la partition qui contient tous les bits du fichier.
Elle représente les clusters utilisables pour enregistrer les données des fichiers.
2.2. Fonctionnement
2.2.1. Lire un fichier
1- Dans la table des répertoires, l’adresse du premier cluster pour le fichier est récupérée.
2- Le disque se positionne sur le cluster dans les sections des données.
3- Les bits du cluster sont enregistrés dans la mémoire vive.
4- Dans la table d’allocation, l’information sur le cluster est récupérée.
-
Si c’était le dernier cluster, le cycle est terminé.
-
Si ce n’était pas le dernier cluster, l’adresse du prochain cluster est récupérée. Le cycle recommence à l’étape 2.
5- Le contenu du fichier est entièrement dans la mémoire vive. Le système d’exploitation peut l’utiliser.
2.2.2. Écrire un fichier
1- Dans la table d’allocation, le système recherche un cluster non utilisé.
2- Dans la table de répertoires, le système recherche le prochain emplacement de libre.
3- Dans l'emplacement libre de la table de répertoires, le nom du fichier est inscrit, avec ses métadonnées et l'adresse du premier cluster non utilisé.
4- Le disque se positionne sur le cluster et il écrit les bits du fichier qui se trouve dans la mémoire vive dans le cluster.
- Si le fichier n'est pas complet
- Le système recherche un cluster non utilisé dans la table d'allocation.
- L'adresse du prochain cluster est enregistrée dans la table d'allocation pour le cluster en cours.
- Le cycle recommence à l'étape 4 pour le prochain cluster.
- Si le fichier est complet, l'information du cluster courant est mise à jour avec la valeur de fin de fichier dans la table d'allocation.
2.2.3. Déplacer un fichier
Le déplacement d'un fichier est généralement très rapide lorsqu'il est effectué dans la même partition.
C'est seulement la table de répertoire qui est mis à jour pour indiquer son nouvel emplacement.
La zone de données reste inchangée.
2.2.4. Effacer un fichier
1- Dans la table des répertoires, l’adresse du premier cluster pour le fichier est récupérée.
2- La table de répertoire est mise à jour pour indiquer que le fichier est supprimé.
3- Dans la table d’allocation, l’information sur le cluster est récupérée.
- La valeur du cluster est mise à jour avec la valeur vide.
- Si ce n'était pas le dernier cluster, le cycle recommence à l'étape 3 avec l'adresse du prochain cluster.
- Si c'est la fin du fichier, la suppression est terminée.
Les bits des clusters de la zone des données ne sont pas réinitialisés. C'est pour cette raison qu'il est parfois possible de récupérer des données supprimées sur un disque dur avec des logiciels spécialisés.
3. Lectures et références
Wikipedia, File Allocation Table, https://fr.wikipedia.org/wiki/File_Allocation_Table, 2022-09-10
Wikipedia, Design of the FAT file system, https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system, 2021-09-21 (Anglais)