Troubleshooting Disk
Spațiul pe disc este raportat ca fiind 100% plin de către df, dar du nu găsește fișiere mari (Deleted Open Files / Ghost Space)
Ștergi un fișier imens de log, dar comanda "df -h" arată în continuare că discul este plin. Acest lucru se întâmplă deoarece un proces (Nginx, Apache, un serviciu Java) are încă acel fișier deschis.
Identificare
# lsof +L1 # Caută fișierele șterse dar ținute blocate de procese active
# lsof | grep -i deleted # caută direct flagul "deleted"
Remediere
# systemctl restart <serviciu> # Repornire doar serviciul care ține fișierul blocat (vezi PID-ul din "lsof"
# echo 0 > /proc/<PID>/fd/<FD> # Fără restart de serviciu. <PID> și <FD> sunt luate din output-ul comenzii "lsof"
"df -h" arată spațiu liber, dar sistemul spune "No space left on device" (Epuizare Inodes)
Sistemele de fișiere Linux (ext4, XFS) au o limită fixă de fișiere pe care le pot crea (numite inodes), indiferent de dimensiunea lor. Dacă un script creează milioane de fișiere mini (sesiuni de PHP, cache, e-mailuri), discul se blochează complet chiar dacă mai ai sute de GB liberi.
Identificare
# df -i # Verifică utilizarea procentuală a tabelului de Inodes
# find /path/to/mount -xdev -type d -exec sh -c 'echo "$(find "$1" -type f | wc -l) $1"' _ {} \; | sort -n -r | head -n 15 # Cauți directorul care conține cele mai multe fișiere
Remediere
# rm -rfv /apth/to/dir/* # De obicei dă erori de tipul "Argument list too long"
# find /apth/to/dir -type f -delete # Rezolvare rapidă şi corectă