GNU/Linux >> Tutoriels Linux >  >> Linux

Tout ce que vous devez savoir sur les inodes sous Linux

J'ai une question étrange pour vous.

Votre système Linux s'est-il déjà plaint qu'il ne vous restait plus d'espace alors que vous en aviez encore plus qu'assez ?

Il m'est arrivé qu'il me restait beaucoup de Go, mais mon système Linux s'est plaint qu'il ne restait plus d'espace. C'est alors que j'ai découvert les inodes .

inodes en bref

Les inodes stockent les métadonnées de chaque fichier de votre système dans une structure semblable à une table, généralement située près du début d'une partition. Ils stockent toutes les informations sauf le nom du fichier et les données.

Chaque fichier dans un répertoire donné est une entrée avec le nom de fichier et le numéro d'inode. Toutes les autres informations sur le fichier sont extraites de la table d'inodes en faisant référence au numéro d'inode.

Les numéros d'inodes sont uniques au niveau de la partition. Chaque partition a sa propre table d'inodes.

Si vous manquez d'inodes, vous ne pouvez pas créer de nouveaux fichiers même s'il vous reste de l'espace sur la partition donnée.

Qu'est-ce qu'un inode sous Linux ?

Inode signifie nœud d'index. Bien que l'histoire ne soit pas tout à fait sûre de cela, c'est la supposition la plus logique et la meilleure qu'ils aient faite. Auparavant, il s'écrivait I-node , mais le trait d'union s'est perdu avec le temps.

Comme décrit sur linfo.org :

Un inode est une structure de données … … qui stocke toutes les informations sur un fichier sauf son nom et ses données réelles.

Les inodes stockent des métadonnées sur le fichier auquel il fait référence. Ces métadonnées contiennent toutes les informations sur ledit fichier.

  • Taille
  • Autorisation
  • Propriétaire/Groupe
  • Emplacement du disque dur
  • Date/heure
  • Autres informations

Chaque inode utilisé fait référence à 1 fichier. Chaque fichier a 1 inode. Les répertoires, les fichiers de caractères et les périphériques de bloc sont tous des fichiers. Ils ont chacun 1 inode.

Pour chaque fichier d'un répertoire, il existe une entrée contenant le nom du fichier et le numéro d'inode qui lui est associé.

Les inodes sont uniques au niveau de la partition. Vous pouvez avoir deux fichiers avec le même numéro d'inode étant donné qu'ils se trouvent sur des partitions différentes. Les informations sur les inodes sont stockées dans une structure semblable à une table dans les parties stratégiques de chaque partition, souvent situées vers le début.

Comment vérifier l'inode sous Linux ?

Vous pouvez facilement lister le nombre d'inodes avec la commande suivante :

ls -i

Les images suivantes montrent mon répertoire racine avec les numéros d'inode correspondants.

Le nombre d'inodes de chaque système de fichiers est décidé lors de la création du système de fichiers. Pour la plupart des utilisateurs, le nombre d'inodes par défaut est plus que suffisant.

Le paramètre par défaut lors de la création d'un système de fichiers créera 1 inode par 2K octets d'espace. Cela donne beaucoup d'inodes pour la plupart des systèmes. Vous manquerez probablement d'espace avant de manquer d'inodes. Si nécessaire, vous pouvez spécifier le nombre d'inodes à créer lors de la création d'un système de fichiers.

Si vous manquez d'inodes, vous ne pourrez pas créer de nouveaux fichiers. Votre système sera également incapable de le faire. Ce n'est pas une situation que la plupart des utilisateurs rencontreront, mais c'est possible.

Par exemple, un serveur de messagerie stockera une énorme quantité de très petits fichiers. Beaucoup de ces fichiers seront inférieurs à 2K octets. Il est également prévu de croître constamment. Par conséquent, un serveur de messagerie risque de manquer d'inodes bien avant de manquer d'espace.

Certains systèmes de fichiers comme Btrfs, JFS, XFS ont implémenté des inodes dynamiques. Ils peuvent augmenter le nombre d'inodes disponibles si nécessaire.

Comment fonctionne l'inode ?

Lorsqu'un nouveau fichier est créé, un numéro d'inode et un nom de fichier lui sont attribués. Un numéro d'inode est un numéro unique dans ce système de fichiers. Le nom et le numéro d'inode sont stockés sous forme d'entrées dans un répertoire.

Lorsque j'ai exécuté la commande ls "ls -li / ” le nom du fichier et le numéro d'inodes sont ce qui a été stocké dans le répertoire / . Les informations restantes sur l'utilisateur, le groupe, les autorisations de fichier, la taille, etc. ont été extraites de la table d'inodes à l'aide du numéro d'inode.

Vous pouvez lister les informations d'inode pour chaque système de fichiers avec la commande df sous Linux :

df -hi

