Comment fonctionnent les inodes Linux ?

Bg1 Resize

Si vous utilisez Linux depuis assez longtemps, vous avez probablement vu le terme « inodes ». C’est quelque chose qui apparaît de temps en temps, mais qui n’affecte pas ce que vous faites. Ici, nous allons expliquer ce que sont les inodes et comment cela fonctionne.

Qu’est-ce que les inodes ?

Dans une bibliothèque, tous les livres sont organisés par genre, nom d’auteur ou groupe d’âge du public. Si vous voulez localiser un thriller de « Bobby Daniels », vous vous dirigeriez directement vers la section des thrillers et commenceriez à chercher des noms d’auteurs commençant par « B ». Tout comme une bibliothèque, tous les fichiers dans un système Linux sont organisés pour une récupération et une utilisation efficaces. Un inode est une entité qui aide à l’organisation des fichiers au sein d’un système Linux.

Qu’est-ce que les métadonnées de fichier ?

Disons que nous avons un fichier appelé « sample.txt » contenant les données « hello ».

Ce fichier a des données et des informations pertinentes comme la taille du fichier, les autorisations, la propriété utilisateur et de groupe, les horodatages de création/accès/modification, le nombre de liens, etc. Toutes ces informations sont collectivement appelées métadonnées de fichier.

qu'est-ce qu'un Inode - métadonnées de fichier

Qu’est-ce que les systèmes de fichiers ?

Sur un dispositif de stockage comme un disque dur, une partition est formatée en tant que système de fichiers avant d’être utilisée pour le stockage de fichiers. Un système de fichiers est le bibliothécaire du disque dur. Formellemnt, c’est un ensemble de structures de données et d’algorithmes qui fonctionnent ensemble pour stocker méthodiquement des fichiers sur la partition.

Les partitions sur les systèmes Linux sont souvent formatées avec EXT4. D’autres systèmes de fichiers comme le système de fichiers B-Tree (BTRFS), le système de fichiers Reiser, ZFS, etc. sont également disponibles pour utilisation.

Les relier tous ensemble

L’inode est une structure de données sur Ext4 qui contient toutes les métadonnées d’un fichier.

Inode en détail

Bien sûr, il y aurait de nombreux fichiers sur un système de fichiers. Comme vous l’avez deviné, chaque fichier aurait son propre inode. Pour identifier de manière unique les inodes, chaque inode est numéroté.

À quoi ressemblerait la numérotation des inodes ?

Les numéros d’inodes sur un système de fichiers commencent à 1. Les dix premiers inodes sont réservés à un usage système. Les fichiers utilisateurs ont leurs métadonnées stockées à partir de l’inode 11. Tous les inodes sont soigneusement empilés dans une table d’inodes.

Une entrée dans la table d’inodes aurait une taille de 256 octets. Pour un fichier, Linux organise intelligemment toutes les métadonnées dans 256 octets ! De plus, un inode pour un fichier aurait également des informations sur l’emplacement des données du fichier dans le système de fichiers. Rappelez-vous – seules les métadonnées du fichier sont stockées dans l’inode.

Le nombre total d’inodes dans un système de fichiers dépend de l’espace disponible et du nombre de fichiers pouvant être stockés sur la partition.

Comment les inodes sont-ils alloués et désalloués ?

Au fur et à mesure que l’utilisateur ajoute des fichiers à un système de fichiers fraîchement formaté, les inodes à partir de 11 sont alloués pour contenir les métadonnées des fichiers.

Il existe une autre structure de données appelée « bitmap d’inodes » pour suivre l’état d’allocation d’un inode. C’est une collection de bits qui agit comme une carte.

Considérons huit bits dans le bitmap d’inodes pour indiquer l’état d’allocation des inodes 11 à 18 comme indiqué dans le tableau ci-dessous. Une valeur de 1 dans le bitmap signifie que l’inode est alloué, c’est-à-dire utilisé pour contenir les métadonnées d’un fichier. Une valeur de 0 dans le bitmap signifie que l’inode n’est actuellement pas utilisé. Ici, nous pouvons voir que l’inode 17 est en cours d’utilisation.

Bitmap d'inodes

Dans le cas où le fichier dont les métadonnées se trouvent dans l’inode 17 est supprimé, alors son état de bitmap correspondant deviendrait 0, indiquant qu’il est libre d’être utilisé par un autre fichier.

Tableau bitmap d'inodes

Comment voir le numéro d’inode d’un fichier ?

Il existe deux façons de le faire.

La première consiste à utiliser la commande ls avec l’option -i, suivie du nom d’un fichier. Le premier champ dans la sortie est le numéro d’inode qui contient les métadonnées de « sample.txt ».

Les mêmes informations peuvent être obtenues en utilisant la commande stat suivie du nom du fichier.

Inode 8

Pour voir le nombre total d’inodes disponibles pour une partition, la commande df peut être utilisée avec l’option -i.

Dans la partition « /dev/sda4 », 404754480 inodes sont disponibles à l’utilisation, dont seulement 359044 inodes sont utilisés.

Conclusion

Par nature, la table d’inodes empile méticuleusement les métadonnées de tous les fichiers dans les inodes, ainsi que des informations sur l’emplacement des données des fichiers. Tout ce que nous avons discuté sur les inodes Linux n’est que la pointe de l’iceberg. Pour plus d’informations sur son fonctionnement interne, vous pouvez consulter ce lien.