Systèmes de fichiers : FAT12 à 32 et exFAT, conçus pour le grand public

Systèmes de fichiers : FAT12 à 32 et exFAT, conçus pour le grand public

Un bout de chemin parcouru

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

06/07/2023 12 minutes
20

Systèmes de fichiers : FAT12 à 32 et exFAT, conçus pour le grand public

Les systèmes de fichiers FAT32 et exFAT sont très utilisés pour les supports amovibles. Et pour cause : tous les systèmes d'exploitation aujourd'hui savent les lire et écrire. Voici donc les caractéristiques et le fonctionnement de ces deux systèmes de fichiers. Les NTFS et ReFS seront l'objet de l'article suivant.

La FAT (File allocation table) est le plus ancien système de fichiers de Microsoft. Imaginez : la première version a été développée par Bill Gates et Marc McDonald en 1977, essentiellement pour les disquettes de 5,25 pouces de 160 ko.

Ce système de fichiers avait pour lui sa très grande simplicité de conception, comprenant le secteur d’amorçage, les tables d’allocation elles-mêmes ainsi que le répertoire racine, dans lequel on trouve toutes les données. À cette époque, on ne parle pas encore d’arborescence, car les dossiers n’existent pas (ils n’arriveront que dans MS-DOS 2.0).

Il apparait vite cependant que la FAT d’origine doit évoluer pour accompagner les améliorations matérielles : l’augmentation du stockage sur les disquettes et, surtout, l’arrivée des disques durs. Comme indiqué dans notre premier article, la taille du stockage peut changer la manière dont un système de fichiers le découpe en blocs.

Lire notre dossier sur les systèmes de fichiers : 

La première FAT fut renommée FAT12 quand la FAT16 fut proposée en 1984. L’ajout de ce chiffre venait signaler une information simple : le nombre de bits consacrés au codage des numéros d’unités d’allocation. Cette taille entrainait des répercussions directes sur plusieurs caractéristiques cruciales du système de fichiers. Avec la FAT12, on ne pouvait ainsi avoir que 4 096 blocs en théorie, bien qu’en pratique on soit à 4 084. La taille de ces derniers déterminait ensuite la taille maximale de la partition : de 2 Mo pour des blocs de 512 octets à 16 Mo pour des blocs de 4 ko.

La FAT16, elle, codait les numéros d’unités sur 16 bits, et donc 65 536 blocs. Autrement dit, un périphérique de stockage est découpé en 65 536 « morceaux » en FAT16 contre 4 096 en FAT12. Son arrivée a permis d’aller bien au-delà des 16 Mo maximaux de la FAT12, la nouvelle limite s’établissant à 2 Go, et même 4 Go avec l’arrivée plus tard de Windows NT 4 .0.

Cependant, cette taille dépendait directement du choix pour la taille des blocs. Voici quelques exemples :

  • 512 octets : 32 Mo maximum
  • 1 ko : 64 Mo maximum
  • 4 ko : 256 Mo
  • 16 ko : 1 Go
  • 32 ko : 2 Go

Dans notre précédent article, nous expliquions le délicat équilibre entre taille de la partition et type de données. Un fichier ne peut en effet occuper qu’un nombre entier de blocs. Si vous utilisiez par exemple un fichier de 34 ko sur une partition de 2 Go en FAT16, il fallait alors deux blocs, ce qui provoquait une perte de 30 ko. Les grandes tailles de blocs conviennent ainsi mieux aux données volumineuses (l’exFAT a par exemple été pensée pour le stockage des appareils photos numériques).

L’une des plus grosses limitations de ces deux premières FAT était la nomenclature des fichiers, qui établissait la fameuse règle « 8.3 » : huit caractères, un point, puis trois caractères. La première partie était simplement appelée le préfixe, les trois derniers « l’extension », le tout formant le « nom ». Cette convention a persisté jusqu’à une évolution de la FAT32, dont nous allons maintenant parler.

FAT32, une évolution majeure

Après un codage des unités d’allocation sur 12 et 16 bits, la FAT32 débarque en 1996 (12 ans après la FAT16 donc) avec un codage sur… 28 bits. Son arrivée provoque plusieurs changements importants dans la manière dont le stockage est considéré sous MS-DOS et Windows. Précisons qu’au lancement de Windows 95, c’est encore la FAT16 qui règne en maître. La prise en charge de la FAT32 est intégrée à la révision OSR2 du système.

