it-swarm-pt.tech

O que é um Superblock, Inode, Dentry e um Arquivo?

Do artigo Anatomia do sistema de arquivos Linux de M. Tim Jones, li que o Linux visualiza todos os sistemas de arquivos da perspectiva de um conjunto comum de objetos e esses objetos são superbloco, inode, dentry e arquivo. Embora o restante do parágrafo explique o exposto acima, eu não estava tão confortável com essa explicação.

Alguém poderia me explicar esses termos?

132
Sen

Em primeiro lugar, e sei que esse não foi um dos termos da sua pergunta, você deve entender metadados . Sucintamente, e roubados da Wikipedia, os metadados são dados sobre dados. Ou seja, os metadados contêm informações sobre um dado. Por exemplo, se eu possuo um carro, tenho um conjunto de informações sobre o carro, mas que não faz parte do próprio carro. Informações como número de registro, marca, modelo, ano de fabricação, informações sobre seguros e assim por diante. Todas essas informações são coletivamente chamadas de metadados. Nos sistemas de arquivos Linux e UNIX, os metadados existem em vários níveis da organização, como você verá.

O superbloco é essencialmente um metadado do sistema de arquivos e define o tipo, tamanho, status e informações do sistema de arquivos sobre outras estruturas de metadados (metadados dos metadados). O superbloco é muito crítico para o sistema de arquivos e, portanto, é armazenado em várias cópias redundantes para cada sistema de arquivos. O superbloco é uma estrutura de metadados de "alto nível" para o sistema de arquivos. Por exemplo, se o superbloco de uma partição/var ficar corrompido, o sistema de arquivos em questão (/ var) não poderá ser montado pelo sistema operacional. Normalmente, nesse caso, você precisa executar fsck que selecionará automaticamente uma cópia alternativa do backup do superbloco e tentará recuperar o sistema de arquivos. As próprias cópias de backup são armazenadas em grupos de blocos espalhados pelo sistema de arquivos, com a primeira armazenada em um deslocamento de 1 bloco desde o início da partição. Isso é importante no caso de uma recuperação manual ser necessária. Você pode visualizar informações sobre backups de superbloco ext2/ext3/ext4 com o comando dumpe2fs /dev/foo | grep -i superblock que é útil no caso de uma tentativa de recuperação manual. Suponhamos que o comando dumpe2fs produza a linha Backup superblock at 163840, Group descriptors at 163841-163841. Podemos usar essas informações e conhecimentos adicionais sobre a estrutura do sistema de arquivos para tentar usar esse backup de superbloco: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo. Observe que eu assumi um tamanho de bloco de 1024 bytes para este exemplo.

Um inode existe em ou em um sistema de arquivos e representa metadados sobre um arquivo. Para maior clareza, todos os objetos em um sistema Linux ou UNIX são arquivos; arquivos, diretórios, dispositivos reais etc. Observe que, entre os metadados contidos em um inode, não existe um nome de arquivo como os humanos pensam, isso será importante mais tarde. Um inode contém essencialmente informações sobre propriedade (usuário, grupo), modo de acesso (permissões de leitura, gravação, execução) e tipo de arquivo.

A dentry é a cola que mantém inodes e arquivos juntos, relacionando números de inode a nomes de arquivos. Os dentries também desempenham um papel no cache de diretórios que, idealmente, mantém os arquivos mais frequentemente disponíveis para acesso mais rápido. A travessia do sistema de arquivos é outro aspecto do dentry, pois mantém um relacionamento entre diretórios e seus arquivos.

Um arquivo, além de ser o que os humanos normalmente pensam quando apresentados à Palavra, é realmente apenas um bloco de dados arbitrários relacionados logicamente. Comparativamente muito monótono, considerando todo o trabalho realizado (acima) para acompanhá-los.

Compreendo perfeitamente que algumas frases não fornecem uma explicação completa de qualquer um desses conceitos; portanto, fique à vontade para solicitar detalhes adicionais quando e onde necessário.

144
Tok

Arquivo

Um arquivo significa apenas um monte de bytes organizados em uma determinada ordem. É o que as pessoas normais chamam de conteúdo de um arquivo. Quando o Linux abre um arquivo, ele também cria um objeto de arquivo, que contém dados sobre onde o arquivo está armazenado e quais processos estão sendo usados. O objeto de arquivo (mas não os dados do arquivo) é descartado quando o arquivo é fechado.

