Ficando sem inodes

Respostas:

24

O número de inodes é definido no momento em que a partição é formatada. Normalmente, o número de inodes criados é suficiente para quase qualquer finalidade; no entanto, se você tiver um grande número de arquivos muito pequenos, poderá usar os inodes antes que o disco esteja cheio.

Você precisa encontrar os milhares de arquivos pequenos que você possui no sistema que estão usando inodes e excluí-los ou movê-los para uma partição que foi configurada especificamente com um número muito grande de inodes disponíveis. Não é possível alterar o número de inodes disponíveis em uma partição após a formatação.

O script escrito por paxdiablo no stackoverflow pode ser uma maneira útil de verificar o uso excessivo de arquivos pequenos que você talvez não saiba. Aqui está novamente:

#!/bin/bash
# count_em - count files in all subdirectories under current directory.
echo 'echo $(ls -a "$1" | wc -l) $1' >/tmp/count_em_$$
chmod 700 /tmp/count_em_$$
find . -mount -type d -print0 | xargs -0 -n1 /tmp/count_em_$$ | sort -n
rm -f /tmp/count_em_$$

Coloque esse script no arquivo de texto ~ / bin / count_em e, em seguida, emita o comando

chmod +x ~/bin/count_em

para torná-lo executável. Se você precisou criar o diretório ~ / bin, ele ainda não estará no caminho do executável, então faça o logout e o logon novamente.

Para executar o programa, basta digitar

count_em

e listará os números de todos os arquivos no diretório atual e subdiretórios por diretório, com a contagem mais alta por último. Muito conveniente!

fabricator4
fonte
Esta linha> chmode + x ~ / bin / count_em é realmente> chmod + x ~ / bin / count_em
1
é necessário excluir todos esses arquivos criados pelo usuário ou movê-los para o arquivo tar fará o truque?
amc
Arquivá-los é uma ótima maneira de lidar com isso, não exclui os dados dos usuários, mas os conscientiza de que seu comportamento não é satisfatório, pois eles não poderão usar os arquivos como eram anteriormente. As chances são de que o grande número de arquivos seja gerado por algo que ninguém está usando e que eles possam ser excluídos com segurança, mas isso é um risco.
LovesTha
Uma boa alternativa de linha única para o seu script pode sersudo du -a -d 1 --inodes . | sort -nr | head -20
Charles Green
1
Claro, isso não funciona se você estiver completamente sem inodes, pois ele cria arquivos temporários :(
Molomby
8

Você também pode exibir uma lista classificada de diretórios por número de inodes, usando este comando: du --inodes -d 3 / | sort -n | tail

A partir daí, você pode determinar quais diretórios excluir

johnL
fonte
1
unrecognized option '--inodes'no Ubuntu 14.04, fyi
Molomby
Por que você está usando o ubundu 14.04 em 2019? Vejo que tem coreutils 8.21 de fevereiro de 2013, a --inodesopção foi adicionada em jul 2013 lmao
ZN13 4/06
2

Descobri que o uso do inode era proveniente de /root/.local e excluí essa pasta.

xaav
fonte
2
Nada demais deve estar usando /root/.local e só existe por motivos de compatibilidade. Você precisa descobrir o que estava gravando muitos arquivos minúsculos neste diretório.
fabricator4