Le codage sur 28 bits apporte tout d’abord une envolée dans les tailles maximales : 4 Go pour les fichiers et 2 To pour les partitions. Des chiffres si supérieurs à ceux de la FAT16 que la FAT32 a pu rester en place pendant de nombreuses années. Pour le grand public, la question du passage à NTFS ne s’est en effet pas posée avant Windows XP en 2001, ou même Vista en 2006. Mais attention : en dépit de cette taille limite de 2 To pour les partitions, les outils intégrés de Microsoft ne dépassaient pas 32 Go. Des logiciels tiers permettaient de s’affranchir de cette limite.

La FAT32 a eu d’autres impacts tout aussi concrets. D’abord, un nombre maximal de fichiers par partition de 268 435 456 ainsi qu’un maximum de 65 534 fichiers par dossier. Si ce dernier nombre vous paraît curieux – pourquoi pas 65 536 ? – il faut savoir que deux entrées étaient réservées pour indiquer le dossier courant et le dossier parent.

Les personnes ayant vécu l’arrivée de la révision OSR2 de Windows 95 se souviennent sans doute de deux conséquences très positives de cette mise à jour. D’abord, une plus grande quantité d’espace disponible. Il ne s’agissait pas de compression, mais d’une réduction importante de la taille des blocs. En FAT16 par exemple, une partition de 1 Go nécessitait des blocs de 16 ko. En FAT32, la même partition utilise des blocs de 4 ko (valables jusqu’aux partitions de 1 To). En clair, dans la plupart des cas, l’impact a été très positif, puisque l’espace perdu a été drastiquement réduit, provoquant une augmentation significative de l’espace disponible.

Enfin des noms longs

L’autre grand changement est l’arrivée des noms longs. Cependant, il ne s’agit pas à techniquement parler d’une évolution de la FAT32, mais d’une fonction apportée par l’extension VFAT. Avec cette dernière, les noms n’étaient plus cantonnés au schéma 8.3 ASCII, puisque la taille maximale était de 255 caractères Unicode (UTF-16). Non seulement il était possible de donner des noms plus précis aux fichiers (très utile pour les documents), mais on pouvait utiliser presque tous les caractères disponibles.

VFAT, pour Virtual FAT, est une surcouche de la FAT32. L’approche retenue alors avait l’avantage de permettre les noms longs sous Windows 95 OSR2, tout en préservant la compatibilité avec les systèmes et logiciels qui ne la prenaient pas en charge. En outre, pour les nouveaux fichiers créés directement avec VFAT, cette dernière créait automatiquement une version « tronquée » au format 8.3. Par exemple, le fichier « Compte-rendu de réunion.pdf » devenait « COMPTE~1.PDF ».

Les informations de la VFAT, que l’on peut comparer à des métadonnées, étaient stockées dans des zones de 26 octets pouvant contenir un maximum de 13 caractères Unicode. Dans ces champs, présents dans la structure classique des répertoires, on trouvait le nom au format 8.3, ainsi que d’autres informations comme la taille, la date et l’heure de dernière modification. Selon la quantité d’informations, il était possible de chainer jusqu’à 20 de ces champs, permettant de grimper jusqu’aux 255 caractères maximum du nom long. Les quelques octets en trop sont marqués pour ne pas en tenir compte.

Fonctions, limitations et droits

La FAT32 va nous servir, en quelque sorte, de mètre-étalon. Ce système de fichiers est ancien mais encore utilisé de nos jours. Surtout, au-delà de ses attributs primaires de système de fichiers, il ne propose presque aucune fonction, permettant d’autant mieux de mesurer le chemin parcouru d’une part, et d’autre part de mieux mettre en évidence les propriétés d'autres systèmes aux orientations plus spécifiques.

La FAT32 reste utilisée sur certains supports comme les clés USB. Il arrive encore régulièrement que de petits disques durs externes soient ainsi formatés quand ils doivent servir à faire passer facilement des données entre plusieurs ordinateurs équipés de systèmes différents. En effet, macOS et les distributions Linux savent lire et écrire sur la FAT32 (NTFS n’est que lu dans la plupart des cas). Seule la taille maximale de 4 Go pour les fichiers pose alors réellement problème.

Elle ne répond cependant plus aux besoins modernes. Elle ne prend en charge aucune forme de journalisation pour suivre les modifications sur les fichiers, pas plus qu’elle ne sait compresser. Elle n’intègre pas de gestion des permissions de fichiers ni aucun mécanisme quelconque de chiffrement.

