Avui he tengut un problema d’un servidor que me deia que no hi havia espai de disc lliure, fins aquí res de nou.
Quan he fet un «df -h» a quina partició faltava espai m’he trobat amb aquesta sorpresa:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg-lxc-vm-disk-0 16G 8.6G 6.5G 58% /
[..]
#
mmm, hi ha espai suficient i la partició no està plena… com es possible ? Doncs la resposa està als «INODES«
Per a veure els inodes dispnibles podem emprar «df -i», i en aquest cas, quan l’executam veiem això:
# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg-lxc-vm-disk-0 1048576 1048576 0 100% /
SOLUCIÓ
Per a poder saber quin directori contenia els fitxers que s’estaven menjant els inode de la partició es pot fer aixi:
find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
21 root
80 sbin
101 bin
474 lib
520 etc
7536 opt
26465 usr
1338484 var
Si ho executam a l’arrel del sistema, la sortida d’aquesta comanda serà un llistat de la quantitat de fitxers de cada directori, on veurem clarament a quin directori hem «d’apuntar», en aquest cas a «/var». Hem d’executar aquesta comanda a cada subdirectori que anem «caçant» amb la major quantitat de fitxers, en el meu cas ha estat un directori temporal de sessions d’un programari que tenim a aquest servidor.
Una vegada detectat que el problema es que aquest programari no elimina aquests fitxers de sessions, he decidit esborrar-los manualment per a alliberar espai e inodes i m’he trobat amb aquest error:
var/www/programa/files/_sessions# rm *
-bash: /bin/rm: Argument list too long
El que s’ha de fer per a poder eliminar tota aquesta quantitat de fitxers i que no ens doni aquest error, es tornar a emprar el nostre amic «find»:
find . -name "fitxer_sessio*" -print0 | xargs -0 rm
Llest, problema solucionat !