Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

« No space left on device » : vous manquez peut-être d’inodes ?

Il y a quelques temps, j’avais un souci sur un de mes serveurs Linux : certains services ne démarraient plus. En tentant de les démarrer manuellement, j’avais un message d’erreur pour un problème d’espace disque.

No space left on device.

Premier réflexe, vérifier l’espace disque restant sur les partitions avec la commande df :


monitor01:~# df -h

Vérification de l’espace libre sur chaque partition

J’avais bien assez d’espace disponible sur tous les volumes, y compris sur la partition /root. Après quelques recherches, je me suis souvenu qu’il y a un nombre limité de fichiers par volumes, défini par le nombre d’inodes disponibles sur un volume.

Pour info, les inode (contraction des mots « index » et « node ») sont des fichiers descripteurs de données, et contiennent les informations (métadatas) sur les fichiers de données : pour chaque fichier, un seul inode.

Pour connaitre le nombre d’inode, c’est toujours la commande df, mais avec le paramètre « -i« .


monitor01:~# df -i

…qui m’a donné le résultat suivant :

Vérification du nombre d’inodes libres

Je tenais mon problème, il n’y avait plus d’inode de libre sur la partition /root (malgré le total de 1240320 inodes sur la partition, sic). Ce type de symptôme est souvent caractéristique d’un nombre important de petits fichiers.

Pour savoir où sont ces fichiers, on peut utiliser la commande suivante : elle va chercher le nombre de fichiers dans chaque répertoire. On commence par la racine /.


monitor01:~# for x in /* ; do echo $x ; find $x | wc -l ; done

Le résultat est présenté très simplement : le nom du répertoire, et le nombre de fichiers associés. En utilisant ce résultat, on peut continuer avec une commande similaire mais en remplaçant /* par /le-repertoire/* …et ainsi de suite !

Une fois trouvé le bon répertoire (/usr/local/pnp4nagios/var/spool/ dans mon cas), il fallait encore faire le ménage : j’ai tenté un « rm -rf », mais j’ai eu une surprise.


monitor01:~# rm -rf *
/bin/rm: Argument list too long.

Heureusement, j’ai trouvé la solution (et l’explication) sur cette page :


monitor01:~# find . -name '*' | xargs rm

Petite astuce : Dans Mon Cas, il a fallu le faire en plusieurs fois, par groupe de fichiers.

Note : pour la petite histoire, il s’agissait d’un serveur de monitoring Shinken, et le répertoire /usr/local/pnp4nagios/var/spool/ était rempli de fichiers perfdata.XXX. Il s’avérait que le processus NPCD qui doit utiliser ces fichiers n’était pas lancé.


© Romain sur wOueb by Romain DECKER / Another IT Guy Blog | Lien permanent

Vous pouvez commenter cet article, ou consulter les autres articles de la catégorie Internet.

Ajoutez ce blog à vos favoris Technorati.



This post first appeared on WOueb By Romain DECKER / Another IT Guy, please read the originial post: here

Share the post

« No space left on device » : vous manquez peut-être d’inodes ?

×

Subscribe to Woueb By Romain Decker / Another It Guy

Get updates delivered right to your inbox!

Thank you for your subscription

×