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

113

Do artigo Anatomy do sistema de arquivos Linux por M. Tim Jones, eu li que o Linux vê todos os sistemas de arquivos da perspectiva de um conjunto comum de objetos e esses objetos são superblocos , inode , dentry e arquivo . Embora o resto do parágrafo explique o que foi dito acima, não me senti confortável com essa explicação.

Alguém poderia me explicar esses termos?

    
por Sen 29.11.2010 / 15:20

5 respostas

125

Em primeiro lugar, e percebo que não é um dos termos da sua pergunta, você deve entender metadata . Sucintamente, e roubado da Wikipedia, os metadados são dados sobre os dados. Isso quer dizer que os metadados contêm informações sobre um dado. Por exemplo, se eu tenho um carro, tenho um conjunto de informações sobre o carro, mas que não faz parte do carro em si. Informações como o número de registro, marca, modelo, ano de fabricação, informações de seguro 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 de 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 muito "de alto nível" para o sistema de arquivos. Por exemplo, se o superbloco de uma partição, / var, for corrompido, o sistema de arquivos em questão (/ var) não poderá ser montado pelo sistema operacional. Normalmente, neste caso, você precisa executar fsck , que selecionará automaticamente uma cópia de backup alternativa 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 o primeiro armazenado 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 superblocos com o comando dumpe2fs /dev/foo | grep -i superblock , que é útil no caso de uma tentativa de recuperação manual. Vamos supor que o comando dumpe2fs produza a linha Backup superblock at 163840, Group descriptors at 163841-163841 . Podemos usar essas informações e o conhecimento adicional sobre a estrutura do sistema de arquivos para tentar usar esse backup de superbloco: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo . Por favor note que eu assumi um tamanho de bloco de 1024 bytes para este exemplo.

Um inode existe em ou sobre 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 reais, diretórios, dispositivos e assim por diante. Por favor, note que, entre os metadados contidos em um inode, não há 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 (leitura, gravação, permissões de execução) e tipo de arquivo.

Uma dentry é a cola que contém inodes e arquivos juntos, relacionando números de inodes a nomes de arquivos. Dentries também desempenham um papel no cache de diretórios que, idealmente, mantém os arquivos usados com mais frequência 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 à palavra, é na verdade apenas um bloco de dados arbitrários logicamente relacionados. Comparativamente muito aborrecido, considerando todo o trabalho realizado (acima) para mantê-los informados.

Compreendo perfeitamente que algumas frases não fornecem uma explicação completa de nenhum desses conceitos, portanto sinta-se à vontade para solicitar detalhes adicionais quando e onde for necessário.

    
por 29.11.2010 / 15:53
44

Arquivo

Um arquivo significa apenas um monte de bytes organizados em uma determinada ordem. É o que as pessoas normais chamam o 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 em si) é descartado quando o arquivo é fechado.

Inode

Um inode (abreviação de "index node") é um conjunto de atributos sobre um arquivo que o Linux armazena. Existe um inode para cada arquivo (embora com alguns sistemas de arquivos, o Linux precisa 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, 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 Linux usa para manter o controle da hierarquia de arquivos nos diretórios. Cada dente mapeia um número de inode para um nome de arquivo e um diretório pai.

Superblock

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

    
por 07.12.2010 / 17:54
7

superblock , o nó de índice (ou inode ), a entrada de diretório (ou dentry ) e, finalmente, o arquivo o objeto faz parte do virtual file system (VFS) ou do virtual filesystem switch . A finalidade de um VFS é permitir que aplicativos clientes acessem tipos diferentes de sistemas de arquivos concretos de maneira uniforme.

Relacionamentos dos principais objetos no VFS

UmInodeéumaestruturadedadosemumsistemadearquivosUnix/Linux.Uminodearmazenametadadossobreumarquivo,diretórioououtroobjetodesistemadearquivoscomum.Inodeatuacomoumainterfaceentrearquivosedados.Uminodepodesereferiraumarquivooudiretórioouaumlinksimbólicoparaoutroobjeto.Elecontémumnúmeroexclusivo(onúmero-i),osatributosdoarquivo,incluindonome,data,tamanhoepermissõesdeleitura/gravação,alémdeumponteiroparaalocalizaçãodoarquivo.ÉacontrapartedatabelaFATnomundoDOS/Windows.

Programas,serviços,textos,imagenseassimpordiantesãotodosarquivos.Dispositivosdeentradaesaída,egeralmentetodososdispositivos,sãoconsideradosarquivos,deacordocomosistema.

Osuperblocoéocontêinerdemetadadosdealtonívelsobreumsistemadearquivos.Osuperblocoéumaestruturaqueexistenodisco(naverdade,várioslugaresnodiscopararedundância)etambémnamemória.Eleforneceabaseparalidarcomosistemadearquivosemdisco,poisdefineosparâmetrosdegerenciamentodosistemadearquivos(porexemplo,númerototaldeblocos,blocoslivres,nódoíndiceraiz).

DentryéainterfaceentreosarquivoseosInodes.Dentriestambémdesempenhamumpapelnocachedediretóriosque,idealmente,mantémosarquivosusadoscommaisfrequênciaparaacessomaisrápido.

Fonte

    
por 19.12.2015 / 18:32
5

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. Superblock é a abstração do sistema de arquivos.

arquivo struct, 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. O arquivo struct é criado pelo sys_open no kernel, portanto, um processo pode ter muitos arquivos struct.

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

    
por 23.12.2012 / 16:25
4

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 Unix e Unix atuais são derivados ou inspirados pelo sistema de arquivos Unix original que definiu os idiomas 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.

    
por 29.11.2010 / 17:54