dentry和i-node的数量

我在考试中遇到以下问题:

在一个ext3文件系统中,dentries的数量要高于i-node的数量。

我必须用真或假来回答并解释。

我的答案:

这是错误的,因为dentries是目录之间的链接,基本上所有东西都是一个i-node(甚至一个目录),所以#i-nodes>#dentries。

但是我没有考虑到ext3文件系统。 有什么我错过了或我的回答是正确的?

由于以下原因,我们可能会有更多的细分:

  1. 所有硬链接都有独特的细节,但指向相同的inode。
  2. 查找返回ENOENT(文件或目录不存在)创建一个dentry并将其inode指针标记为NULL(技术上称为否定dentry)。 这有助于加快负向查找,即查找不存在的路径。

但是你可以有硬链接。 所以你可以合理地有许多指向同一个inode的文件。

在一个干净卸载的文件系统中,细目数总是高于inode的数目。

考虑:每个inode(不包括通过打开的文件句柄保持活动状态的未链接文件 – 这些文件都是在干净的卸载过程中清除的,或者在不清洁卸载后的恢复过程中清除的)至少有一个与之关联的分区。 每个目录inode至少有两个 – 它的父级(或者它自己的根目录)和from的一个连接. 。 另外目录有一个额外的dentry与它们关联的每个子目录的.. dentry。

因此,在绝对最小的情况下,比inode还要多一个dentry(对于只有根目录的FS)。 额外的目录和硬链接进一步膨胀。