O que é o uso de inode e como podemos reduzi-lo?

Os inodes mantêm o controle de todos os arquivos em um sistema Linux. Com exceção do nome do arquivo e do conteúdo real do arquivo, os inodes salvam todo o resto. É como uma estrutura de dados baseada em arquivos que contém metadados sobre todos os arquivos do sistema.

Os inodes, ou ""nós de índice"", foram introduzidos pela primeira vez no sistema operacional Unix na década de 1970. Nos anos 90, o Linux introduziu o mesmo conceito que continua em uso. Em grande parte, todo o sistema operacional depende dos inodes para funcionar corretamente. Esta postagem explicará o motivo.

Algumas informações sobre como os Inodes ajudam

Em um sistema Linux, os arquivos são armazenados na forma de blocos de um determinado tamanho. Se um arquivo for maior que esse tamanho predeterminado, ele será dividido em partes e armazenado em blocos vazios, onde quer que estejam disponíveis no disco. Com o aumento do número de arquivos, isso pode facilmente se tornar confuso. Os inodes ajudam o sistema a organizar os dados.

Embora os inodes não armazenem o conteúdo real do arquivo, eles mantêm os locais dos vários blocos de cada arquivo, juntamente com outros metadados, inclusive:

  • O tamanho do arquivo
  • Vários dispositivos de armazenamento e locais onde os arquivos são armazenados
  • As permissões de acesso associadas aos arquivos
  • Informações do proprietário dos arquivos
  • Registros de data e hora dos arquivos (por exemplo, data de criação, última modificação, etc.)

Como os inodes não armazenam um nome de arquivo, não importa se cortamos e colamos um arquivo em um local diferente no disco virtual ou se o renomeamos - o arquivo ainda estará fisicamente localizado no mesmo local. Isso não requer nenhuma alteração nos dados do inode, o que é um dos recursos que os torna tão flexíveis.

Como o uso do Inode afeta um sistema Linux?

Embora os inodes possam ajudar a gerenciar arquivos, eles também têm certas limitações. Assim como os arquivos são armazenados em unidades de um determinado tamanho, os inodes também são armazenados em blocos, o que possibilita que um arquivo de até 4 MB ultrapasse sozinho um inode de 32 bytes.

Quando isso acontece, um ponteiro indireto no inode aponta para outro inode. Um arquivo com centenas de MBs pode fazer com que uma cadeia de inodes seja usada apenas para um arquivo, o que esgotará rapidamente o número de inodes disponíveis.

Mesmo com arquivos pequenos, se houver um número suficiente deles em um sistema, todos os inodes disponíveis podem se esgotar, pois há apenas um número limitado de inodes disponíveis em um sistema. Embora seja possível aumentar esse número, isso não é isento de riscos. Alterar o número de inodes exige uma reconstrução completa do disco, o que pode levar à perda total dos dados. Isso ocorre porque o comando mkfs tem a opção i, que pode ser usada para definir o parâmetro bytes-per-inode durante a formatação de um disco. Um número menor aqui garantiria que mais inodes fossem criados para um determinado disco.

Há alguns indicadores de que o sistema está ficando sem inodes. Como os inodes são necessários para armazenar o local de um arquivo, quando um novo arquivo é criado, ele simplesmente não aparece no computador. Isso ocorrerá mesmo que haja armazenamento suficiente disponível no disco.

E também pode haver outros problemas, como o travamento de aplicações, a reinicialização do sistema operacional ou a não execução de tarefas agendadas. Se esses problemas ocorrerem com frequência, é sinal de que os inodes estão esgotados.

Limitações de inodes

Cada sistema Linux tem seu próprio limite de inode com base no hardware do sistema. Podemos usar o ""sistema de arquivos de disco"" (comando df) para obter esses números. Por exemplo, a captura de tela na figura 1 mostra as informações de inode de um laptop MacBook Pro com um disco de armazenamento de 1 TB.

df -i saída Fig. 1: df -i saída

O comando usado aqui é:

df -i

Essa saída mostra várias colunas com os seguintes significados:

  • Filesystem: Todos os discos montados no sistema
  • Size: Tamanho dos discos
  • Used: Armazenamento usado no sistema de arquivos, apresentado em GiB (gibibytes)
  • Capacity: A porcentagem de armazenamento usada
  • iused: O número de inodes usados
  • ifree: O número de inodes livres
  • %iused: A porcentagem de inodes usados
  • Mounted on: O local em que o disco está montado

