inode 表保存在内存中吗?

RG_*_*ton 6 linux filesystems

据我了解,Linux 使用 inode 表在磁盘上定位文件。Linux文件系统是否在内存中保存inode表?无论 ext2、ext3 还是 ext4,这都是一样的吗?

有谁知道描述这一点的好参考资料吗?

Liz*_*rdx 3

这已经在这里讨论过:文件表是在文件系统中还是在内存中?

看来说得还蛮彻底的。但这仍然是一个好问题。正如您所看到的,这个问题实际上比您的问题所暗示的更具体。

http://140.120.7.21/LinuxKernel/LinuxKernel/node17.html这是一个更技术性的解释,似乎涵盖了相同的问题,具有相同的答案,内存和磁盘上有不同类型的 inode 表,如果我读过它正确的。这是从 2008 年开始的,但我怀疑至少对于 ext 文件系统来说,没有太大变化,尽管我不确定这一点。

旧的内核解释实际上相当不错:

普通文件只是存储在某些物理设备中的数据字节序列,没有附加任何名称。该文件的管理信息,如所有者、权限、大小、时间等,存储在文件的 inode 结构中。文件系统的所有索引节点都收集在一起形成索引节点表。每个文件系统占用一个逻辑磁盘。从逻辑磁盘的$2^{nd}$块开始,内核将文件系统的inode表存储在连续的磁盘块中。每个索引节点(索引节点表中的一个条目)是系统用来存储有关文件的以下信息的数据结构:

....

最后,Linux 源代码树 (include/linux/fs.h) 中还定义了一种 inode 结构。这是In-Core inode,即加载到内存中的inode结构。当加载这个In-Core inode时,相关的磁盘inode信息会被填充到其相关字段中。