Skip to content
MaximeCheramy edited this page Feb 23, 2012 · 3 revisions

Ext2

Le disque est fragmenté en blocks et ces blocks sont regroupés sous la forme de groupes de blocks. Au début du premier groupe de blocks, soit à l'offset 1024 octets, on trouve le superblock qui regroupe les informations qui décrivent le FS. Ce superblock peut se retrouver en backup au début d'autres groupes de blocks.

Associé à chaque groupe de blocks, on retrouve le block bitmap, l'inode bitmap et la table d'inodes. Le block bitmap permet de savoir quels blocks sont disponibles ou occupés et l'inode bitmap permet de savoir quels inodes sont occupés dans la table d'inode associé au groupe. La table d'inode quant à elle permet de stocker les informations qui concernent un inode (droits, taille, date, adresses des blocks où sont les données).

Superblock

C'est dans le superblock que l'on retrouve les informations telles que :

  • Nombre d'inodes (total mais aussi libres)
  • Nombre de blocks (total mais aussi libres)
  • Nombre de blocks par groupe
  • Nombre d'inodes par groupe
  • Taille d'un block
  • Nom du volume
  • Le premier inode
  • ...

Le détail est donné ici : http://www.nongnu.org/ext2-doc/ext2.html#SUPERBLOCK

Table de description des inodes

Dans chaque groupe de blocks, on retrouve une table qui contient la description de chaque inode. L'inode bitmap permet de savoir si une entrée est utilisée ou non (l'information qui permet de savoir quels sont les inodes libres et occupés est ainsi regroupée).

Dans la description d'un inode, on retrouve : mode, uid, gid, date création, date modification, taille, adresse des blocks de données, etc. Le nom du fichier est disponible dans le répertoire qui pointe vers cet inode.

Le détail ici : http://www.nongnu.org/ext2-doc/ext2.html#INODE-TABLE

Pour donner les adresses des blocks de données, c'est un peu plus tricky : dans la description de l'inode, on retrouve un tableau contenant 15 adresses. Les 12 premières adresses pointent directement vers des blocks de données, ensuite la 13ème adresse pointe vers un block qui va contenir les adresses des blocks suivants (accès indirect), la 14ème adresse pointe vers un block qui contient des adresses qui pointent vers des blocks qui contiennent à nouveau des adresses de blocks (double indirection) et la 15ème adresse c'est la même chose avec une niveau supplémentaire (triple indirection).

L'explication détaillée en anglais : http://www.nongnu.org/ext2-doc/ext2.html#I-BLOCK

Dossiers

Les dossiers sont stockés dans des blocks de données sous la forme de liste chaînée. Une entrée contient le numéro d'inode, son nom, la longueur du nom, le type (pour éviter de devoir lire la table de description de chaque inode obligatoirement) et la taille de l'entrée ou autrement dit, la position relative de la prochaine entrée du dossier.

Pour avoir les détails : http://www.nongnu.org/ext2-doc/ext2.html#DIRECTORY

Clone this wiki locally