Menu Fermer

Inode dans Linux : qu’est-ce que c’est et comment les afficher

Dans Linux, l’Inode est l’abréviation de “index node” soit donc le nœud d’index que l’on peut rencontrer en Français sous le nom d’inoeud.
C’est un composant important du système de fichiers ext4 de Linux.

Si vous souhaitez en apprendre plus sur les inodes sur Linux avec une définition, leurs fonctionnement et utilisé et quelques commandes pour connaître l’utilisation des inodes et les inodes d’un fichier, vous êtes sur le bon tutoriel.

Inode dans Linux : qu'est-ce que c'est et comment les afficher

Que sont les inodes dans Linux

Un inode est une structure de données qui garde la trace de tous les fichiers et répertoires d’un système de fichiers basé sur Linux ou UNIX. Ainsi, chaque fichier et répertoire d’un système de fichiers se voit attribuer un inode, qui est identifié par un nombre entier appelé “numéro d’inode”. Ces identifiants uniques stockent des métadonnées sur chaque fichier et répertoire.

Tous les inodes d’un même système de fichiers sont uniques. Toutefois, le même numéro d’inode peut être utilisé dans différents systèmes de fichiers. En effet, l’ID du système de fichiers et chaque numéro d’inode sont combinés pour créer des étiquettes d’identification uniques.

Les inodes stockent des métadonnées telles que :

  • le bloc de disque où est la donnée est stockée
  • le type de fichier
  • la taille du fichier
  • l’identifiant du propriétaire
  • ID du groupe
  • les autorisations de lecture, d’écriture et d’exécution
  • Heure du dernier accès
  • Heure du dernier changement
  • Heure de la dernière modification
Un oeil avertit remarquera que le nom de fichiers n’est pas stocké dans l’inode.
En effet, dans ext4 de Linux, le nom de fichier est stocké dans un bloc de répertoire.
Ce dernier contient le numéro d’inode, le nom et la longueur du nom du fichier.
Structure des inodes dans le système de fichiers ext4 de Linux

Les inodes : comment ça marche

Lorsque du formatage d’une partition de disque, par exemple, en ext4 sur Linux. Le système de fichiers créé chaque inode.
Chaque inode possède alors un numéro d’inode, qui est unique au sein d’un système de fichiers. Le même numéro d’inode peut apparaître dans plusieurs systèmes de fichiers. Cependant, l’ID du système de fichiers et le numéro d’inode se combinent pour former un identifiant unique, quel que soit le nombre de systèmes de fichiers montés sur votre système Linux.

Tous les inodes sont conservés dans une seule table. En utilisant un numéro d’inode, le système de fichiers calcule facilement le décalage dans la table des inodes où se trouve cet inode.
Vous comprenez pourquoi le “i” de inode signifie index.

Lorsque vous créez, copiez ou déplacer un fichier

Comme expliqué ci-dessus, chaque inode est identifié par un numéro d’inode. Par conséquent, lors de la création ou de la copie d’un fichier, Linux attribue un numéro d’inode différent au nouveau fichier. Toutefois, lors du déplacement d’un fichier, le numéro d’inode ne change que si le fichier est déplacé vers un système de fichiers différent. Cette règle s’applique également aux répertoires.

Les inodes et les liens symboliques

Les liens symboliques aussi leurs propres inodes.
Ils peuvent être identiques ou différents de la cible, selon s’il s’agit d’un lien symbolique souple ou hardlink.
Si vous cherchez plus d’informations, consultez ce guide :

Limitations du nombre d’inodes dans un système de fichiers

Le nombre total d’inodes d’un système de fichiers est défini lors de sa création et ne peut pas être modifié dynamiquement.
Il indique le nombre maximal de fichiers qu’un système de fichiers peut supporter.
Il est donc important de vérifier régulièrement l’utilisation des inodes pour s’assurer qu’elle s’ajuste aux limites configurées.

Si vous avez déjà obtenu le message d’erreur suivant en essayant de créer un nouveau fichier sur un serveur – alors que vous savez qu’il reste encore beaucoup d’espace disponible -, il se peut que vous ayez atteint la limite d’inodes de votre système :

Il n'y a plus d'espace sur le périphérique

Comment vérifier l’utilisation des inodes sur les systèmes de fichiers

Pour vérifier l’utilisation des inodes d’un système de fichier, vous pouvez utiliser la commande df avec l’option -i :

df -i

La sortie nous donne :

  • Syst. de fichiers : Le système de fichiers
  • Inodes : Le nombre total d’inodes dans ce système de fichiers
  • IUtil : Nombre d’inodes utilisés
  • ILibre : Le nombre d’inodes restants disponibles pour utilisation
  • IUtil% : Le pourcentage d’inodes utilisés
  • Monté sur : Le point de montage de ce système de fichiers
Comment vérifier l'utilisation des inodes sur les systèmes de fichiers avec df de Linux

Vous pouvez bien entendu filtrer sur une partition de disque en particulier.
Par exemple pour afficher les inodes de la partition /dev/sda5 :

df -i /dev/sda5
Comment vérifier l'utilisation des inodes sur les systèmes de fichiers avec df de Linux

Une alternative pour vérifier le nombre d’inode libre d’un système de fichiers est d’utiliser la commande stat avec l’option -f :

stat -f /

Comment connaître le numéro d’inode d’un fichier

Pour afficher le numéro d’inode d’un fichier, vous pouvez utiliser la commande ls avec l’option -i :

ls -li <fichier>
Comment connaître le numéro d'inode d'un fichier sur Linux

Là aussi vous pouvez utiliser la commande stat pour connaître le numéro d’inoeud d’un fichier :

stat <fichier>
Comment connaître le numéro d'inode d'un fichier sur Linux

Vérifier le numéro d’inode d’un répertoire à l’aide de la commande ls

Vous pouvez aussi afficher le numéro d’inode d’un répertoire avec la commande ls, pour cela, ajoutez l’option -d :

ls -lid <répertoire>
Vérifier le numéro d'inode d'un répertoire à l'aide de la commande ls

Comment supprimer un fichier par son inode

Parfois il est difficile voire impossible de supprimer des fichiers comportant des caractères spéciaux.
L’astuce consiste alors à supprimer le fichier par son numéro d’inode.

Tout d’abord, récupérez le numéro d’inode avec la commande ls comme expliqué précédemment.
Ensuite on recherche le fichier par son numéro d’inode grâce à la commande find et on passe ce dernier à la commande rm.

find -inum <inode> -exec rm -f {} \;