Surtout, la FAT32 fragmente vite. L’utilisation d’un défragmenteur était recommandée, et si Microsoft intégrait l’utilitaire defrag.exe pour s’en charger, certains logiciels spécialisés effectuaient le travail plus vite, et parfois mieux.

La fragmentation, au sens où on l’entend habituellement, est le phénomène se produisant quand les morceaux d’un fichier sont écrits dans des endroits non contigus. Sur un disque dur, la tête de lecture perd du temps à se déplacer sur le plateau, entrainant une baisse des performances. Avec le temps, les écritures et suppressions de données, le problème grandit. Dans les utilitaires de défragmentation, on pouvait ainsi voir des données réparties aux quatre coins du disque, avec de nombreux vides.

Le problème principal de la FAT32 est qu’elle ne tient pas de liste à jour des emplacements libres contigus. Chaque fois que des données sont écrites, il faut consulter la table d’allocation pour repérer les emplacements libres. Les informations sont alors inscrites dans l’ordre d’apparition des espaces libres, de l'extérieur du disque vers son centre.

Avec le temps, des optimisations ont été mises en place dans les outils et pilotes, visant à réduire la fragmentation au moment de l’écriture et à la traiter a posteriori quand elle s’installait. Mais même si la défragmentation était efficace, elle entrainait une consommation élevée des ressources, monopolisant les ressources du disque pendant l’opération. C’était tout particulièrement vrai durant les nombreuses années des disques durs IDE, qui ne pouvaient effectuer qu’une opération de lecture ou écriture à la fois.

Des changements plus profonds dans la FAT32 auraient entrainé une cassure dans la compatibilité. Ils furent donc gardés pour NTFS.

Un mot enfin sur l’aspect juridique entourant la FAT32. Pendant un temps, Microsoft a fait valoir des brevets arrivés bien tardivement : 2006, soit plus de 30 ans après la première FAT. Assez vite, des batailles ont eu lieu, qui ont permis à Microsoft d’engranger de coquettes sommes, en particulier des constructeurs Android. Cependant, cette propriété intellectuelle fut attaquée en Allemagne. Microsoft perdit les droits sur un brevet essentiel en 2013 et même si la société fit appel de la décision, celle-ci fut confirmée en 2014. Les autres brevets ont expiré en 2021, faisant tomber la FAT32 dans le domaine public.

Bon, et l’exFAT alors ?

L’exFAT est un autre système de fichiers provenant de chez Microsoft. Contrairement à ce que le nom laisse supposer, il ne s’agit pas d’une variante de la FAT, même si l’exFAT embarque bien une table d’allocation. Cette approche a été retenue pour sa légèreté, l’exFAT ciblant la mémoire flash, tout particulièrement les clés USB et les cartes mémoire pour appareils photo numériques.

