Os inodes são uma estrutura de gestão utilizada nos sistemas de ficheiros dos sistemas ope­ra­ti­vos de tipo Unix. Os inodes re­pre­sen­tam ca­be­ça­lhos de dados ou es­tru­tu­ras de dados se­me­lhan­tes que contêm os metadados dos ficheiros ar­ma­ze­na­dos. Os metadados incluem in­for­ma­ções como os direitos de acesso, a lo­ca­li­za­ção do ficheiro, o grupo, o número do uti­li­za­dor e a hora de mo­di­fi­ca­ção e acesso.

O que é um inode?

Inode significa «index node» e trata-se de um método de gestão de ficheiros que tem de­sem­pe­nhado um papel im­por­tante desde a in­tro­du­ção do sistema operativo Unix e de outros sistemas baseados nele, como o Linux ou o macOS. A principal função do Inode nos sistemas de ficheiros é re­fe­ren­ciar, gerir e localizar de­ter­mi­na­dos ficheiros através de números de Inode únicos e in­con­fun­dí­veis. Os Inodes são es­tru­tu­ras de dados definidas, que descrevem e gerem de­ter­mi­na­dos ficheiros através de metadados. De­pen­dendo do sistema de ficheiros em que se encontram, utilizam uns metadados ou outros.

Os inodes não contêm in­for­ma­ções sobre o nome de um ficheiro, mas costumam incluir as seguintes in­for­ma­ções sobre ficheiros ou blocos de ficheiros:

  • Tipo e per­mis­sões de acesso
  • Número de ligações físicas (em inglês, hard link)
  • Número de uti­li­za­dor (UID)
  • Número do grupo (GID) ou GUI (GroupID)
  • Tamanho do ficheiro em bytes
  • Data da última mo­di­fi­ca­ção (mtime)
  • Data da última alteração de estado (ctime)
  • Data do último acesso (atime)
  • Endereço dos blocos de dados
  • Endereço da entrada indireta do bloco
  • Número de ligações
  • Número da versão

Como funcionam os inodes?

Os sistemas Unix não gerem as partições de um disco rígido através de agru­pa­mento em clusters, mas sim sob a forma de blocos de dados. Ao contrário dos sistemas DOS e das suas tabelas FAT, aqui são criados inodes para gerir e re­fe­ren­ciar os dados do diretório. Se os dados forem ar­ma­ze­na­dos em blocos fixos do disco rígido, é possível que um ficheiro exceda a ca­pa­ci­dade de ar­ma­ze­na­mento do bloco. Neste caso, o sistema procura outro bloco dis­po­ní­vel para guardar o resto do ficheiro. É pre­ci­sa­mente aqui que os inodes entram em ação.

Os inodes permitem localizar ficheiros ar­ma­ze­na­dos no sistema através dos seus dados de re­fe­rên­cia, dos seus di­re­tó­rios e dos seus números de inode únicos. A principal vantagem dos números de inode é que não dependem do nome do ficheiro. Se copiar um ficheiro e alterar o seu nome, poderá encontrá-lo fa­cil­mente, uma vez que mantém o mesmo número de inode que o ficheiro original. Isto também se aplica no caso dos links físicos que os uti­li­za­do­res criam com o comando ln do Linux. Os links físicos são um sistema de gestão interna que oferece a vantagem de os inodes fazerem re­fe­rên­cia tanto aos ficheiros originais como às suas cópias de segurança as­so­ci­a­das, sem consumir memória adicional.

De­pen­dendo do sistema, os inodes podem ser imutáveis, pelo que pode acontecer que um ficheiro exceda o tamanho dos inodes dis­po­ní­veis. Neste caso, o inode original remete para outro inode, também chamado de bloco de re­di­re­ci­o­na­mento, que contém o restante dos metadados.

Nota

De­pen­dendo do sistema, os inodes dis­po­ní­veis podem não ser su­fi­ci­en­tes para um grande número de ficheiros, uma vez que têm um tamanho pre­de­fi­nido. Neste caso, o sistema de ficheiros deve ser re­es­tru­tu­rado com um maior número de inodes.

Onde são uti­li­za­dos os inodes?

Os inodes servem para gerir e es­tru­tu­rar sistemas de ficheiros e são uti­li­za­dos tanto em sistemas Linux de par­ti­cu­la­res como em soluções de serviços geridos. É por isso que os uti­li­za­do­res e as empresas que procuram soluções na nuvem para ser­vi­do­res com sistemas ope­ra­ti­vos Unixóides podem utilizar as es­tru­tu­ras de dados dos inodes. Tal como acontece com a maioria dos serviços na nuvem, pode tratar-se tanto de uma nuvem pública como de uma nuvem privada, consoante as ne­ces­si­da­des de cada um.

