O que é um inode órfão? [fechadas]

15

Eu entendo o que é um inode, mas qual é a definição exata de um inode órfão? Eu realmente não entendo o que isso significa.

UPDATE

Houve um tempo em que um servidor que eu estava gerenciando ficou sem inodes, mas quando eu fazia um df -h ele me mostrava que o servidor tinha apenas 60% de espaço usado. Eu estou supondo que isso é por causa de inodes órfãos. Como todos os inodes podem ser usados, mas ainda há "espaço" no servidor? Você pode resolver isso em suas respostas?

    
por ninjacoder 16.06.2016 / 12:06

3 respostas

14

Um inode órfão é um inode que não está anexado a uma entrada de diretório no sistema de arquivos, o que significa que não pode ser acessado.

Os inodes órfãos podem aparecer por vários motivos:

  • arquivos temporários que são excluídos, mas mantidos abertos (uma prática comum) ocupam inodes no sistema de arquivos; se o sistema reinicializar sem desligar corretamente, esses inodes permanecem e são órfãos
  • corrupção do sistema de arquivos pode corromper um diretório sem afetar os inodes dos arquivos contidos no diretório; esses inodes são então órfãos

fsck cria novas entradas de diretório para inodes órfãos em lost+found .

    
por 16.06.2016 / 12:10
3

Um inode órfão é um arquivo que é “semi-excluído”: não tem mais entrada de diretório, mas ainda está aberto em algum processo, portanto os dados ainda estão presentes no disco. Quando o último processo que tem este arquivo aberto o fecha, o arquivo será totalmente apagado e o inode órfão desaparecerá.

Um inode órfão usa um inode e o espaço em disco para armazenar o arquivo, portanto, df e df -i contam como usado. Portanto, se o disco for relatado como cheio, mas df mostrar algum espaço restante, isso não pode estar relacionado a inodes órfãos. Os inodes órfãos são uma das razões pelas quais o uso do sistema de arquivos reportado por df e o tamanho total do arquivo relatado por du podem diferir; veja Por que existem tantas maneiras diferentes medir o uso do disco? para obter mais detalhes sobre este tópico.

Muitos sistemas de arquivos reservam um número fixo de inodes quando o sistema de arquivos é criado, o que significa que você pode ter, no máximo, muitos arquivos no sistema de arquivos. O número de inodes é um compromisso entre o espaço usado pelos inodes e a capacidade de criar muitos arquivos. Se não houver mais espaço no sistema de arquivos, não será possível desenvolver os arquivos existentes ou criar novos arquivos (talvez você ainda possa criar alguns arquivos vazios em diretórios existentes, desde que eles só estejam preenchendo blocos parcialmente usados e não requerendo que um novo bloco seja alocado). Se não houver mais inode gratuito, você poderá desenvolver os arquivos existentes, mas não poderá criar um novo arquivo.

O kernel reporta o mesmo erro para os aplicativos, independentemente de um sistema de arquivos estar cheio devido à falta de espaço para dados ou devido à falta de inodes. Assim, você pode obter um erro de “disco cheio” mesmo se ainda houver algum espaço de dados, se a operação exigisse um novo inode e a tabela de inodes estivesse cheia. Execute df -i para saber quantos inodes são usados e quantos são deixados.

    
por 17.06.2016 / 02:14
1
  • Um inode órfão é aquele que foi desvinculado, mas ainda está aberto em outro processo. Por exemplo, executando tail -f {file} em um shell seguido por rm {file} em outro. O sistema de arquivos controla esses itens para que possam ser limpos quando o processo terminar.

  • É perfeitamente normal sempre que você tem uma desalinhada impura. Eles são simplesmente arquivos que foram excluídos, mas ainda estavam abertos quando o fs foi remontado somente para leitura. Eles não são a causa, mas apenas sintomas.

Para o problema do inode, execute esta consulta para obter a lista de quanto inodes estão sendo usados em todos os diretórios

for i in 'find . -type d '; do echo 'ls -a $i | wc -l' $i; done | sort -n

Você pode consultar este e this para mais métodos para verificar.

    
por 16.06.2016 / 12:13