Comment gérer les inodes manquants sur les serveurs Linux.
Ce matin, je n’ai rien pu faire sur mon serveur de supervision Linux. Comme si le disque était en lecture seule.C’est ainsi que j’ai découvert Le concept d’inode sous Linux.
introduire.
Avant de continuer, je pense que nous devons expliquer ce qu’est un inode.
Voici la définition Wikipédia
Une sorte de inode ou inode (contraction d’index et de nœuds) est une structure de données qui contient des informations sur les fichiers ou répertoires stockés dans certains systèmes de fichiers (en particulier Linux/Unix).
Chaque fichier a un numéro d’inode (i-number) dans le système de fichiers où il réside, unique pour le périphérique sur lequel il réside.
Chaque fichier a un inode, bien qu’il puisse avoir plusieurs noms (chaque nom fait référence au même inode).
chaque nom s’appelle associationSelon le système de fichiers, l’inode peut également contenir des informations sur le fichier, telles que créateur (ou propriétaire), son type d’accès (ex sous Unix : lecture, écriture et exécution), ETC.Tous les inodes sont contenus dans table d’inodes
Message d’erreur.
Habituellement, l’erreur se produit lorsque vous souhaitez créer ou modifier un fichier sur le disque, l’erreur de disque plein.Voici un exemple
# ssh-keygen -R 192.168.100.32
Comment savoir s’il n’y a plus d’inodes disponibles sur notre serveur ? Grâce aux commandes suivantes, vous serez bientôt réparé.
#df-i
Comme vous pouvez le voir, il n’y a pas d’inodes disponibles sur la partition /dev/mapper/vg_lm4c-lv_root.
Ce symptôme se caractérise généralement par la présence d’un grand nombre de petits fichiers sur le serveur.
Pour savoir où se trouvent ces fichiers, vous pouvez utiliser la commande suivante : elle va chercher le nombre de fichiers dans chaque répertoire. Nous commençons par root / .
# for i in /*; do echo -n $i « »; find $i |wc -l; done | sort -n -k2
Pour trouver la source du problème, il peut être nécessaire d’ajuster la commande.Par exemple ici je vais analyser répertoire /varcomme je le vois, il consomme le plus d’inodes.
# for i in /var/*; do echo -n $i « »; find $i |wc -l; done | sort -n -k2
Le répertoire où l’inode est utilisé ici est répertoire spool.
Le résultat est très simple : le nom du répertoire et le nombre de fichiers associés.En utilisant ce résultat, nous pouvons continuer avec une commande similaire, mais remplacer /* via /le-répertoire/* …etc Jusqu’à ce que le répertoire coupable soit trouvé !
Une fois le bon répertoire trouvé (/var/spool/centreontrapd dans mon cas)vous devez toujours utiliser le nettoyage des commandes rm -f *centre*.
Malheureusement, vu la quantité de données à supprimer, j’obtiens le message d’erreur suivant :
Cela est dû à une Limitations de la commande rmqui ne prend pas en charge un grand nombre d’arguments (le caractère générique ‘*’ est développé par le shell en une séquence d’arguments).
Pour éviter les tracas liés à la suppression de fichiers en masse (surtout si vous avez des milliers de fichiers), vous pouvez utiliser cette commande dans le répertoire dans lequel ils se trouvent :
#Chercher. -name « *fichier_à_supprimer* » -exec rm {} ;
Une fois notre commande terminée, refaire un df-je Vous verrez que vous avez à nouveau l’inode disponible.
c’est tout.
Stay connected