Ce système de fichiers est apparu en 2006 avec Windows CE 6.0 et ne comporte pratiquement aucune des fonctions apparues avec le temps dans NTFS (nous les détaillons dans l'article suivant), à l’exception du chiffrement. Ce n’est pas un système journalisé, l’exFAT se servant d’une simple table d’allocation pour les données et d’une carte des espaces libres pour les inscrire. De manière générale, la structure de l’exFAT a été simplifiée pour ne pas interférer avec les débits parfois faibles de la mémoire flash sur de nombreux supports.

L’exFAT n’est pas soumise aux limites de la FAT32, la limite de taille d’un disque formaté ou d’un fichier étant dans les deux cas de 128 Po. Les noms longs sont gérés (le format 8.3 n’est même pas pris en charge) et la taille des blocs peut grimper jusqu’à 32 Mo, un chiffre élevé conçu pour accompagner le stockage de photos volumineuses ou de vidéos.

L’exFAT est supportée – en lecture comme en écriture – par tous les systèmes d’exploitation courants depuis Windows XP, macOS 10.6.5, le noyau Linux 5.4, Android 13 et iOS. On trouve souvent des recommandations à ce sujet, notamment chez Apple : la FAT32 pour les volumes de 32 Go ou moins, exFAT pour les volumes plus importants.

Le système de fichiers est devenu l’un des rares à pouvoir assurer la liaison entre plusieurs appareils via un disque externe ou une clé toujours reconnue. Situation qui a failli ne jamais arriver, puisqu’il a fallu attendre 2019 que Microsoft renonce aux redevances de la licence et annonce l’ouverture des spécifications, en vue d’une intégration dans le noyau Linux. Elles ont depuis été versées au fonds Open Invention Network. Trois mois plus tard, le noyau Linux 5.4 était disponible, avec le support natif de l’exFAT.

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

FAT32, une évolution majeure

Enfin des noms longs

Fonctions, limitations et droits

Bon, et l’exFAT alors ?

next n'a pas de brief le week-end

Le Brief ne travaille pas le week-end.
C'est dur, mais c'est comme ça.
Allez donc dans une forêt lointaine,
Éloignez-vous de ce clavier pour une fois !

Fermer

Commentaires (20)


Une petite imprecision : VFAT n’est pas qu’une extension de la FAT32, elle existait aussi sur FAT16 depuis la sortie Windows 95.


Enfin des noms longs



je ne dirai pas enfin on a toujours la limitation en NTFS


Je crois bien qu’en NTFS, il est possible d’avoir des noms bien plus longs, à condition que les applications utilisent les bonnes API Win32.


Vekin

Je crois bien qu’en NTFS, il est possible d’avoir des noms bien plus longs, à condition que les applications utilisent les bonnes API Win32.


En fait depuis Windows 10 1607 il faut changer une clé de registre pour avoir droit à plus de 260 caractères pour le chemin complet d’un fichier. Ce qui est une limite tout de même assez faible si on tient compte de la longueur de certains dossiers pré-définis, une arborescence profonde est vite arrivée…


EDG

En fait depuis Windows 10 1607 il faut changer une clé de registre pour avoir droit à plus de 260 caractères pour le chemin complet d’un fichier. Ce qui est une limite tout de même assez faible si on tient compte de la longueur de certains dossiers pré-définis, une arborescence profonde est vite arrivée…


En entreprise je voudrais savoir si il y a qu’ils l’ont activé ou pas ?


@vincent_h
“Les informations sont alors inscrites dans l’ordre d’apparition des espaces libres, du centre du disque vers son bord extérieur.”
il me semblait que les disques “commencent” à l’extérieur, donc la phrase me semble étrange (je ne passe volontairement pas par “signaler une erreur” car je ne sais pas si c’en est une et la réponse pourrait en intéresser d’autres)



edit : merci pour l’article ;)


Effectivement, c’est logique d’ailleurs, à vitesse de rotation et densité constantes. C’est corrigé merci :)


Vincent_H

Effectivement, c’est logique d’ailleurs, à vitesse de rotation et densité constantes. C’est corrigé merci :)


Sur les disquettes et les disques amovibles, c’était de l’intérieur vers l’extérieur, les disques durs, je ne sais pas, il font ce qu’ils veulent, pas de souci de compatibilité.


C’est pas Windows CE 6.0 au lieu de Windows CD 6.0 en 2006 ?


Est-ce qu’il n’y a pas de problème de fiabilité de la table des matières de l’exFAT comparé à la FAT32 ?



Je dois souvent corriger un disque exFAT quand je bascule de macOS à Windows.


Perso, j’ai abandonné l’exFAT sur disque dur externe depuis une mauvaise expérience il y a 10 ans qui a aboutit à de la perte de données.
C’était aussi pour avoir un disque compatible Mac/PC à l’époque et pareil avec quelques bizzareries très ponctuelles quand le disque passait de l’un à l’autre mais je n’ai pas été assez attentifs à ces signes.



Par la suite je me suis tourner vers l’achat d’un logiciel pour monter des disques NTFS sur Mac qui m’a donné satisfaction (en revanche la même solution pour faire du HFS+ sur Windows est à oublier)


Gorom

Perso, j’ai abandonné l’exFAT sur disque dur externe depuis une mauvaise expérience il y a 10 ans qui a aboutit à de la perte de données.
C’était aussi pour avoir un disque compatible Mac/PC à l’époque et pareil avec quelques bizzareries très ponctuelles quand le disque passait de l’un à l’autre mais je n’ai pas été assez attentifs à ces signes.



Par la suite je me suis tourner vers l’achat d’un logiciel pour monter des disques NTFS sur Mac qui m’a donné satisfaction (en revanche la même solution pour faire du HFS+ sur Windows est à oublier)


Les outils bas niveau de gestion des disques et partitions sont moins complets avec exFat. Par exemple, le redimensionnement ou déplacement d’une partition exFat ne sont pas disponibles. Je ne sais pas ce que valent les outils de réparations sous exFat, mais ils n’ont pas la patine des autres.



Donc exFat, c’est plus récent et moins supporté… J’ai tendance à le limiter aux clés USB.


