FAT

Le format FAT existe depuis l'aube de l'informatique. On utilise principalement le format :

Le format exFat étant essentiellement une mise à jour du format FAT32, c'est lui que nous allons présenter (et donnerons lorsque c'est nécessaire les différence d'avec le format FAT32).

Principe

Chaque ficher est stocké dans une suite de blocs du disque dur. Un bloc est un multiple d'un secteur physique et correspond à un découpage logique du disque. Le nombre maximum de bloc est fixé par le format, pour augmenter la taille de ce que l'on peut stocker on augmente la taille des blocs (de 4Kib, à 32MiB).

La FAT est un tableau de taille égale au nombre de bloc auto-référant se comportant comme une liste chaînée contenant les bloc sde tous les fichiers qui y sont stockés.

Par exemple, en considérant la FAT ce-dessous de taille 8 :

index valeur
0    :  2
1    :  8       
2    :  3
3    :  8
4    :  7
5    :
6    :
7    :  1

Et que l'on sait que notre file système contient deux fichiers, l'un commençant bloc 0, l'autre en 4, on en conclut que :

Les blocs peuvent être de deux types :

On stocke donc à la fois les données et la structure en dossier dans les blocs eux même.

Tailles Limites

Structure du disque

Le découpage de la structure est en 4 parties :

  1. Boot Area : contient les informations générales sur le volume
  2. FAT : la fat elle même
  3. bitmap des blocs
  4. blocs de données

Boot Area

La première partie de la structure, nommé Boot Area contient diverse informations sur le volume. En particulier :

La Boot Area est contenue sur les 12 premiers secteurs et est dupliquée dans les 12 suivant.

FAT

Est constituée d'un tableau de taille égale au nombre de blocs, chaque case du tableau faisant 32b = 4B.

C'est ce tableau qui va permettre de connaître les bloc où sont écrit des données.

Supposons que les données d'un fichier soient écrites sur les blocs numéros 4, 12, 8 et 45 dans cet ordre alors :

  1. la case d'indice 4 aura 12 comme valeur,
  2. la case d'indice 12 aura 8 comme valeur,
  3. la case d'indice 8 aura 45 comme valeur,
  4. la case d'indice 8 aura 0xFFFFFFFF comme valeur, signifiant que le fichier s'arrête.

Les trois premiers blocs étant intégralement remplis.

Cette structure en liste chaînées permet de reconstituer facilement le contenu d'un fichier si l'on possède son premier bloc.

Cette partie possède potentiellement un bloc consacrée aux transactions, pour permettre un système journalisé, mais comme la journalisation n'est pas recommandée pour les disques amovible et que le format FAT ne sert presqu'exclusivement à ça, ce n'est pas utilisé en pratique.

La taille de cette partie est donc de 4B fois le nombre de blocs, qui est négligeable par rapport à la taille du disque.

En effet, la taille maximum de la FAT vaut au maximum $4/512 \simeq .7\%$ de la taille totale.

Bitmap

Une bitmap est associé aux blocs :

Ceci permet de rapidement savoir si un bloc est libre (par exemple, on prend 64b de cette partie et si ce nombre est inférieur au maximum (se fait en un cycle du processeur), il y a des blocs libres parmi les 64 considéré).

La taille de cette partie est le nombre de bloc bits, donc au maximum $1/(512 \cdot 8) \simeq .1\%$ de la taille totale.

Blocs de données

Chaque bloc est soit :

Bloc dossier

Contient une entrée pour chaque dossier ou fichier le constituant, cette entrée détermine :

Renseigner la taille permet de savoir où s'arrêter dans le dernier bloc.

La taille en bloc est déterminée par la FAT.

Bloc fichier

Pas de structure, uniquement une suite de byte qui constitue le ficher.

Opérations

l'ajout suppression de fichiers va rendre non linéaire le stockage ds fichiers.

Ajout

On suit la hiérarchie des dossiers jusqu'à arriver au bloc contenant le dossier pour lequel on veut ajouter une entrée. Si ce bloc est plein, on cherche un bloc libre pour étendre l'entrée de ce dossier puis on ajoute l'entrée.

On peut maintenant chercher autant de bloc libre que nécessaire pour stocker le contenu de l'entrée an ajoutant une chaîne à la FAT.

Suppression

On ne supprime que l'entrée dans le dossier contenant le fichier à supprimer. Le contenu reste présent :

Il est donc possible de retrouver les données si on cherche directement sur le disque dur.

Formater le disque dur ne fait que refaire une FAT vierge, le contenu du disque dur n'est pas automatiquement effacé. Il est la aussi possible de chercher les différent bloc pour retrouver le fichier, surtout si les blocs sont continus.

Pour supprimer définitivement des données, il faut re-écrire sur tous les byte du disque dur pour en effacer le contenu (et il faut le faire plusieurs fois pour les disques magnétique à cause de la rémanence des données)