2

我在考试中有以下问题:

在 ext3 文件系统中,dentries 的数量高于 i 节点的数量。

我不得不用真假来回答并解释。

我的答案:

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

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

4

3 回答 3

4

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

  1. 所有硬链接都有唯一的目录,但指向同一个 inode。
  2. 返回 ENOENT(文件或目录不存在)的查找会创建一个 dentry 并将其 inode 指针标记为 NULL(技术上称为负 dentry)。这有助于加快否定查找,即在不存在的路径上查找。
于 2012-10-21T12:16:50.150 回答
1

但是你可以有硬链接。因此,您可以合理地让许多dentries 指向同一个inode。

于 2012-05-26T10:58:20.020 回答
1

在完全卸载的文件系统中,dentries 的数量总是高于 inode 的数量。

考虑:每个 inode(不包括通过打开的文件句柄保持活动状态的未链接文件 - 这些文件在干净卸载中或在未干净卸载后的恢复期间被清除)至少有一个与之关联的目录项。每个目录 inode 至少有两个 - 来自其父(或它自己..的根)的链接和来自.. 此外,对于每个子目录的目录,目录都有一个与之关联的附加目录..

因此,绝对最小值,dentry 比 inode 多一个(对于只有根目录的 FS)。其他目录和硬链接进一步扩大了这一点。

于 2012-10-21T12:27:30.027 回答