当我学习ext4
文件系统(或几乎所有 Linux 文件系统)中的 inode 时,我发现目录也有 inode 条目。但我对一个微妙的方面有点困惑。
- 目录的 inode 结构与文件的 inode 条目相似吗?关联
或者
- 它们与文件 inode 不同(如
.txt
等)吗?关联
在这两篇文章中,都提到目录只是将文件名映射到 inode 值的文件。但在第一个链接中,它将目录内容(映射)作为内存块中的单独数据池段进行寻址,索引节点表存储数据池的索引节点值,而在另一个链接中,作者提到(在image) 表示映射是目录的 inode 结构。
因此,出现了疑问,是存储在单独的内存块中的目录的映射内容和索引节点表中的索引节点条目指向该特定的内存块,还是它们存储在一起(文件名和索引节点值之间的映射) )在索引节点表本身中作为索引节点条目,没有任何包含子文件和目录数据的额外内存块?
请帮忙。
答案1
您的第一个参考(单个图表)(很大程度上)是垃圾。只是说 inode 直接指向“content_of_file_2”是一种荒谬的简化。我从未见过在这种情况下使用“数据池”一词。
它的作用是说明目录/文件层次结构是一棵树,它是通过浏览每个步骤的 inode 列表来实现的。
你的第二个参考看起来更好,但我没有完全阅读它。这仍然不是一个完整的解释,但是任何“完整”的东西都必须处理十个略有不同的文件系统。
我不明白为什么您认为参考文献 1 说目录和文件的处理方式类似,而参考文献 2 说它们不同。两种类型条目共有的事物的处理方式相同。在它们变得不同的地方,文件有一堆保存用户数据的块,而目录有一堆保存文件系统数据的块(特别是名称和索引节点表)。