Linux 文件系统中不同类型的缓存列表有哪些?

Linux 文件系统中不同类型的缓存列表有哪些?

我一直在读这一页,http://www.tldp.org/LDP/tlk/fs/filesystem.html,而且我很难组织它所讨论的所有不同的缓存。特别是,我不明白每个使用时的不同场景。

从我的理解来看,有

  1. 缓冲区高速缓存:由 VFS 使用。表示数据缓冲区放入缓存中。我不知道缓冲区缓存中是否只有数据缓冲区。另外,我不确定它是否仅由 VFS 使用。

  2. VFS inode 缓存:访问文件后,其 inode 会放入缓存中,以便更快地查找。我不确定拥有 inode 信息是否意味着系统不再需要沿着文件系统树到达该位置(例如,如果文件位于 Documents 下,则它将不再需要从根目录访问 Documents) 。

  3. EXT2(或其他使用 inode 的文件系统)inode 缓存:存在吗?它从未被提及,但我假设它存在。

  4. VFS目录缓存:存储“目录名到inode”的映射。正如链接中的以下引用所述,显然您可以仅使用 VFS 缓存获取 VFS inode:

    如果目录缓存中没有条目,则实际文件系统会从底层文件系统或索引节点缓存中获取 VFS inode。

    那么为什么我们还需要目录缓存呢?这与 dentry 缓存有关吗?

  5. Dentry缓存:为什么上面的文章没有提到这一点?难道没有关系吗?

答案1

那么为什么我们还需要目录缓存呢?

这只是另一个级别的缓存。即使所有路径组件都可以在其他缓存中找到,但将它们全部遍历一遍仍然需要时间。因此,目录缓存提供了一种缓存整个路径的方法,避免每次从根目录逐个路径元素查找内容。

相关内容