Inode

Um inode (abreviação de "index node") é um monte de atributos sobre um arquivo que o Linux armazena. Há um inode para cada arquivo (embora em alguns sistemas de arquivos, o Linux precise criar seus próprios inodes porque as informações estão espalhadas pelo sistema de arquivos). O inode armazena informações como quem possui o arquivo, qual o tamanho do arquivo e quem pode abrir o arquivo. Cada inode também contém um número exclusivo para a partição do sistema de arquivos; é como um número de série para o arquivo descrito por esse inode.

Dentry

Um dentry (abreviação de "entrada de diretório") é o que o kernel do Linux usa para acompanhar a hierarquia de arquivos nos diretórios. Cada dentry mapeia um número de inode para um nome de arquivo e um diretório pai.

Superbloco

O superbloco é uma estrutura de dados exclusiva em um sistema de arquivos (embora existam várias cópias para se proteger contra corrupção). O superbloco contém metadados sobre o sistema de arquivos, como qual inode é o diretório de nível superior e o tipo de sistema de arquivos usado.

50
pingswept

superbloco , o nó do índice (ou inode ), a entrada do diretório ( ou dentry ) e, finalmente, o objeto de arquivo faz parte de sistema de arquivos virtual (VFS) ou comutador de sistema de arquivos virtual . O objetivo de um VFS é permitir que aplicativos clientes acessem diferentes tipos de sistemas de arquivos concretos de maneira uniforme.

Relações dos principais objetos no VFS

enter image description here


Um Inode é uma estrutura de dados em um sistema de arquivos Unix/Linux. Um inode armazena metadados sobre um arquivo, diretório ou outro objeto comum do sistema de arquivos. O inode atua como uma interface entre arquivos e dados. Um inode pode se referir a um arquivo ou diretório ou a um link simbólico para outro objeto. Ele contém um número exclusivo (o número i), os atributos do arquivo, incluindo nome, data, tamanho e permissões de leitura/gravação e um ponteiro para o local do arquivo. É a contrapartida da tabela FAT no mundo DOS/Windows.

Programas, serviços, textos, imagens, etc., são todos arquivos . Os dispositivos de entrada e saída, e geralmente todos os dispositivos, são considerados arquivos , de acordo com o sistema.

O superbloco é o contêiner para metadados de alto nível sobre um sistema de arquivos. O superbloco é uma estrutura que existe no disco (na verdade, vários locais no disco para redundância) e também na memória. Ele fornece a base para lidar com o sistema de arquivos em disco, pois define os parâmetros de gerenciamento do sistema de arquivos (por exemplo, número total de blocos, blocos livres, nó do índice raiz).

Dentry é a interface entre arquivos e Inodes. Os dentries também desempenham um papel no cache de diretórios que, idealmente, mantém os arquivos mais frequentemente disponíveis para acesso mais rápido.

Origem

14
Premraj

Na simplicidade, dentry e inode são a mesma coisa, uma abstração de arquivo ou diretório. As diferenças entre dentry e inode são que o dentry é usado para facilitar operações específicas de diretório, inode é apenas uma coleção de metadados sobre arquivo ou diretório. Superbloco é a abstração do sistema de arquivos.

struct file, no kernel do linux, é nomeado erroneamente como muitos outros (por exemplo, struct address_space) e não é uma abstração de um "arquivo" real (por exemplo,/etc/passwd). Representa um "arquivo" ou diretório aberto. struct file é criado por sys_open no kernel, para que um processo possa ter muitos struct files para o mesmo arquivo.

Por que precisamos de dentista? É usado para acelerar a tradução do nome do caminho (por exemplo,/etc/passwd) para o inode. O kernel do Linux usa inode para manipular "arquivo" ou diretório, não o nome.

5
firo

Observe que esses termos não são específicos do Linux, mas específicos do sistema de arquivos. A maioria dos sistemas de arquivos usados ​​pelos sistemas atuais Unix e Unix é derivada ou inspirada no sistema de arquivos Unix original, que definiu os idiomas de superbloco e inode. O Linux também pode montar vários sistemas de arquivos com os quais não há noção de superbloco e/ou inode, sendo o mais comum o FAT. Outro, o ZFS, não usa superblocos, mas überblocks.

4
jlliagre