L’outil ncdu pour identifier l’origine d’une saturation disque

Espace disque saturé

Cet article décrit une méthode simple pour identifier l’origine d’une saturation disque à l’aide de l’outil ncdu. Avant d’en traquer l’origine, revenons sur l’apparition de l’incident technique qui en découlait…

Les symptômes du problème

En visionnant le film d’animation Kung Fu Panda 2 (oui, je me souviens très de la gueule du gros Panda poilu scotché à l’écran pendant le bug), l’application Kodi s’est interrompu : image figée, le Raspberry était tout simplement planté. Après un redémarrage, je vois défiler furtivement des lignes inscrites en rouge indiquant un problème mais je n’ai pas le temps de les lire. Une fois redémarré, le prompt s’affiche mais l’application Kodi ne se lance pas automatiquement comme elle devrait pourtant le faire.

J’esssaies de lancer manuellement Kodi : cela échoue. En tapant quelques commandes, je suis amené à tenter d’utiliser l’autocomplétion et là, le message d’erreur suivant apparaît :

Le message d’erreur me mets sur la piste : un manque d’espace disque.

Investigations avec ncdu

Afin d’avoir un état de l’occupation de l’espace disque, je tape la commande suivante :

On s’aperçoit que la partition monté sur / est pleine à 100%. Il y a effectivement une saturation de l’espace disque. Après quelques recherches sur Internet, je découvre un outil super intéressant nativement présent sur Raspbian : ncdu (ncurse disk usage).

Ncdu est une version récursive de la commande du et un moyen rapide pour repérer les répertoires qui occupent le plus d’espace disque.

Lançons la commande ncdu sur le répertoire / en ne comptabilisant que les fichiers et répertoires présents sur le même FileSystem que celui qui est scanné (option -x) :

Une fois l’analyse terminée (cela peut prendre quelques minutes selon la taille du FileSystem), on s’aperçoit que le répertoire /var occupe 4 Go sur les 8 Go disponibles sur la carte micro SD, ce qui est assez conséquent, la saturation est clairement liée à ce répertoire. Toujours avec l’utilitaire ncdu, on navigue à l’intérieur du répertoire /var et on obtient :

Une fois dans /var, la taille de 3,7 GiB nous interpelle, allons y :

Une fois dans /var/log, on identifie 3 fichiers particulièrement volumineux (1,2 Gib chacun) :

  1. syslog.1 ;
  2. kern.log ;
  3. messages.

Pour comprendre qu’est-ce qui pouvait bien remplir à outrance ces fichiers, j’ai rapidement regardé le contenu. J’ai pu remarquer que les lignes évoquaient une erreur de transmission réseau. J’imagine que cela est lié à quelques bugs de la carte réseau wifi qui dysfonctionne parfois. (dongle wifi en sommeil après une inutilisation prolongée). Impatient de poursuivre la visualisation de Kung Fu Panda 2, j’ai tout simplement supprimé les 3 fichiers cités ci-dessus.

Idéalement, on cherchera à comprendre pourquoi l’application écrit si fréquemment dans ces fichiers de logs (voire mettre en place les logs rotatifs) pour éviter la réapparition du problème.

Une fois les fichiers supprimés, on peut apprécier les gains obtenus :

On est ainsi passé d’un taux d’utilisation de 100% à 51%. On peut encore gagner un peu d’espace  en nettoyant le référentiel local des paquets récupérés avec la commande :

Ce nettoyage permet de passer le taux d’occupation de l’espace disque de 51% à 50%.

Remarque : Si vous ne disposez pas de l’utilitaire ncdu, une commande équivalente peut vous aider :

Il faudra soi-même relancer la commande de manière itérative sur les répertoires les plus volumineux.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *