Il m'est déjà arrivé d'avoir des accès au disque dur me privant de tout contrôle sur la machine. A vrai dire, j'ai rencontré ce problème à mes débuts sur Linux et j'étais bien désemparé, mais j'avais fini par trouver la source du problème.

Aidant un utilisateur qui visiblement a une fuite mémoire sur sa machine avec VLC, je me suis dit qu'il ne serait pas inutile d'écrire un petit billet donnant quelques postes de recherche. Une forte occupation du disque peut provenir d'indexation (par exemple le processus updatedb qui crée une base de donnée pour la commande locate) ou encore d'une fuite mémoire (et donc un remplissage de la swap...). Puisque généralement ce type de problème est aléatoire et pouvant rendre la machine inutilisable il convient d'écrire en permanence les informations que l'on peut tirer.

Afin d'observer les IO (input-output ou entrée-sortie en français), j'utilise le petit programme iotop écrit en python et fournissant une interface ncurse. Il peut donc être simplement lancé en console, mais la lecture du manuel (man iotop) nous suggère quelques options intéressantes :

  • -o : affiche uniquement les processus ou tâches ayant une activité
  • -b : mode non-interactif (donc sans interface ncurse) qui nous sera bien utile pour rediriger les informations dans un fichier
  • -a : cumule les données... peut être utile dans certains cas ?
  • -t : ajoute l'heure, cela ne mange pas de pain, on n'a jamais trop d'informations. La commande que l'on peut utiliser est donc
iotop -obt > iotop-dump.txt

J'ajouterai la commande ionice qui permet de modifier la gentillesse des IO. (ionice est aux IO ce que nice est à l'utilisation du processeur ; pour plus d'info, voir cet article par exemple.) Vu que notre problème est une forte occupation du disque dur, on va faire en sorte de rendre prioritaire l'écriture de notre fichier iotop-dump.txt. Par exemple :

ionice -c2 -n0 iotop -obat > iotop-dump.txt

On pourra passer en -c1 si nécessaire (temps réel), cf le man.

Tant que l'on y est, on peut aussi récupérer la sortie de top :

ionice -c2 -n0 top -bc > top-dump.txt

A noter que les fichiers peuvent grossir rapidement, mais avec un bon éditeur comme Vim, ça s'ouvre et s'édite sans soucis :)