FAT (File Allocation Table)


Le système de fichier FAT16

Le premier système de fichier ayant été utilisé sur un système d’exploitation Microsoft est le système FAT, qui utilise une table d’allocation de fichiers (en anglais FAT, File Allocation Table). La table d’allocation de fichiers est en fait un index qui liste le contenu du disque, afin d’enregistrer l’emplacement des fichiers sur celui-ci. Etant donné que les blocs qui constituent un fichier ne sont pas toujours stockés de manière contigüe sur le disque (c’est ce que l’on appelle la fragmentation), la table d’allocation permet de conserver la structure du fichier en créant des liens vers les blocs constitutifs du fichier. Le système FAT est un système 16 bits permettant de décrire un fichier par un nom d’une longueur de 8 caractères et une extension qui en comporte 3.

Pour améliorer ce point, la version originale de Windows 95 (employant le système FAT16) a été dotée d’un d’une prise en charge améliorée de la FAT, il s’agit du système VFAT (Virtual FAT). La VFAT est un système 32 bits permettant d’enregistrer un fichier avec un nom de 255 caractères de long. Les programmeurs ont toutefois dûs veiller à la compatibilité ascendante, de telle façon a pouvoir accéder à ces fichiers à partir d’environnements 16 bits (DOS). La solution a donc été d’affecter un nom pour chaque système. C’est la raison pour laquelle il est possible d’utiliser des noms longs sous Windows 95, tout en pouvant y accéder sous DOS.

Le système de fichiers FAT est un système 16 bits, cela signifie qu’il ne peut pas adresser les clusters sur plus de 16 bits. Le nombre maximum de clusters repérables avec le système FAT est ainsi de 2^16, soit 65535 clusters. Or, étant donné qu’un cluster est constitué d’un nombre fixé (4,8,16,32, ...) de secteurs de 512 octets contigüs, la taille maximale d’une partition FAT se trouve en multipliant le nombre de clusters par la taille d’un cluster. Avec des clusters d’une taille 32Ko, la taille maximale d’une partition FAT est donc de 2Go.

D’autre part, un fichier ne peut occuper qu’un nombre entier de clusters, c’est-à-dire que si un fichier occupe plusieurs clusters, le dernier sera ocupé en partie, et la place inoccupée restante est autant de place perdue. Par conséquent plus la taille d’un cluster est réduite, moins il y a de gaspillage de place. On estime qu’un fichier gaspille en moyenne la moitié d’un cluster, cela signifie que sur une partition de 2Go 16Ko seront perdus par fichier…

La table d'allocation des fichiers

La Table d’Allocation de Fichiers est une liste de valeurs numériques permettant de décrire l’allocation des clusters d’une partition, c’est-à-dire l’état de chaque cluster de la partition dont elle fait partie. La table d’allocation est en fait un tableau dont chaque cellule correspond à un cluster. Chaque cellule contient un chiffre qui permet de savoir si le cluster qu’elle représente est utilisé par un fichier, et, le cas échéant, indique l’emplacement du prochain cluster que le fichier occupe. On obtient donc une chaîne FAT, c’est-à-dire une liste chainée de références pointant vers les différents clusters successifs, jusqu’au cluster de fin de fichier. Chaque entrée de la FAT a une longueur de 16 ou 32 bits (selon qu’il s’agit d’une FAT16 ou d’une FAT32). Les deux premières entrées permettent de stocker des informations sur la table elle-même, tandis que les entrées suivantes permettent de référencer les clusters. Certaines entrées peuvent contenir des valeurs indiquant un état du cluster spécifique. Ainsi la valeur 0000 indique que le cluster n’est pas utilisé, FFF7 permet de marquer le cluster comme défectueux pour éviter de l’utiliser, et les valeurs comprises entre FFF8 et FFFF spécifient que le cluster contient la fin d’un fichier. Chaque partition contient en réalité deux copies de la table, stockées de manière contigüe sur le disque, afin de pouvoir la récupérer si jamais la première copie est corrompue.

Le système de fichier FAT32

Bien que la VFAT soit astucieuse, elle ne permet pas de remédier aux limitations de la FAT16. Ainsi, un nouveau système de fichiers (et non une meilleure prise en charge de la FAT telle que VFAT) est apparu avec Windows 95 OSR2. Ce système de fichiers, appelé FAT32 utilise des valeurs 32 bits pour les entrées de la FAT.

Avec l’apparition du système de fichiers FAT32, le nombre maximal de clusters par partition est passé de 65535 à 268 435 456. La FAT32 autorise donc des partitions d’une taille beaucoup plus élevée (jusqu’à 2 téraoctets). Puisqu’une partition FAT32 peut contenir beaucoup plus de clusters qu’une partition FAT16, il est possible de réduire de façon signifiante la taille des clusters et de limiter par la même occasion le gaspillage d’espace disque. A titre d’exemple, pour une partition de 2Go, il est possible d’utiliser des clusters de 4Ko avec le système FAT32 (au lieu de 32Ko en FAT16), ce qui diminue l’espace gaspillée par un facteur 8.

En contrepartie la FAT32 n’est pas compatible avec les versions de Windows antérieures à la version OEM Service Release 2. Un système démarrant avec une version précédente ne verra tout simplement pas ce type de partition.
Autre remarque, les utilitaires de gestion de disque fonctionnant en 16 bits tels que d’anciennes versions de Norton Utilities ne pourront plus fonctionner correctement. En terme de performances, l’utilisation d’un système FAT32 au détriment du système FAT16 apporte en pratique un léger gain en performances de l’ordre de 5%.

Système de fichier FAT16 ou FAT32?

Le nombre de clusters étant limité, la taille maximale d'une partition dépend de la taille de chaque cluster. Voyons voir la taille maximale d'une partition suivant la taille des clusters et du système de fichiers utilisé:

Taille d'un cluster Système de fichier FAT16 Système de fichier FAT32
512 octets 32 Mo N/A
1 Ko 64 Mo N/A
2 Ko 128 Mo N/A
4 Ko 256 Mo 8 Go
8 Ko 512 Mo 16 Go
16 Ko 1 Go 32 Go
32 Ko 2 Go 2 To

Lorsque vous formatez un disque dur, il faut donc déterminer avec précaution le type de système de fichiers à utiliser, en prenant celui permettant d'avoir un espace disponible le plus proche possible de la taille désirée!