Disque plein sous Linux : diagnostiquer en 5 commandes

No space left on device. Avant de tout supprimer, l’ordre exact des commandes qui disent ce qui remplit le disque — fichiers effacés encore ouverts inclus.

2 min de lecturelinuxsystemedevops

Le message arrive toujours au pire moment : No space left on device. Le réflexe est de supprimer ce qui semble gros. Le bon réflexe est de mesurer, dans un ordre précis — parce que sous Linux, un fichier « effacé » peut encore occuper l’espace tant qu’un processus le tient ouvert.

1. Voir quels systèmes de fichiers sont saturés

bash
df -h

Regardez la colonne Use% et le Mounted on. Souvent / ou /var est à 100 %, alors que /home a de la marge. Inutile de chercher dans le mauvais arbre.

bash
df -ih

Parfois l’espace reste libre, mais les inodes sont épuisés (des millions de petits fichiers). df -h dit « OK » ; df -ih dit la vérité.

2. Trouver les plus gros répertoires

bash
sudo du -xh / --max-depth=2 2>/dev/null | sort -h | tail -n 20

-x reste sur un seul système de fichiers (évite de descendre dans /mnt ou des binds). En une minute, vous savez si c’est /var/log, /var/lib/docker ou un dossier de builds.

Pour zoomer :

bash
sudo du -xh /var/log --max-depth=1 | sort -h

3. Les journaux qui ont grossi en silence

bash
sudo journalctl --disk-usage
sudo ls -lhS /var/log | head

Un *.log de 40 Go après un weekend de debug n’est pas rare. Avant de tronquer :

bash
sudo truncate -s 0 /var/log/gros-fichier.log

truncate vide le fichier sans casser le descripteur ouvert par le démon. Un rm + recreation laisse parfois le processus écrire dans un inode orphelin.

4. L’espace fantôme : fichiers effacés mais encore ouverts

bash
sudo lsof +L1 | head

Ou, plus ciblé :

bash
sudo lsof 2>/dev/null | grep deleted

Si un processus (Java, Docker, nginx) tient un gros fichier supprimé, du ne le voit plus dans l’arborescence, mais df compte encore les blocs. La solution : redémarrer le processus fautif (ou le conteneur), pas supprimer « encore plus ».

Docker remplit le disque ?
bash
docker system df
docker system prune -af --volumes   # destructif : images et volumes non utilisés

Sur une machine de build, les couches d’images mortes sont souvent le premier suspect après /var/log.

5. Confirmer que ça a bougé

bash
df -h /

Si le pourcentage n’a pas bougé après un rm massif, retournez à l’étape 4. Ce pattern — « j’ai tout effacé, le disque est encore plein » — est presque toujours un descripteur ouvert.

Ce qu’il faut retenir

L’ordre compte : df → du → logs → lsof (deleted) → confirmation. Supprimer au hasard avant de mesurer crée des incidents plus graves que le disque plein lui-même. Une fiche de commandes par tâche (« trouver ce qui remplit le disque ») vaut mieux qu’une encyclopédie d’options man.

Ce sujet fait partie d’un cours complet

Développement et déploiement de solutions de données — les premiers modules sont en accès libre.

Voir le plan du cours

Continuer sur le même sujet