Onde os nomes de arquivos são armazenados em um sistema de arquivos?


44

Onde os nomes de arquivos são armazenados em um sistema de arquivos?

Não está no inode ou com o conteúdo real do arquivo, pois temos um link físico que dois nomes de arquivos podem apontar para o mesmo inode.


4
Estritamente falando, isso depende inteiramente de qual sistema de arquivos você está falando. Nem todos eles têm inodes (ou mesmo diretórios).
Michael Borgwardt 28/02

NTFS ou FAT12 / 16/32 e muitos outros sistemas de arquivos não têm qualquer inode
phuclv

Muitos arquivos têm mais de um nome em mais de um diretório. Todos os arquivos do tipo diretório têm pelo menos 2 nomes, sendo um deles .em si.
Stéphane Chazelas 31/03

@ LưuVĩnhPhúc, o ntfs faz .. apenas o chama de registro MFT, mas é praticamente um inode.
Psusi

Respostas:


61

Não encontrei uma duplicata adequada, então aqui está uma resposta para sua pergunta.

Nomes de arquivos e diretórios

excerto

Nomes de arquivos e implicações de diretório:

  • inodes não contêm nomes de arquivos, apenas outros metadados.
  • Diretórios Unix são listas de estruturas de associação, cada uma das quais contém um nome de arquivo e um número de inode.
  • O driver do sistema de arquivos deve procurar um diretório procurando um nome de arquivo específico e, em seguida, converter o nome do arquivo no número de inode correspondente correto.

Fonte: página da Wikipedia no Inode

Portanto, o nome do arquivo é armazenado na estrutura de informações dos diretórios. Por exemplo:

                         ss de fs

Estrutura do diretório

excerto

No sistema de arquivos EXT2, diretórios são arquivos especiais que são usados ​​para criar e reter caminhos de acesso aos arquivos no sistema de arquivos. A Figura 9.3 mostra o layout de uma entrada de diretório na memória.

Um arquivo de diretório é uma lista de entradas de diretório, cada uma contendo as seguintes informações:

  • inode - o inode para esta entrada de diretório. Este é um índice na matriz de inodes mantidos na Tabela de Inodes do Grupo de Blocos. Na figura 9.3, a entrada de diretório para o arquivo chamado file tem uma referência ao número do inode i1,
  • comprimento do nome - o comprimento desta entrada do diretório em bytes,
  • nome - O nome desta entrada de diretório.

As duas primeiras entradas para cada diretório são sempre o padrão .e as ..entradas que significam "este diretório" e "o diretório pai", respectivamente.

Aqui estão as referências da Figura 9.3 acima:

                 ss # 2

Fonte: O Projeto de Documentação Linux: Sistema de Arquivos

Referências


9

O nome do arquivo é armazenado no respectivo diretório ("arquivo de diretório"). Esta entrada aponta para um inode.


1
Não vejo como os destinos do link simbólico podem terminar nas entradas do diretório. O destino do link simbólico pode ser encontrado no inode do link simbólico, mas não na entrada de diretório à qual o link simbólico está vinculado, o que não faria sentido.
Stéphane Chazelas 31/03

@ StéphaneChazelas, o link simbólico em si simplesmente contém outro nome que deve ser aberto. A pesquisa de nome é iniciada novamente com o novo nome, que (se existir) é uma entrada de diretório em algum lugar.
Psusi

1

Nome do arquivo é armazenado na estrutura de dados "diretório" que possui "(string) nome do arquivo" e o correspondente "(int) inode". O diretório é responsável pelo mapeamento do nome do arquivo -> inode. e no ode é responsável pelo mapeamento do inode -> setor no disco.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.