Le format EXT (extended file system) est utilisé dans le monde Unix. On en est à la version 4. Chaque version apporte un plus par rapport à la version précédente et reste donc compatible, parfois même dans les deux sens.
- EXT-2 est le format de base, qui est encore utilisé avec des cartes de mémoire flash.
- EXT-3 ajoute le système de journal au format EXT-2. Un ancien ordinateur n'utilisant que le format EXT-2 peut lire le système de fichiers EXT-3, mais ne touchera pas au journal.
- EXT-4 augmente la grandeur maximale des fichiers et utilise des EXTENTS, c.à.d. l'allocation d'une zone contiguë au fichier créé. Cela permet au fichier de grandir sans créer des fragments.
Partition (volume)
Chaque partition au format EXT commence par un boot bloc et un superbloc. Le premier bloc contient le code de démarrage si la partition est marquée active. Le second bloc contient les informations relatives au système de fichiers (par exemple le nombre de inodes et l'emplacement du répertoire racine).
Répertoires
L'accès aux fichiers se fait tout comme avec le système FAT par le répertoire qui est hiérarchisé, mais le répertoire ne contient qu'un numéro d'inode. Les répertoires qui forment une arborescence logique se trouvent tous dans la partie "données" de la partition. Il n'y a pas de différence entre un fichier-répertoire et un fichier-données.
iNode (rien à voir avec Apple)
L'élément d'inode contient toutes les informations relatives au fichier (et non plus l'élément de répertoire): adresses physiques des blocs, paramètres divers (propriétaire, horodatage, mode (Read/Write/eXecute), nombre de links entrants (nombre de références).
L'inode a une longueur fixe et ne contient pas le nom du fichier (qui a une longueur variable): un fichier ne connait donc pas son nom (il peut en avoir plusieurs, s'il y a plusieurs éléments du répertoire qui pointent vers le inode du fichier). La commande DOS .. (répertoire parent) n'existe pas sous linux!
Le nombre d'inodes est fixé à la création du système de fichiers. On peut tomber à court de inodes quand le volume contient de nombreux petits fichiers.
Chaque fichier est identifié par son numéro de inode. L'inode est toujours associé au fichier, même quand celui-ci est déplacé d'un répertoire vers un autre. L'accès physique au fichier se fait par l'inode: on pourrait dire que le tableau d'inodes reprend les fonctionalités du FAT (en ce qui concerne l'adressage des fichiers).
Le tableau de inodes est comparable au MTF de NTFS, mais il s'agit d'un tableau (alors que le MFT est une base de données).
Un unode se compose d'un nombre défini de champs (qui varient selon la version EXT). 13 champs sont prévus pour l'adressage du fichier. Voici un exemple avec des champs de 4 octets et des blocs de 4ko:
- Pour les tout petits fichiers: les données sont reprises dans les 13 premiers champs (on a 52 octets de disponibles pour l'adressage immédiat).
- Les 10 premiers champs pointent vers le bloc de donnée correspondant. L'accès direct est utilisé pour les fichiers de 53 à 40960 octets.
- Le champ 11 pointe vers un bloc d'indirection (accès indirect). Ce bloc d'indirection contient dans notre exemple 1000 adresses de blocs. La taille du fichier passe à 40960 (direct) + 1000 × 4096 = 4.136.960 octets (4MB environ)
- Le champ 12 pointe vers un bloc de double indirection, chaque champ dans chaque bloc pointant vers un bloc du fichier. On peut donc avoir des fichiers de taille 40.960 (direct) + 4.096.000 (simple indirection) + 4.096.000.000 (double indirection) = 4.096.413.960 octets (4GB environ).
- Le champ 13 (non repris sur le schéma) pointe vers un bloc de triple indirection. La taille maximale d'un fichier dans notre configuration-exemple est donc d'environ 4TB).
L'accès immédiat est utilisé uniquement avec les tous petits fichiers. Dès que la taille grandit, on passe à l'adressage direct, on y ajoute éventuellement l'adressage indirect, etc. Même un fichier de 4GB utilise toujours l'accès direct pour le début des données.
|