Sévérité : ÉlevéeLinux

Disque plein alors que « du » ne trouve rien (fichiers supprimés encore ouverts)

```text
write error: No space left on device
```

Détecter

df -h indique 100 % d'occupation sur /var, les services échouent à écrire (No space left on device), mais du -sh /var/* totalise beaucoup moins que la taille utilisée.

Symptômes

df -h indique 100 % d'occupation sur /var, les services échouent à écrire (No space left on device), mais du -sh /var/* totalise beaucoup moins que la taille utilisée.

Environnement

Serveur Linux (Debian/RHEL) hébergeant une application qui écrit un journal volumineux ; un administrateur a supprimé le fichier de log avec rm pour libérer de la place.

Cause racine

Un fichier supprimé reste occupé sur le disque tant qu'un processus garde un descripteur ouvert dessus. rm retire seulement l'entrée du répertoire : du ne le voit plus, df si.

Diagnostic

  1. Comparer df -h /var et du -xsh /var.
  2. Lister les fichiers supprimés encore ouverts : lsof +L1 ou lsof -nP | grep '(deleted)'.
  3. Identifier le processus propriétaire et la taille.

Solution

  • Faire rouvrir le fichier par le processus : systemctl reload app ou redémarrage du service.
  • En urgence, sans redémarrage, tronquer via le descripteur : : > /proc/<pid>/fd/<fd>.
  • Mettre en place une rotation correcte (logrotate avec postrotate ou copytruncate).

Commandes

df -h /var; du -xsh /var
sudo lsof +L1
sudo truncate -s 0 /proc/1234/fd/7

Prévention

Rotation des journaux configurée pour chaque application, alerte predict_linear sur l'espace disque, procédure interdisant la suppression des journaux actifs avec rm.