Un disque plein casse des choses qui semblent sans rapport : les sessions ne s'enregistrent plus, les téléversements échouent, la base refuse d'écrire, et la moitié de tout cela répond 503. Regardez le disque en premier chaque fois que plusieurs choses sans lien cassent en même temps.

df -h

Trouver ce qui l'occupe

Descendez depuis la racine, un niveau à la fois. Cela imprime les dix plus grosses choses d'un répertoire, et suivre la plus grosse vers le bas trouve la cause en trois ou quatre étapes.

du -h --max-depth=1 / 2>/dev/null | sort -h | tail -10

Les quatre causes habituelles

  • Des journaux qui ne tournent jamais. /var/log grossit sans limite si logrotate n'est pas configuré pour un service ajouté après coup.
  • De vieilles sauvegardes sur le même disque. Une sauvegarde sur le disque qu'elle protège n'est pas une sauvegarde, et c'est d'ordinaire le plus gros répertoire de la machine.
  • Des fichiers de session. Des millions de tout petits fichiers dans /var/lib/php/sessions : ils prennent de la place et, pire, des inodes.
  • Un journal d'erreurs emballé. Un seul avertissement répété peut écrire des gigaoctets en une journée.

Libérer sans risque

Ne supprimez pas un journal dans lequel un processus écrit. La place n'est rendue que lorsque le processus ferme le fichier : le disque reste plein et vous avez perdu le journal. Tronquez-le plutôt.
: > /var/log/nginx/error.log

Plus d'inodes, pas plus de place

Si df -h montre de la place libre et que les écritures échouent quand même, vous n'avez plus d'inodes : trop de fichiers, quelle que soit leur taille.

df -i
Mettez en place une surveillance qui alerte à 80 %, pas à 100 %. Un disque qui se remplit à trois heures du matin met le site à terre jusqu'à ce que quelqu'un se réveille ; une alerte à 80 % est une tâche pour la matinée.