Nós-i e metadados#

O que são metadados?#

Metadados são informações que descrevem um objeto, em vez de constituírem o próprio conteúdo desse objeto. No contexto de um sistema de arquivos Linux, os metadados permitem que o sistema operacional identifique um arquivo, controle seu acesso e gerencie seu armazenamento. Entre os metadados, os mais comuns estão listados na Tabela 1.

Tabela 1 Metadados típicos de sistemas de arquivos para Linux#

Metadado

Significado

Tipo de arquivo

Indica se é arquivo regular, diretório, link simbólico ou outro tipo de objeto.

UID

Identificador numérico do usuário proprietário.

GID

Identificador numérico do grupo proprietário.

Modo de acesso

Permissões de leitura, escrita e execução, além de bits especiais.

Tamanho

Quantidade de bytes do conteúdo lógico do arquivo.

Número de links físicos

Quantos nomes de diretório apontam para o mesmo inode.

Timestamps

Datas e horários associados a eventos no arquivo.

Referências ao armazenamento

Informações utilizadas pelo sistema de arquivos para localizar os dados.

É importante distinguir os metadados do conteúdo. Por exemplo, alterar o proprietário de um arquivo não exige, em condições normais, modificar os bytes do documento armazenado. O que muda é a informação de propriedade mantida pelo sistema de arquivos.

O que é um inode?#

Em sistemas de arquivos Unix e Linux que utilizam inodes, ou nós-i, um inode é uma estrutura de dados que representa um objeto do sistema de arquivos e armazena seus metadados, além de informações necessárias para localizar seu conteúdo.

O inode normalmente contém informações como:

  • Tipo do objeto.

  • Permissões e bits de modo.

  • UID do proprietário.

  • GID do grupo proprietário.

  • Tamanho lógico.

  • Timestamps.

  • Contagem de links físicos.

  • Referências aos blocos de dados ou outras estruturas usadas para localizar o conteúdo.

O inode não armazena, em geral, o nome do arquivo. Os nomes ficam nas entradas dos diretórios, que associam nomes a números de inode. A entrada do diretório associa um nome ao inode, que contém metadados e referências aos dados, conforme ilustrado na Figura 1. O número 4821 é apenas ilustrativo. Os números reais dependem do sistema de arquivos e do volume em que o arquivo está armazenado.

_images/image-inode.png

Figura 1 Representação do nome de um arquivo associado a um inode#

Nome do arquivo e inode são coisas diferentes#

Considere os comandos:

touch relatorio.txt
ln relatorio.txt relatorio-copia.txt
ls -li relatorio.txt relatorio-copia.txt

O comando touch cria o arquivo vazio se ele ainda não existir. O comando ln, sem opções, cria um link físico (hard link).

Uma saída possível seria:

123456 -rw-r--r-- 2 ana professores 0 Oct 19 20:00 relatorio.txt
123456 -rw-r--r-- 2 ana professores 0 Oct 19 20:00 relatorio-copia.txt

Observe os campos:

  • 123456: número do inode, igual nas duas entradas.

  • 2: quantidade de links físicos.

  • ana: usuário proprietário.

  • professores: grupo proprietário.

  • 0: tamanho do arquivo em bytes.

Como os dois nomes apontam para o mesmo inode, eles representam o mesmo objeto do sistema de arquivos. Alterar o conteúdo ou as permissões por um dos nomes afeta o objeto acessível pelo outro nome também.

Isso é diferente de criar uma cópia independente com cp, que normalmente produz um novo arquivo com seu próprio inode.

Atenção: inodes são identificados dentro de um sistema de arquivos. Para identificar um objeto de forma mais precisa, considere o par formado pelo dispositivo ou sistema de arquivos e pelo número do inode.

Como consultar o inode e os metadados#

O comando ls -i exibe o número do inode:

ls -i relatorio.txt

Para consultar um conjunto mais completo de metadados, use stat:

stat relatorio.txt

Uma saída típica inclui informações como:

File: relatorio.txt
Size: 0
Inode: 123456
Links: 2
Access: (0644/-rw-r--r--)
Uid: (1000/ana)
Gid: (1001/professores)
Access: 2026-10-19 20:00:00
Modify: 2026-10-19 20:00:00
Change: 2026-10-19 20:00:00
Birth: 2026-10-19 20:00:00

Os valores são ilustrativos. A disponibilidade do campo Birth depende do sistema de arquivos e do suporte do sistema.

É útil diferenciar três timestamps:

  • atime — access time: relacionado ao último acesso ao conteúdo.

  • mtime — modification time: relacionado à última modificação do conteúdo.

  • ctime — status change time: relacionado à última alteração do estado do inode, como permissões, propriedade ou tamanho.

O ctime não significa necessariamente creation time. A data de criação, quando disponível, é uma informação distinta.