como os diretórios são implementados no sistema de arquivos UNIX?

0

Esta questão é extensão para Como os diretórios são implementados em sistemas de arquivos Unix?

Estou com o objetivo de implementar o sistema de arquivos básico: Depois de ler o nome e o número do inode chegamos a saber o nome do arquivo e, portanto, podemos listar o conteúdo do diretório, mas não podemos determinar o tipo de entrada: se é outro diretório ou arquivo. Se houver 1000 entradas no diretório, a leitura de 1000 inodes apenas para determinar se é um arquivo ou diretório parece muito tola.

Estou faltando alguma coisa aqui ou é só assim?

    
por Anurag Peshne 19.03.2013 / 17:18

1 resposta

6

Basicamente: é a sua decisão

Se por "UNIX File System" você quer dizer UFS, então um diretório pai inode não armazena em cache os tipos de arquivo, ele apenas contém os arquivos e inodes correspondentes. Fonte: Sistemas de arquivos da UFS (PDF, ver cap 15.2.2)

Isso pode não ser o caso de todos os sistemas de arquivos, é uma opção de design. E para o seu sistema de arquivos, pode ser sua escolha de design.

Para a tolice dessa escolha, eu discordaria. Pense quantas vezes o sistema teria que verificar os tipos de arquivos em um diretório? Você precisa equilibrar a freqüência de um comando ls -l com o espaço extra que o armazenamento em cache das informações no inode levaria.
Se o seu sistema de arquivos for do tipo cluster (por exemplo, glusterfs) ou network-like (por exemplo, nfs), isso pode ser uma boa ideia, devido à possível latência de acessar todos os inodes. No armazenamento local, isso pode ser uma preocupação menor. Além disso, qual é o seu sistema de arquivos tentando alcançar? Se ele for projetado para ser eficiente com diretórios que contenham cada um milhares de arquivos, então pode valer a pena considerar o armazenamento em cache dos tipos de arquivo, se ele for projetado para ser enxuto com o menor tamanho possível, o armazenamento em cache não poderia ser evitado.

Observação sobre o ext2, 3 e 4 e o recurso filetype

Parece que ext2-4 pode fazer exatamente o que você tem em mente. Pode armazenar em cache os tipos de arquivos na entrada de diretório. Isso está ativo somente com o recurso filetype como tempo de criação do sistema de arquivos. Quando este recurso é usado, ext4 usa uma estrutura diferente para a entrada de diretório que pode ter um cache dos tipos de arquivos. Este aplica-se também a ext2 e ext3 .

    
por 19.03.2013 / 17:44