Inodes e Superblocos no Linux
Neste artigo vamos apresentar dois conceitos muito importantes para a administração de sistemas Linux: Inodes e Superblocos. Ambos tem relação com o gerenciamento do sistema de arquivos (filesystem).
Um sistema de arquivos pode ser dividido em duas categorias de objetos:
- Dados de usuários -Dados reais armazenados em diretórios
- Metadados – Informações estruturais do sistema de arquivos, como diretórios, superblocos e inodes
O espaço em um disco é dividido em múltiplos ‘blocos’, os quais são usados para:
- Armazenar os dados de usuários (maioria dos blocos);
- Armazenar os metadados do sistema de arquivos.
Inode
Todo arquivo em um sistema de arquivos Linux possui um número único especial que é chamado de Inode. Cada objeto no sistema de arquivos é representado por um inode. O inode é uma estrutura de dados usada pelo sistema operacional para armazenar as propriedades do arquivo, e ele contém informações como:
- Informações sobre grupo e proprietário do arquivo
- Tipo do arquivo (comum, diretório, socket, pipe, bloco, etc.)
- Permissões do arquivo
- Tamanho do arquivo
- Data e hora na qual o arquivo foi criado
- Data e hora da última modificação ou leitura
- Outras informações específicas
Uma definição mais formal de inode, retirada da Wikipedia, é a seguinte:
“Em um sistema de arquivos de estilo Unix, um nó de índice, informalmente referido como um nó-i (inode), é uma estrutura de dados usada para representar um objeto do sistema de arquivos, que pode ser uma de várias coisas, incluindo um arquivo ou diretório.”
Como vemos, o conceito de inode é pertinente aos sistemas Unix e derivados, não estando presente somente em distribuições Linux.
Em Linux, podemos descobrir o número de inode de um arquivo ou diretório usando a opção -i do comando ls. Por exemplo, se quisermos descobrir o inode do arquivo /etc/passwd, basta executar o comando a seguir:
# ls -li /etc/passwd
Outra opção é usar o comando stat, que traz várias informações sobre um arquivo passado como parâmetro, incluindo seu número de inode. Veja o exemplo a seguir:
$ stat /etc/passwd
Saída:
Caso você queria ver as informações de inodes do sistema de arquivos, pode usar o comando df com a opção -i:
$ df -i
Saída:
Superbloco
O superbloco é um bloco especial que contém informações sobre o sistema de arquivos, como:
- Tipo do sistema de arquivos;
- Status
- Tamanho
- Estruturas de metadados
O Linux mantém cópias do superbloco em cada sistema de arquivos.
O superbloco é utilizado para unir todos os inodes em um sistema de arquivos, contendo todas as informações necessárias para gerenciar os arquivos.
Como o superbloco é muito importante no sistema, é comum haver uma cópia de backup do superbloco em intervalos regulares no sistema de arquivos, além de ser mantida uma cópia em memória RAM.
Podemos visualizar o conteúdo do superbloco em uma partição, como a /dev/sda1, com o comando dumpe2fs, como segue:
# dumpe2fs /dev/sda1
A figura a seguir mostra o resultado da execução desse comando em uma distribuição Linux Fedora 26 (apenas uma parte da saída é mostrada, pois o comando retorna muitas informações):
Podemos também filtrar a saída do comando dumpe2fs para mostrar apenas as informações sobre os backups do superbloco, como segue:
# dumpe2fs /dev/sda1 | grep -i superblock
Os backups do superbloco se encontram nos seguintes locais:
- Em sistemas de arquivos com blocos de 1K -> no bloco 8193
- Em sistemas de arquivos com blocos de 2K -> no bloco 16384
- Em sistemas de arquivos com blocos de 4K -> no bloco 32768
É isso aí! Neste artigo introduzimos os conceitos de inodes e superblocos no Linux. Na próxima lição vamos falar mais sobre o sistema de arquivos do Unix / Linux.
Até lá!