Que sont les inodes ? Présentation de leur fonctionnement et de leur utilisation
Les inodes correspondent à une structure de gestion des systèmes de fichiers des systèmes d’exploitation basés sur Unix. Les inodes représentent donc des en-têtes de données dans des listes d’inodes ou des structures de données similaires. Ils contiennent des métadonnées sur les fichiers stockés. Ces métadonnées s’apparentent, entre autres, à des informations telles que les droits d’accès, l’emplacement d’enregistrement, le groupe, le numéro d’utilisateur ou les dates relatives aux modifications ou aux accès.
Qu’est-ce qu’un inode ?
Le terme « inode » est la contraction d’« index node » (nœud d’index). Il s’agit d’une forme de gestion des fichiers qui joue un rôle essentiel depuis le déploiement du système d’exploitation Unix et des autres systèmes basés sur ce dernier, comme Linux ou encore macOS. Les principales fonctions des inodes au regard des systèmes de fichiers consistent à référencer, gérer et repérer des fichiers particuliers dans un système grâce à des numéros d’inodes à la fois uniques et distinctifs. En leur qualité de structures de données définies, les inodes servent à décrire et à gérer des fichiers spécifiques grâce à des métadonnées. La nature de ces métadonnées dépend bien entendu du système de fichiers dont il est question.
S’ils ne contiennent aucune information sur le nom du fichier en lui-même, les inodes comportent généralement les informations ci-dessous sur les fichiers et les blocs de fichiers :
- Type et droits d’accès
- Nombre de liaisons permanentes
- Numéro d’utilisateur (UID)
- Numéro de groupe (GID) ou identifiant de groupe (GUI)
- Taille du fichier (en octets)
- Date de la dernière modification (mtime)
- Date du dernier changement d’état (ctime)
- Date du dernier accès (atime)
- Adresse des blocs de données
- Adresse des blocs d’indirection
- Nombre de liens
- Numéro de version
Comment fonctionnent les inodes ?
Les systèmes Unix ne gèrent pas les secteurs des partitions de disque dur par clustering, mais sous forme de blocs de données. Contrairement au système DOS, des inodes sont créés au lieu de tables d’allocation de fichiers (FAT) pour la gestion et le référencement des données de répertoire. Si les données sont stockées sur le disque dur sous forme de blocs fixes, le volume d’un fichier peut rapidement dépasser l’espace disponible dans la mémoire du bloc. Le système doit alors trouver un autre bloc disponible pour stocker le reste du fichier. C’est précisément là que les inodes entrent en scène.
Les inodes permettent en effet de retrouver les données stockées dans un système à l’aide de données de référence, de données de répertoire et de leurs inodes, y compris grâce à un numéro d’inode unique. Ils ne dépendent pas du nom du fichier, ce qui constitue un avantage considérable. Dans le cas d’un fichier copié et renommé, il suffit pour le retrouver d’utiliser le même numéro d’inode que celui du fichier d’origine. C’est d’ailleurs ce qu’il se passe avec les liaisons permanentes créées par les utilisateurs à l’aide de la commande Linux ln. Si cette forme de comptabilisation interne est avantageuse, c’est notamment parce que les inodes renvoient aussi bien aux fichiers d’origine qu’à leurs sauvegardes respectives, sans pour autant accaparer davantage de mémoire.
Comme les inodes sont créés de façon fixe en fonction du système, il peut arriver qu’un fichier soit trop volumineux par rapport aux inodes disponibles. Dans un tel cas, l’inode d’origine renvoie alors à un autre inode, également connu sous le nom de bloc d’indirection, qui contient les métadonnées restantes.
Comme la taille des inodes est définie dès le départ en fonction du système, il est possible que les inodes ne soient pas suffisants si le nombre de fichiers est important. Il convient alors de restructurer le système de fichiers en prévoyant un plus grand nombre d’inodes.
Où les inodes sont-ils utilisés ?
Les inodes permettent de gérer et de structurer les systèmes de fichiers. Ils s’utilisent aussi bien dans les systèmes Linux privés que dans les solutions relatives aux services gérés. Que vous soyez un utilisateur individuel ou que vous représentiez une entreprise, si vous cherchez un outil Cloud pour des serveurs avec des systèmes d’exploitation basés sur Unix, vous pouvez donc vous tourner vers des structures de données utilisant des inodes. Comme dans le cas de la plupart des services Cloud, il peut s’agir d’un Cloud public ou d’un Cloud privé ; tout dépend de vos besoins.
Quels systèmes de fichiers prennent en charge les inodes ?
L’ensemble des systèmes d’exploitation basés sur Unix, tels que Linux ou macOS, font appel à des inodes. Toutefois, la structure et la configuration de ces inodes peuvent varier selon le système de fichiers qui les prend en charge. Ainsi, dans les systèmes ext2/ext3/ext4, ils prennent la forme de listes ou de tables d’inodes et correspondent à des en-têtes de données descriptives. La liste d’inodes est unique et établie dès la création du système ; il est donc impossible de la modifier par la suite. En outre, les inodes ext4 de 256 octets occupent un espace de stockage fixe dans la mémoire, et il est impossible d’utiliser celui-ci autrement. Dans ces systèmes de données, chaque inode décrit un fichier ou un répertoire du système à l’aide des métadonnées correspondantes.
Toutefois, avec les systèmes de fichiers plus complexes, comme xfs ou btrfs, les inodes ne sont générés que s’ils sont nécessaires à la localisation de fichiers. Dans ce genre de cas, aucune liste ou tables d’inodes n’est alors utilisée. D’autres différences de fonctionnement existent aussi entre les inodes sur les disques durs (« Disk Inodes ») et les inodes dédiés au traitement de la mémoire Linux (« In Core Inodes »).
Aperçu des principales commandes relatives aux inodes
Comme le nombre d’inodes disponibles est limité selon le système de fichiers que vous utilisez, vous devez savoir afficher les inodes occupés, ou plus précisément les emplacements occupés par les inodes au sein du système. Cette information est nécessaire dès lors qu’il n’y a plus assez d’inodes disponibles pour des fichiers supplémentaires.
Commande permettant d’afficher les emplacements occupés dans le système de fichiers
Pour afficher les emplacements occupés par des inodes dans votre système de fichiers, vous pouvez utiliser la commande suivante :
~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20
shellCommande permettant d’obtenir un aperçu des inodes occupés
Pour afficher tous les inodes occupés dans votre système, utilisez le code suivant :
df -ih
shellCette commande vous donne un aperçu de l’utilisation des inodes, notamment en ce qui concerne le système de fichiers associé, le nombre total d’inodes, le taux d’occupation et les inodes non occupés :
df -i
shellCommande permettant d’afficher un numéro d’inode spécifique
Pour afficher le numéro d’inode spécifique à un fichier, vous pouvez utiliser la commande ci-dessous :
ls -i
shellCommande permettant d’afficher tous les fichiers d’un inode
Vous souhaitez connaître les fichiers (notamment les fichiers d’origine, les copies ou les sauvegardes) référencés par un inode ? Utilisez le code suivant :
-inum
shellConseils relatifs à une utilisation intensive des inodes
Vous pouvez utiliser des inodes de manière intensive sans que cela ne signifie pour autant que vous êtes sur le point de manquer de capacités de stockage. La plupart du temps, une importante utilisation d’inodes peut être liée à de petits éléments de données superflus, comme les fichiers TMP temporaires, les caches ou les sessions. Pour résoudre ce problème, il suffit généralement de configurer la suppression automatique de tous les fichiers de plus de 14 jours. Pour ce faire, exécutez une tâche cron à l’aide de la commande suivante :
03 *** /usr/bin/find /path/to/files/* -type f – mtime +14 -delete > /dev/null 2>&1
shellQue se passe-t-il en cas de manque d’inodes ?
Si vous ne disposez plus de suffisamment d’inodes pour de nouveaux fichiers, vous êtes susceptibles d’observer les phénomènes suivants :
- Blocage des applications
- Perte de données
- Redémarrage non planifié
- Arrêt des processus sans redémarrage
- Processus planifiés incapables de démarrer automatiquement
Si vous êtes au maximum de la capacité de vos inodes, nous vous conseillons de libérer une partie de la mémoire occupée. Vous avez également la possibilité, par l’intermédiaire d’un processus relativement complexe, de restructurer le système de fichiers afin d’accroître votre nombre maximal d’inodes.