O que são Inodes e Superblocos no Linux
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á!
Fábio, pode-se dizer que os INODES servem para indicar também a posição/local do arquivo dentro do disco?
De certa forma sim Diogo, os inodes em conjunto são como uma espécie de “mapa” dos arquivos no disco, indicando sua posição na estrutura de arquivos.