‘No space left on device’ mas há espaço disponível!

Se você se deparar com o erro ‘no space left on device’ ao tentar gravar algum arquivo ou pasta, mas ao digitar o comando ‘df -h’ mostra que há espaço disponível, então você poderá estar sem inodes disponíveis.

Digite ‘df -i’ e veja se há inodes disponíveis. No caso abaixo, eles foram 100% utilizados:

root@debian:/tmp# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
rootfs 594512 594320 192 100% /
udev 256153 314 255839 1% /dev
tmpfs 257641 241 257400 1% /run

Dificilmente você irá utilizar em 100% a quantidade de inodes do seu servidor se tudo estiver correto. No caso acima, um script php do cliente não estava encerrando as sessões. Para encontrar a pasta que está com grande quantidade de inodes, nós digitamos:

find / -xdev -printf ‘%hn’ | sort | uniq -c | sort -k 1 -n

O resultado foi:

2725 /usr/share/man/man3
538008 /var/lib/php5

Veja que há mais de quinhentos mil arquivos php dentro da pasta /var/lib/php5, que é onde as sessões php são armazenadas. Isto não está certo.

Após corrigirmos a programação do script, nós deletamos os arquivos desta pasta com o comando abaixo (utilizar com cuidado):

find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 -exec rm {} ;

ps: este comando é específico para deletar arquivos de sessões do PHP. Para outro tipo de arquivos, utilize o comando adequado.