Esse comando facilita a verificação do número de inodes e da quantidade de armazenamento disponível. O número total de inodes disponíveis para um determinado disco pode ser calculado adicionando os valores nas colunas %iused e ifree

Conforme observado acima, mesmo que haja espaço de armazenamento suficiente disponível no disco para criar novos arquivos, os inodes ainda podem se esgotar. Por exemplo, na figura 1, há 480 MiB de espaço de armazenamento disponível e 4.910.520 inodes livres no sistema de arquivos /dev/disk1s2.

São muitos inodes. Mas se criarmos 4.910.520 arquivos de apenas 1 byte cada nesse disco, ele ocupará todos os inodes disponíveis e consumirá apenas 5 MB de espaço de armazenamento. Portanto, mesmo que haja mais de 400 MiB de espaço disponível no disco, nenhum arquivo novo poderá ser criado. Esse é o problema de ficar sem inodes em um sistema Linux.

Identificação e solução de problemas de Inode

Você poderia argumentar que ninguém vai criar 4 milhões de arquivos pequenos, e isso pode ser verdade. Mas algumas aplicações podem criar. Por exemplo, uma aplicação pode salvar cada e-mail como um arquivo no disco e, com o tempo, gerar muitos arquivos pequenos.

Quando os sinais de aviso mencionados anteriormente começarem a aparecer, a primeira coisa a fazer é usar o comando df -i para verificar o número de inodes disponíveis. Esse comando fornecerá o número real de inodes, facilitando a verificação se os inodes estão completamente esgotados ou se estão apenas se esgotando.

Depois de estabelecer que o problema está relacionado aos inodes, a próxima etapa é excluir todos os arquivos desnecessários do disco. Para isso, é necessário identificar esses arquivos em sua origem. Usando o exemplo da aplicação de e-mail, seria útil configurar a aplicação para salvar todos os e-mails em um determinado local. Em seguida, você pode excluir esses pequenos arquivos desse local ou diretamente da própria aplicação.

Outra maneira de recuperar alguns inodes é limpar o cache e os arquivos temporários. Dependendo do sistema operacional ou da distribuição do Linux escolhida, o local de armazenamento dos arquivos temporários muda. Isso também se aplica aos arquivos em cache.

O próximo local a ser examinado são os diretórios em que os arquivos temporários são armazenados - e que geralmente são esquecidos. Um exemplo é o diretório de downloads, que pode ser limpo de arquivos desnecessários.

Por fim, a classificação de todos os arquivos em um determinado local ou diretório por tamanho de arquivo facilita a identificação de arquivos pequenos que talvez não sejam mais necessários e que podem ser excluídos. O comando para listar os arquivos em ordem crescente por tamanho de arquivo é:

ls -laShr <path_to_directory> 

A Figura 2 abaixo mostra uma captura de tela da saída desse comando, listando todos os arquivos e diretórios no local fornecido em um laptop MacBook Pro.

saída ls -laShr Fig. 2: saída ls -laShr

O comando excluir arquivo pode ser usado em conjunto com esse comando para excluir automaticamente arquivos pequenos desnecessários. No entanto, a exclusão de arquivos dessa forma pode ser perigosa, especialmente se o usuário não souber quais arquivos estão sendo visados. Naturalmente, a exclusão de arquivos que são necessários para o funcionamento adequado de uma aplicação causará problemas.

Se a exclusão de arquivos não for uma opção, a única outra maneira de aumentar o número de inodes é reparticionar todo o disco, o que, se não for feito corretamente, poderá resultar em perda de dados ou outros problemas.

Resumo

Embora sejam raros, os problemas de inode não são inéditos. Entender o uso de inodes ajuda a diagnosticar o problema corretamente. Usando alguns dos comandos do Linux mais comumente usados, podemos confirmar facilmente se os inodes são a fonte do problema ou não.

Há também uma variedade de comandos do Linux para identificar facilmente arquivos pequenos e desnecessários para exclusão. Isso garante que haja inodes suficientes disponíveis para criar novos arquivos e garantir o desempenho ideal do sistema.

Was this article helpful?
Monitore seu ambiente Linux

Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us