Ext4

TBD : rendre joli. Faire des dessins d'inode. bien séparer ext2/3/4

ext4 est le format standard du système de fichier Linux. Il est une évolution de l'ext3 (il augmente la taille maximale des fichiers et leurs gestion), lui même une évolution d'ext2 (ext3 est ext2 plus la journalisation).

Principe

Plutôt que d'avoir une structure linéaire globale où sont stockés les structures de tous les fichiers (comme la FAT), ext utilise pour chaque fichier une structure arborée nommée inode qui contient à la fois les méta données et la structure de stockage.

Format

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

  1. superblock (taille 1 bloc)
  2. groupes (taille variable de plusieurs bloc)
  3. bitmap des blocs (taille 1 bloc)
  4. bitmap des inodes (taille 1 bloc)
  5. liste des inodes (taille variable de plusieurs bloc)
  6. blocs de données (taille variable de plusieurs bloc)

superblock

La première partie de la structure, le superblock contient diverse informations sur le volume. En particulier :

Le superblock est dupliqué, pour pouvoir le reconstitué en cas de corruption.

Groupes

Les inodes et les blocs sont partitionnés en groupes. Chaque groupe forme un intervalle de blocs, ce qui permet, de limiter la fragmentation si on contraint les fichiers à être stockés avec des blocs du même groupe.

bitmap des blocs et ds inodes

bitmap permettant de trouver un bloc ou un inode libre.

Table des inodes

Table

un tableau d'inode. Chaque inode fait une taille par défaut de 256B en ext4 (128B pour ext2 et ext3). Il est impensable d'avoir $2^{32}$, car la table seule ferait $2TiB$. L'usage veut que l'on ait 1/(16KiB) fois la taille du volume inode, ce qui fait $1.5\%$ de la taille totale du disque.

La numérotation des inodes commence à 1, il n'existe pas d'iode 0.

Inode

Un inode est une structure permettant de stocker les méta-données et la structure d'un élément du système de fichiers : dossier ou fichier.

Cette structure est composée :

Remarquez que le nom n'est pas présent dans un inode, au contraire du format FAT.

blocs

élément

dossier : liste de noms plus inodes permet des lien fort entre plusieurs fichiers qui se retrouvent identique. On incrémente le nombre de référence.

contient toujours . et ..

fichier : stockage

adressage

Cette adressage en arbre à deux grandes propriétés :

$2^{32}$ blocs et taille de secteur de 512B. On peut stocker 128 adresses de blocs.

Nombre de blocs stockés :

Notez que l'on ne préremplit pas la structure, on alloue les blocs indirect que si le fichier est assez gros pour en avoir besoin. On ne gâche donc pas de place de stockage (ou si peu).

Avec une taille de bloc de 4KiB$, on arrive à des tailles respectables. De plus ext4 permet de stocker des intervalles contiguë de blocs plutôt qu'une unique adresse, ce qui rend la taille d'un fichier virtuellement infinie.

élément de design

inode :

  • on ne stocke que ce qui est nécessaire
  • stockage par niveau : l'arbre démultiplie les possibilités de stockage

Opérations

la gestion des droit est au cœur du système.

Le cache fait que l'accès va aller vite, on a les tables directement en mémoire. La FAT en entier ne tient pas dedans.

Ajout

idem que pour la FAT

Suppression

On décrémente la référence. et si référence vaut 0, on supprime l'inode.