« 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.

1
No space left on device.

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

1
monitor01:~# df -h
No space left on device sur votre serveur Linux : commande df

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« .

1
monitor01:~# df -i

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

No space left on device sur votre serveur Linux : vérification des inodes libres

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 /.

1
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.

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

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

1
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é.

Changer votre client SSH pour Kitty

Vous utilisez Putty pour administrer vos serveurs en SSH depuis vos postes Windows ? Bien que vieillissant, il reste très utile et certainement le client SSH le plus utilisé dans le monde ! Cependant, au quotidien, l’outil est un peu pénible, surtout si on doit se connecter à un nombre important de serveurs.

Il existe des alternative, et celle que je préfère est Kitty. Très ressemblant à Putty (à s’y méprendre), il offre quelques fonctionnalités supplémentaires qui ne sont pas dénuées d’intérêts ! Kitty est dérivé de la version 0.62 de Putty (la dernière disponible), et est disponible en version portable : un simple exécutable, et des fichiers de configuration en mode texte qui peuvent rester dans le même répertoire.

Au niveau des fonctionnalités :

  • auto-login sur les serveurs,
  • gestion de la transparence des fenêtres,
  • organisation des connexions par dossiers,
  • lancement de script automatique à la connexion,
  • possibilité de cliquer directement sur les liens HTTP,
  • enroulement de la fenêtre (rollup) comme les terminaux Linux,
  • fixation d’une fenêtre au premier plan,
  • etc.

Les connexions peuvent se classer dans des répertoires, a contrario de Putty où tout est en vrac.

Kitty : configuration des connexions et dossiers

Kitty : configuration des connexions et dossiers

La transparence des fenêtres est plus un gadget qu’autre chose, mais c’est toujours sympa à avoir !

Kitty : transparence de la fenêtre

Kitty : transparence de la fenêtre

La connexion automatisée est également une fonctionnalité importante (voir capture ci-dessous) : pour chaque connexion, on peut enregistrer un couple d’identifiants.

Kitty : possibilité de faire de l'auto-login

Kitty : possibilité de faire de l’auto-login

Site officiel : Kitty.

En vrac #73

Revue de presse hebdomadaire par Romain DECKERAu départ prévue pour stocker des liens que je jugeais intéressants, la revue de presse hebdomadaire me permet de partager mes découvertes avec vous. Pour cette 73ème édition : les 25 mots de passe les plus populaires en 2012, beaucoup de belles photos, améliorer votre productivité au travail, le fonctionnement de Google et les métiers qui comptent le plus de psychopathes.

(suite…)

Linux : faire une archive séparée pour chaque fichier dans un répertoire

Linux c’est parfois magique…quand on sait comment faire ! :)

J’avais un problème simple : un répertoire contenant des milliers de fichiers textes (logs), pour lesquels je souhaitais faire une archive pour chaque fichier (et non pas une archive contenant tous les fichiers). J’ai fait une petite boucle directement dans mon bash et le tour était joué ! :)

1
web01:~# for file in *.log*; do gzip --best $file; done

La commande va parser le répertoire courant, prendre tous les fichiers finissant par .log, et en faire une archive gzip.

Création d'une archive par fichier dans un répertoire

Création d’une archive par fichier dans un répertoire

Note : la commande gzip n’est pas obligatoire, vous pouvez utiliser tar également.

1
web01:~# for file in *.log*; do tar cfz $file; done

Et voilà ! :)

En vrac #69

Revue de presse hebdomadaire par Romain DECKERAu départ prévue pour stocker des liens que je jugeais intéressants, la revue de presse hebdomadaire me permet de partager mes découvertes avec vous. Pour cette 69ème édition : inviter des stars à vos soirées, une infographie sur les e-mails en France en 2011, des e-books gratuits sur Linux, et des captures d’écrans de toutes les versions de Windows depuis 1985.

(suite…)

Glances, un monitoring en mode texte pour Linux

Glances est un outil qui permet de surveiller une machine linux et d’afficher le résultat en mode texte : il s’agit d’un monitoring en temps réel (sans historisation). Développé en Python par Nicolargo, Glances est un logiciel libre (licence GPL) qui s’affichera en mode texte à partir d’une console ou d’un terminal : très pratique pour afficher sur les consoles de vos serveurs par exemple !

Au menu : surveillance du CPU, de la mémoire, de la charge système (load), de l’espace disque, des I/O disques, de la bande passante utilisée, et de vos processus. Quatres états différents sont possibles : OK (en vert), CAREFUL (en bleu), WARNING (en violet), CRITICAL (en rouge).

Monitoring Linux avec Glances

Monitoring Linux avec Glances

Si vous êtes intéressé, je vous invite à aller sur le GitHUB ou sur le blog de Nicolargo pour en apprendre plus et voir comment il s’installe. :)

Télécharger Glances.