用于存储 inode 的数据结构是啥?

Posted

技术标签:

【中文标题】用于存储 inode 的数据结构是啥?【英文标题】:What is the data structure used to store your inodes?用于存储 inode 的数据结构是什么? 【发布时间】:2019-04-09 10:28:14 【问题描述】:

据我了解,每个文件都有一个 inode 保存数据块位置和有关该文件的一些元数据。存储和引用这些 inode 的方法是什么?我不是在询问 inode 结构本身,而是我们如何通过 inode 编号来区分每个结构。我们是否有一种类似于位图的 inode 表的新结构?一个说 inodes[0] 的数组对于访问零的 inode 号是有意义的。

或者我认为我想念理解。在我们的文件系统中,我们将一个 Inode 存储到第一个内存块中,因此假设我们的第一个内存块是 inode1,并且要访问第二个 inode,您可以通过指向内存开头加上一个块的大小来访问第二个内存块记忆

【问题讨论】:

【参考方案1】:

这是简单文件系统的一种可能的磁盘布局。引导块包含用于启动整个系统的特殊数据。超级块包含描述文件系统的信息。在超级块之后,可能有一段内存专门用于跟踪系统中未使用块的位图。在位图之后,是 inode 部分。

您可以拥有一个 inode 表,它是一个 inode 结构数组,可以为您将 inode 编号转换为 inode。它就像 inode_table[0] 一样简单。

另外,如果你有从物理磁盘读取和写入扇区的功能,并且知道 inode 部分从哪个扇区开始,以及扇区的大小和以字节为单位的 inode,使用一些算术和模数运算,您可以轻松地从文件系统中获取特定的 inode,而无需使用 inode 表。

【讨论】:

以上是关于用于存储 inode 的数据结构是啥?的主要内容,如果未能解决你的问题,请参考以下文章

inode是啥

inode block 软硬链接

Linux中的inode到底是啥

Inode是啥意思

linux上的inode编号是啥

浅析Linux文件inode与block硬链接与软链接恢复误删文件