Em primeiro lugar, e sei que esse não foi um dos termos da sua pergunta, você deve entender os 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 os metadados 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. Geralmente nesse evento, você precisa executarfsck
que seleciona automaticamente uma cópia alternativa do superbloco e tenta 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 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 essa informação e conhecimento adicional sobre a estrutura do sistema de arquivos, para tentar usar esse backup 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 um sistema de arquivos ou representa um metadado 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.
Um dentry é a cola que mantém inodes e arquivos juntos, relacionando números de inodes 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 os diretórios e seus arquivos.
Um arquivo , além de ser o que os humanos normalmente pensam quando apresentados com a palavra, é realmente apenas um bloco de dados arbitrários relacionados à lógica. 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.
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 tem permissão para 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 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.
fonte
superbloco , o nó de índice (ou inode ), a entrada de diretório (ou dentry ) e, finalmente, o objeto de arquivo fazem parte do sistema de arquivos virtual (VFS) ou da opção 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.
Relacionamentos dos principais objetos no VFS
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.
Fonte
fonte
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 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 exemplostruct 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
é criadosys_open
no kernel, portanto, um processo pode ter muitosstruct file
s 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.
fonte
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 são derivados ou inspirados 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.
fonte