Nó-i
Em um sistema de arquivos de estilo Unix, um nó de índice, informalmente referido como um nó-i (inode), é uma estrutura de dados que descreve um objeto do sistema de arquivos, que pode ser uma de várias coisas, incluindo um arquivo ou diretório. Cada inode armazena os atributos e a(s) localização(ões) de bloco de disco dos dados dos objetos. Atributos de objeto do sistema de arquivos podem incluir metadados, bem como dados de proprietário e permissão.
Imagem: Thiago Hirai · BY · Openverse
Um dispositivo de blocos é um meio de armazenamento em que a leitura e gravação são efetuados usando um conjunto de bytes, denominado setor ou bloco, cujo tamanho é fixo (no caso do disco rígido, o setor geralmente possui 512 bytes). O sistema operacional considera o disco como sendo um grande vetor de blocos de dados de tamanho fixo e sequencialmente numerados. Um sistema de arquivos lê e grava blocos, que são grupos de setores contíguos. Em sistemas derivados do UNIX, como o UFS1 ou Ext2, os blocos tipicamente têm 1024 bytes (2 setores), 2048 bytes (4 setores), 4096 bytes (8 setores) ou 8192 bytes (16 setores). A Microsoft usa a expressão unidade de alocação (cluster) com o mesmo significado de bloco. Um arquivo é um conjunto de bytes armazenados num dispositivo de blocos. Um diretório é um arquivo cujo conteúdo é uma tabela, onde cada entrada contém um nome de arquivo ou subdiretório e um ponteiro (normalmente um número inteiro) para um nó-i. Um hard link é uma referência a um arquivo por outro nome no mesmo sistema de arquivos.
Imagem: JR Celso · BY-NC-SA · Openverse
Um sistema de arquivos depende de estruturas de dados sobre os arquivos, além do conteúdo do arquivo. Os primeiros são chamados de metadados - dados que descrevem dados. Cada arquivo é associado com um inode, que é identificado por um número inteiro, geralmente referido como um número-i ou número inode. Inodes armazenam informações sobre arquivos e diretórios (pastas), como proprietário do arquivo, modo de acesso (permissões de leitura, escrita e execução) e tipo de arquivo. Em muitos tipos de implementações de sistemas de arquivos, o número máximo de inodes é fixado na criação do sistema de arquivos, limitando o número máximo de arquivos que o sistema de arquivos pode armazenar. Uma heurística de alocação comum para inodes em um sistema de arquivos é um porcento do tamanho total. O número do inode indexa uma tabela de inodes em uma localização conhecida no dispositivo. A partir do número de inode, o controlador (driver) do sistema de arquivos do kernel pode acessar o conteúdo dos inodes, incluindo a localização do arquivo - desta forma, permitindo o acesso ao arquivo. Um número de inode de um arquivo pode ser encontrado usando o comando ls -i. O comando ls -i imprime o número do inode na primeira coluna do relatório.
Imagem: Tommy Japan 79 · BY · Openverse
Os sistemas de arquivos Ext2 e UFS1 são semelhantes em sua estrutura. Neles, o nó-i contém, basicamente, as mesmas informações: Observe-se que o nome do arquivo não está contido no nó-i. O nome estará apenas no diretório-pai do arquivo, associado ao seu ponteiro para o nó-i correspondente. Há um nó-i para cada arquivo, e cada arquivo é unicamente identificado pelo sistema de arquivo no qual reside por seu número de nó-i neste sistema.
Imagem: Pano e Papel · BY · Openverse
O i-node apresenta vantagens sobre outros formatos de particionamento de disco como o FAT32, no sentido de que o FAT32 necessita carregar toda a tabela de indexadores de blocos, o que demanda muita memória (a forma que o FAT32 usa para driblar isto é ter blocos de até 32Kb necessitando de menos indexadores e consequentemente a tabela a ser carregada na memória é menor). Em contra partida o i-node somente precisa carregar os indexadores dos arquivos que estão abertos, ficando em memória somente os arquivos abertos. O FAT cresce linearmente com o tamanho do disco, enquanto o i-node cresce proporcionalmente.

