O que são inodes?

jul 12, 2021

Utilizar-se da tecnologia atualmente, especialmente quando o assunto é Internet, está acessível e na quase totalidade das situações não requer praticamente nenhum conhecimento técnico, como por exemplo, arquitetura de sistemas operacionais, sistemas de arquivos, as diferenças entre Linux, Windows, Android ou outras centenas de conceitos que estão envolvidos.

Mas pode chegar o momento em que, a não ser que você possa pagar para alguém com conhecimentos específicos, você terá que conhecer algumas coisas.

Um desses assuntos, especialmente se você tem que lidar com planos de hospedagem de site ou mesmo sistemas baseados no Unix, como o Linux, é o que são inodes.

Não é propriamente um assunto indispensável para todo mundo que tem um site, mas se você está aqui, além da possível curiosidade ou necessidade de aprender que um profissional da área tem, é provável que se deparou com um problema de atingimento do limite de inodes.

Mas afinal, o que são inodes? Por que eles são importantes?

O que é inode?

O conceito de inode, é inerente aos sistemas operacionais baseados no Unix, como o Linux e o MacOs. Ambos, bem como todos os outros com a mesma “paternidade”, fazem uso dos inodes, cujo nome tem origem em “index nodes” ou nós de índices, em português.

Um inode é basicamente uma estrutura de dados, pré-definida e que tem por papel armazenar metadados de cada arquivo e diretório do sistema de arquivos usados pelos sistemas operacionais oriundos do Unix.

Sendo assim, se você tem um smartphone Android, notebook Linux ou MacBook, tem um inode correspondente a cada arquivo e pasta existente no seu MicroSD, HD ou SSD.

Inodes contém informações relativas aos arquivos e pastas de um sistema de arquivos, tais como o número único do inode, permissões, ID do usuário e do grupo ao qual pertence o usuário, quando foi criado, modificado e acessado pela última vez, tamanho, entre outros dados.

Tais informações precisam de um espaço reservado para serem registradas e armazenadas e que pode variar entre 128 bytes em sistemas de arquivo ext3 e 256 bytes no ext4.

É por essa razão que ao formatar uma unidade de armazenamento, como um pendrive por exemplo, que não temos disponível todo o espaço informado como sua capacidade.

Parte do espaço é reservado pelo sistema de arquivos, para armazenar as tabelas de inodes e eles próprios. Este espaço, que varia e é proporcional ao total de espaço da unidade, é o que falta para o total nominal da unidade de armazenamento que você comprou e formatou.

A importância do inode

Os sistemas de arquivos de sistemas operacionais baseados no Unix, dependem dos inodes para identificar adequadamente cada pasta e arquivo existentes.

Nomes de pastas e arquivos, não existem para o sistema e são uma abstração para que as pessoas possam identificar o que criam e usam em um sistema operacional.

A única coisa que existe como referência de um arquivo no escopo do sistema operacional, é o número do inode, que é único. Ao se executar um terminal no Linux ou MacOs, e digitar “ls -1i”, via SSH, em um diretório qualquer, o resultado visto é algo como:

41946014 ./
41946004 ../
41946015 caches/
41946092 contactinfo
41946016 datastore/
41946034 ducache
41946093 email_accounts.cache
41943116 email_accounts_count
41943136 email_accounts.json
41946095 email_accounts.yaml
41946097 fileupload-Fy9lviRndk6CyTTL4002319.log
42074596 nvdata/
41943285 nvdata.cache
41946099 nvdata.yaml

O número visto à esquerda, é o inode de cada pasta e arquivo contido na pasta em que o comando “ls” foi executado

Ao se executar o comando stat <41943285>, que exibe os metadados contidos no inode 41943285 e que corresponde ao arquivo nvdata.cache, temos um exemplo típico de conteúdo de inode:

Inode: 41943285   Type: regular    Mode:  0640   Flags: 0x80000
Generation: 296323059    Version: 0x00000000:00000001
User:  2047   Group:  2045   Size: 1269
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 8
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x598c9b7d:53724e00 -- Thu Aug 10 14:44:29 2017
 atime: 0x5e48ec40:9dd54604 -- Sun Feb 16 04:16:16 2020
 mtime: 0x598c9b7d:53724e00 -- Thu Aug 10 14:44:29 2017
crtime: 0x598c9b7d:53354500 -- Thu Aug 10 14:44:29 2017
Size of extra inode fields: 28
EXTENTS:
(0): 167805062

Problemas com inodes

Em geral não é comum haver relatos de problemas com inodes. Trata-se de um conceito usado e consolidado ao longo de muito tempo e no qual estão baseados poderosos sistemas operacionais.

No entanto, a quantidade de inodes disponíveis é finita. É limitada. Essa quantidade é definida no momento em que uma partição é formatada e um sistema de arquivos (ext2, ext3, ext4, …) é designado para tal partição.

O número de inodes que estarão disponíveis a partir da formatação e atribuição do sistema de arquivos, depende do tamanho da unidade formatada, da partição, do sistema de arquivos e do tamanho do inode.

Via de regra, quanto maior a partição, maior o número de inodes disponíveis e que pode ser da ordem de alguns milhões.

A maioria das pessoas é levada a pensar que milhões de inodes, significam milhões de pastas e arquivos. Estão certas.

Porém o que a maioria desconsidera, é que uma conta padrão de hospedagem, com meia duzia de contas de e-mail, uma instalação de WordPress com cerca de 10 plugins, e uma centena de postagens, pode facilmente chegar a 50 mil pastas e arquivos.

Neste cenário, se esta conta tem estabelecido um limite de inodes, é possível atingir tal limite e mesmo havendo espaço disponível para criar e armazenar mais pastas e arquivos, receber um alerta do sistema que não é possível fazê-lo.

Lembre-se que para cada novo arquivo ou pasta, deve haver um inode correspondente.

Mais que isso, um servidor de hospedagem compartilhada, com 20 contas similares a esse nosso exemplo hipotético, mas bem dentro da realidade, conseguem utilizar 1 milhão de inodes facilmente.

Portanto, embora milhões de inodes possam parecer um número inalcançável, a prática comprova que não.

Mesmo sites pequenos podem produzir uma quantidade grande de inodes e acarretar o atingimento do limite, seja por um erro, ou porque produz um grande número pequenos arquivos temporários, mas que não são nunca apagados.

Uma simples tarefa cron executada minuto a minuto, que gere um uma notificação inferior a 1Kb, em apenas 100 dias, é capaz de consumir mais de 140 mil inodes!

Os maiores “vilões” do consumo exagerado de inodes, são o SPAM, sistemas de cache, aplicações que geram muitos arquivos temporários e logs.

Assim, realizar manutenções periódicas de conteúdo, removendo arquivos e pastas obsoletos e sem uso, é fundamental para manter o número de inodes de sua conta dentro dos limites impostos pelo seu plano de hospedagem.

Conclusão

Os inodes consistem de estrutura de sistemas operacionais baseados no Unix, responsáveis por armazenar metadados de cada arquivo e diretório presente em dispositivos, como seu smartphone Android, notebook Linux ou MacBook.