Como as estruturas de diretórios são armazenadas no sistema de arquivos UNIX?

8

Eu li que cada diretório armazena seu conteúdo (arquivos e subdiretórios) usando uma lista de pares de nome de arquivo e inode. Mas nenhuma das referências que recebi disse algo sobre como elas são armazenadas.

Eles são armazenados no inode do diretório pai, usando blocos de dados como um arquivo normal ou talvez usando outras maneiras que não conheço?

Obrigado pelo esclarecimento.

Oka
fonte
Não existe uma maneira única de como o Unix armazena arquivos. Semelhante a não haver uma maneira única de como o Windows armazena arquivos. Nos dois casos, depende do sistema de arquivos usado. (FAT, NTFS, ext2, UFS, ...)
Hennes
Para sistemas de arquivos, a estrutura de diretórios no disco é definida em dirent.h, e você deve usar as libcalls opendir / readdir / closedir etc para acessar o conteúdo.
ott--

Respostas:

10

Veja os internos do sistema de arquivos, que descrevem de maneira bastante simples os internos de um sistema de arquivos Unix típico.

insira a descrição da imagem aqui

A maioria dos sistemas de arquivos Unix contém

  • Um bloco de inicialização
  • Um superbloco (geometria do disco, layout da partição, contagem de inodes, etc.)
  • Blocos de inode
  • Blocos de dados

Os sistemas de arquivos modernos contêm estruturas adicionais.

Uma das coisas no superbloco é a localização dos inodes para o diretório raiz.

Um diretório é um arquivo especialmente formatado. Como em todos os arquivos comuns, ele possui blocos de dados.

Você pode ver isso em The Linux Documentation Project: Sistema de arquivos

insira a descrição da imagem aqui

Você pode usar debugfspara explorar essas estruturas.

RedGrittyBrick
fonte
2
"Um diretório é um arquivo especialmente formatado. Como em todos os arquivos comuns, ele possui blocos de dados." Então, os diretórios são armazenados com seus pares de nome de arquivo-inode (tabela mais à esquerda na 1ª foto ou a linha na 2ª foto) em seus blocos de dados?
Oka
1
@ Oka: Isso está correto.
RedGrittyBrick
Portanto, para deixar claro, o diretório é um arquivo e, portanto, é armazenado em um bloco de dados. Cada diretório no ext4sistema de arquivos, por exemplo (o que é representado por ext4_dir_entry_2263 bytes), um único bloco de 4KB pode armazenar cerca de 15 entradas de diretório?
Campescassiano