Un disco pieno rompe cose che sembrano scollegate: le sessioni non si salvano più, i caricamenti falliscono, il database rifiuta le scritture e metà di tutto questo risponde 503. Guardi prima il disco ogni volta che più cose senza legame si rompono insieme.
df -h
Trovi che cosa lo occupa
Scenda dalla radice, un livello per volta. Questo stampa le dieci cose più grandi di una directory, e seguire la più grande verso il basso trova la causa in tre o quattro passi.
du -h --max-depth=1 / 2>/dev/null | sort -h | tail -10
Le quattro cause solite
- Log che non ruotano mai. /var/log cresce senza limite se logrotate non è configurato per un servizio aggiunto in seguito.
- Vecchi backup sullo stesso disco. Un backup sul disco che protegge non è un backup, ed è di solito la directory più grande della macchina.
- File di sessione. Milioni di file minuscoli in /var/lib/php/sessions: occupano spazio e, peggio, inode.
- Un log degli errori impazzito. Un solo avviso che si ripete può scrivere gigabyte in un giorno.
Liberi spazio senza rischi
Non cancelli un log su cui un processo sta scrivendo. Lo spazio non torna finché il processo non chiude il file, quindi il disco resta pieno e il log lo ha perso. Lo svuoti invece.
: > /var/log/nginx/error.log
Finiti gli inode, non lo spazio
Se df -h mostra spazio libero ma le scritture falliscono lo stesso, le sono finiti gli inode: troppi file, qualunque sia la loro dimensione.
df -i
Metta un monitoraggio che avvisi all'80%, non al 100%. Un disco che si riempie alle tre di notte tiene il sito a terra finché qualcuno non si sveglia; un avviso all'80% è un lavoro per la mattina.