exfat, c’était surtout un moyen pour microsoft de mettre encore plus de pression sur les entreprises produisant des périphériques et solutions basées sur gnu/linux afin de les mener à signer un accord de licence de brevet global sur GNU/Linux… le début des années 2000 était en mode “tu utilise windows, tu me paye, tu utilise linux, tu me paye (entre 11 et 50$) aussi” pour Microsoft.



Si les brevets logiciels étaient passées en europe à cette période, il y a fort à parier que les solutions type RedHat et SuSE auraient été sorties des entreprises assez rapidement… en tout cas là où je bossais (une gosse institution), c’était sur la table.


A priori, ca part surtout d’une prise en charge d’exFAT sous Mac OS assez médiocre.
J’ai le souvenir d’avoir vu pas mal de cas similaires lors de recherches.
Je vois qu’il y a toujours des remontées relativement récentes à ce sujet : https://gist.github.com/scottopell/595717f0f77ef670f75498bd01f8cab1



Certes il y a l’outil fsck_exfat qui permet de résoudre certains cas de figure. Perso j’étais dans celui avec le secteur de boot principal et auxiliaire tous deux corrompus. Et là c’est cuit, Testdisk non plus n’a pas fait de miracle.



Bref je suis d’accord avec ta conclusion, à utiliser uniquement pour des données dispensables soit parce qu’elles sont dupliquées ailleurs ou retrouvables facilement.


J’ai monté un 486DX4 100MHz avec des pièces trouvées à droite ou à gauche en début d’année, j’ai pas mal galéré, et pas seulement à cause du système de fichiers. Le souci c’est qu’il est très difficile de trouver des disques IDE d’époque (donc de petite capacité), on ne trouve en général que des disques des années 2000, donc de 300Go souvent. De ce fait, je me suis tourné vers l’installation de Windows 95 OSR2 après lecture des forums pour avoir le support de la FAT32. Mais mon problème principal est que les vieux BIOS de 486 (ma carte mère date de 1991) adressent les disques dur avec la méthode CHS (cylindres, têtes, secteurs) et que les disques de grosses capacité plus récents ne peuvent être qu’adressés en LBA (adressage de blocs logiques). Il m’a fallu installer “Ontrack Disk Manager” qui est un gestionnaire de démarrage qui s’intercale entre le BIOS et l’OS. Si je me souviens bien il y a ensuite une limite de taille max de partition pour le gestionnaire de partitions FDISK de DOS7. En passant par d’autres outils on s’en sort, mais c’est un peu compliqué, surtout quand tu dois passer par des disquettes… Mais au final ça fonctionne !



fry a dit:


il me semblait que les disques “commencent” à l’extérieur, donc la phrase me semble étrange




Les disques durs commencent par l’extérieur, mais les disques optiques commencent par l’intérieur (même si aucun n’est en FAT).


vi, j’ai pensé aux disques optiques après la réponse de Vincent, mais je me suis dit que c’était pas la peine de rajouter des choses ne concernant pas les disques durs :)



dtb06 a dit:


J’ai monté un 486DX4 100MHz avec des pièces trouvées à droite ou à gauche en début d’année, j’ai pas mal galéré, et pas seulement à cause du système de fichiers. Le souci c’est qu’il est très difficile de trouver des disques IDE d’époque (donc de petite capacité)




En général on utilise un adaptateur IDE -> SD ou IDE -> Flash. C’est plus facile à trouver en capacité inférieure (512Mo, 1Go ou 2Go)


Du temps où je bossais sur les OS de ‘thin clients’, on utilisait des SSD “Disk on Module” de 32Mb et 64Mb qui ressemblaient à des petites cartouches de console de jeu, directement insérées dans les ports IDE des cartes mères EPIA (qui avaient un pin n°20 fournissant une alimentation électrique au SSD)


ragoutoutou

Du temps où je bossais sur les OS de ‘thin clients’, on utilisait des SSD “Disk on Module” de 32Mb et 64Mb qui ressemblaient à des petites cartouches de console de jeu, directement insérées dans les ports IDE des cartes mères EPIA (qui avaient un pin n°20 fournissant une alimentation électrique au SSD)


A une époque on pouvait aussi utiliser des cartes mémoire CompactFlash, qui ont un connecteur IDE avec juste des pins plus proches que le connecteur standard, ainsi que des performances et une endurance prévue pour ce type d’utilisation.



Il suffisait d’un adaptateur qui écartait les pins, sans aucune électronique, pour pouvoir les brancher sur n’importe quelle carte mère IDE.