Un lien symbolique ou lien symbolique est une fonctionnalité bien connue de Linux. Mais que se passe-t-il avec les inodes lorsque vous créez un lien symbolique sous Linux ? Dans l'image suivante, j'ai un répertoire appelé "dir1 ", un fichier nommé "fichier1 " et à l'intérieur " dir1 " J'ai un lien logiciel appelé " slink1 » qui pointe vers « ../fichier1

Maintenant, je peux lister de manière récursive et afficher les informations d'inode.

Comme prévu, dir1 et file1 ont des numéros d'inode différents. Mais le lien souple aussi. Lorsque vous créez un lien symbolique, vous créez un nouveau fichier. Dans ses métadonnées, il pointe vers la cible. Pour chaque lien symbolique que vous créez, vous utilisez un inode.

Après avoir créé un lien physique dans dir1 avec la commande ln :

ln ../file1 hlink1

La liste des numéros d'inodes me donne les informations suivantes :

Vous pouvez voir que "fichier1″ et "hlink1 ” ont le même numéro d'inode. À vrai dire, les liens durs sont possibles grâce aux inodes. Un lien dur ne crée pas un nouveau fichier. Il fournit uniquement un nouveau nom pour les mêmes données.

Dans les anciennes versions de Linux, il était possible de lier en dur un répertoire. Il était même possible qu'un répertoire donné soit son propre parent. Cela a été rendu possible grâce à l'implémentation d'inode. Ceci est maintenant limité pour empêcher les utilisateurs de créer une structure de répertoires très confuse.

Autres implications des inodes

Le fonctionnement des inodes explique également pourquoi il est impossible de créer un lien physique entre les différents systèmes de fichiers. Autoriser une telle tâche ouvrirait la possibilité d'avoir des numéros d'inodes en conflit. Un lien symbolique, d'autre part, peut être créé entre les différents systèmes de fichiers.

Étant donné qu'un lien physique a le même numéro d'inode que le fichier d'origine, vous pouvez supprimer le fichier d'origine et les données sont toujours disponibles via le lien physique. Tout ce que vous avez fait, dans ce cas, est de supprimer l'un des noms pointant vers ce numéro d'inode. Les données liées à ce numéro d'inode resteront disponibles jusqu'à ce que tous les noms qui lui sont associés soient supprimés.

Les inodes sont également une grande raison pour laquelle un système Linux peut se mettre à jour sans avoir besoin de redémarrer. En effet, un processus peut utiliser un fichier de bibliothèque tandis qu'un autre processus remplace ce fichier par une nouvelle version. Par conséquent, la création d'un nouvel inode pour le nouveau fichier. Le processus déjà en cours d'exécution continuera à utiliser l'ancien fichier tandis que chaque nouvel appel entraînera l'utilisation de la nouvelle version.

Une autre fonctionnalité intéressante fournie avec les inodes est la possibilité de stocker les données dans l'inode lui-même. C'est ce qu'on appelle Inlining . Cette méthode de stockage a l'avantage d'économiser de l'espace car aucun bloc de données ne sera nécessaire. Cela augmente également le temps de recherche en évitant davantage d'accès au disque pour obtenir les données.

Certains systèmes de fichiers comme ext4 ont une option appelée inline_data. Lorsqu'il est activé, il permet au système d'exploitation de stocker les données de cette manière. En raison des limitations de taille, l'inlining ne fonctionne que pour les très petits fichiers. Ext2 et les versions ultérieures stockent souvent les informations de lien symbolique de cette manière. C'est-à-dire si la taille ne dépasse pas 60 octets.

Conclusion

Les inodes ne sont pas quelque chose avec lequel vous interagissez directement, mais ils jouent un rôle important. Si une partition doit contenir de très petits fichiers, comme un serveur de messagerie, savoir ce qu'ils sont et comment ils fonctionnent peut vous éviter bien des problèmes par la suite.

J'espère que vous avez aimé cet article et appris quelque chose de nouveau et d'important sur l'inode sous Linux. Abonnez-vous à notre site Web pour en savoir plus sur Linux.


Linux
  1. Tout ce que vous devez savoir sur Ubuntu 13.04

  2. Répertoire Linux tmp :tout ce que vous devez savoir

  3. Compression de fichiers Linux :tout ce que vous devez savoir

  4. Autorisations de fichiers Linux :tout ce que vous devez savoir

  5. Swappiness sous Linux :tout ce que vous devez savoir

Tout ce que vous devez savoir sur le système d'exploitation Peppermint Linux

Tout ce que vous devez savoir sur Black Lab Linux

Tout ce que vous devez savoir sur la distribution Linux Mint

Tout ce que vous devez savoir sur le lien physique sous Linux

Tout ce que vous devez savoir sur l'UID sous Linux

Tout ce que vous devez savoir sur le répertoire Linux /tmp