LINUX. No space left on device

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 !

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *