文件名存储在文件系统上的什么位置?


43

文件名存储在文件系统上的什么位置?

它不在inode中,也不在实际文件内容中,因为我们具有硬链接,即两个文件名可以指向同一inode。


4
严格地说,这完全取决于文件系统,你在说什么。并非所有人都有inode(甚至目录)。
Michael Borgwardt 2014年

NTFS或FAT12 / 16/32和许多其他文件系统没有任何
索引

许多文件在多个目录中具有多个名称。所有目录类型的文件都至少具有2个名称,其中之一是它们.自己。
斯特凡Chazelas

@LưuVĩnhPhúc,ntfs确实..它只是称它为MFT记录,但这几乎是一个inode。
psusi'4

Answers:


60

我没有找到合适的副本,所以这是您问题的答案。

文件名和目录

摘抄

文件名和目录含义:

  • 索引节点不包含文件名,仅包含其他文件元数据。
  • Unix目录是关联结构的列表,每个结构包含一个文件名和一个索引节点号。
  • 文件系统驱动程序必须搜索目录以查找特定的文件名,然后将文件名转换为正确的相应inode编号。

来源: Inode上的Wikipedia页面

因此,文件名存储在目录的信息结构中。例如:

                         fs的ss

目录的结构

摘抄

在EXT2文件系统中,目录是特殊文件,用于创建和保存文件系统中文件的访问路径。图9.3显示了目录条目在内存中的布局。

目录文件是目录条目的列表,每个目录条目包含以下信息:

  • inode-此目录条目的inode。这是存储在块组的索引节点表中的索引节点阵列的索引。在图9.3中,名为file的文件的目录条目引用了索引节点i1,
  • 名称长度 -此目录条目的长度(以字节为单位),
  • name-此目录条目的名称。

对于每个目录前两个条目总是标准...条目分别寓意“这个目录”和“父目录”。

这是上面的图9.3参考:

                 SS#2

来源: Linux文档项目:文件系统

参考文献


9

文件名存储在相应的目录(“目录文件”)中。该条目指向一个索引节点。


1
我看不到符号链接目标可能最终出现在目录条目中。symlink目标可以在symlink的inode中找到,但是在symlink链接到的目录条目中(不在任何目录条目中)找不到,这没有任何意义。
斯特凡Chazelas

@StéphaneChazelas,符号链接本身仅包含另一个应打开的名称。名称查找再次从新名称开始,新名称(如果有的话)是某处的目录条目。
psusi

1

文件名存储在具有“(string)文件名”和对应的“(int)inode”的“目录”数据结构中。目录负责映射文件名-> inode。in ode负责映射inode->磁盘上的扇区。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.