Que sistemas de ficheiros suportam inodes?

Todos os sistemas ope­ra­ti­vos Unix, como o Linux ou o macOS, utilizam inodes. No entanto, a estrutura e a com­po­si­ção dos inodes podem variar consoante o sistema de ficheiros utilizado. Por exemplo, os sistemas ext2/ext3/ext4 utilizam uma estrutura em forma de listas ou tabelas de inodes como ca­be­ça­lhos de dados. A lista de inodes é criada au­to­ma­ti­ca­mente ao instalar o sistema e não pode ser mo­di­fi­cada pos­te­ri­or­mente. Além disso, os inodes dos sistemas ext4 de 256 bytes ocupam um espaço de ar­ma­ze­na­mento fixo que não pode ser utilizado para qualquer outro fim. Um inode descreve um ficheiro ou uma pasta do sistema de dados de acordo com os seus metadados.

O xfs ou o btrfs são sistemas de ficheiros mais complexos, con­tras­tando com o ext2/ext3/ext4, uma vez que os inodes só são criados quando são ne­ces­sá­rios para localizar de­ter­mi­na­dos ficheiros. No caso do xfs ou do btrfs, não são uti­li­za­das listas ou tabelas de inodes. Também é possível encontrar di­fe­ren­ças na forma de fun­ci­o­na­mento dos inodes dos discos rígidos (de­no­mi­na­dos «Disk Inodes») e dos inodes uti­li­za­dos para processar a memória no Linux (de­no­mi­na­dos «In Core Inodes»).

Uma visão geral dos comandos Inode mais im­por­tan­tes

De­pen­dendo do sistema de ficheiros utilizado, existe um limite es­pe­cí­fico de inodes dis­po­ní­veis, pelo que é im­por­tante saber quais os inodes que estão a ser uti­li­za­dos e quanto espaço ocupam no sistema. Es­pe­ci­al­mente se, por exemplo, não houver inodes su­fi­ci­en­tes para todos os ficheiros.

Comando para mostrar o espaço ocupado no sistema de ficheiros

Utilize o seguinte comando para verificar quanto espaço está ocupado por inodes no sistema de ficheiros:

~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20
shell

Comando para obter uma visão geral da atri­bui­ção atual de inodes

Utilize o seguinte comando para mostrar todos os inodes que estão atu­al­mente em uso no sistema:

df -ih
shell

O comando anterior fornece uma visão geral sobre a uti­li­za­ção dos inodes, incluindo o sistema de ficheiros associado, o número total de inodes, a quan­ti­dade de inodes atu­al­mente em uso e os inodes que estão livres:

df -i
shell

Comando para mostrar um número de inode

Utilize o seguinte comando para apre­sen­tar o número de inode de um de­ter­mi­nado ficheiro:

ls -i
shell

Comando para mostrar todos os ficheiros as­so­ci­a­dos a um inode

Utilize o seguinte comando para ver todos os ficheiros (incluindo os ficheiros originais, cópias de ficheiros e cópias de segurança) que têm como re­fe­rên­cia um de­ter­mi­nado inode:

-inum
shell

Dicas para tirar o máximo partido dos inodes

Um elevado consumo de inodes nem sempre significa que a sua ca­pa­ci­dade de ar­ma­ze­na­mento esteja a esgotar-se. Muitas vezes, um maior consumo de inodes também pode ser causado por pequenos ficheiros su­pér­fluos, como ficheiros tem­po­rá­rios TMP, caches ou sessões. O problema costuma ser resolvido através da eli­mi­na­ção au­to­má­tica de todos os ficheiros com mais de 14 dias. Para tal, execute uma tarefa cron com o seguinte comando:

03 *** /usr/bin/find /path/to/files/* -type f – mtime +14 -delete > /dev/null 2>&1
shell

O que acontece se houver muito poucos inodes?

Se não houver inodes su­fi­ci­en­tes dis­po­ní­veis para todos os ficheiros, é possível que:

  • As apli­ca­ções bloqueiem
  • Perda de dados
  • Ocorrer uma rei­ni­ci­a­li­za­ção não pro­gra­mada
  • Os processos travarem e não rei­ni­ci­a­rem
  • Os processos pro­gra­ma­dos não sejam iniciados au­to­ma­ti­ca­mente

Se a ca­pa­ci­dade dos inodes estiver a 100 %, é acon­se­lhá­vel libertar a memória ocupada. Outra pos­si­bi­li­dade é re­es­tru­tu­rar o sistema de ficheiros e, assim, aumentar o número máximo de inodes, embora seja um processo re­la­ti­va­mente complexo.

Ir para o menu principal