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 !