Inodes存储在哪里?

14

我最近开始学习Linux内核,刚学习了inode,它是包含文件元数据的数据结构。

那么,操作系统如何找到文件的相关inode呢?(比如说一个路径的字符串)。此外,这些inode存储在哪里?我的意思是,它们显然存储在磁盘上,但是具体是如何管理的呢?

我能想到的一个天真的解决方案是,在磁盘上分配一个专门用于inode的区域 - 实际上是怎么做的呢?

1个回答

25

这取决于文件系统的实现。例如, ext2fs/ext3fs选择在块组内的数据块之前存储索引节点 (inode)。第二扩展文件系统 (EXT2)

请注意,索引节点存储在所有块组中。例如,索引节点1到32768将存储在块组0中,索引节点32768到65536将存储在块组2上,依此类推。 因此,您的问题的答案是:索引节点存储在inode表中,并且在分区中的每个块组中都有一个inode表。 enter image description here


谢谢,但操作系统如何确切地知道给定路径下的块位于哪里?(比如说“/path/to/my/file”) - LiorGolan
2
每个目录条目必须指定至少路径组件名称以及其详细信息的位置(例如inode号码)。根目录具有众所周知的inode号码(通常为#2)。正如mik1904所指出的那样,如果您知道inode号码,则可以找出给定文件系统上磁盘上的位置。然后它变成了一个练习:1.读取指定inode的目录数据2.查找下一个路径组件的名称及其详细信息3.重复直到到达路径中的最后一个组件。 - Sparky
为什么有 n 个数据块和 n 个块组? 还是说它们分别是 n 和 m 个? - Niclas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接