Linux 索引节点存储在哪里?

Linux 索引节点存储在哪里?,linux,linux-kernel,operating-system,filesystems,Linux,Linux Kernel,Operating System,Filesystems,我最近开始学习Linux内核,刚刚学习了inode,它是包含文件元数据的数据结构 现在,操作系统如何找到文件的关联inode?(假设是一条路径的字符串)。此外,这些inode存储在哪里?我的意思是,很明显,它们存储在磁盘上,但是如何管理它们呢 一个简单的解决方案(我可以想出)是在磁盘上分配一个仅为inode指定的区域-实际做了什么?这取决于文件系统的实现。例如,ext2fs/ext3fs选择在块组中的数据块之前存储索引节点 记住存储在所有块组中的索引节点。例如,索引节点1到32768将存储在块组

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

现在,操作系统如何找到文件的关联inode?(假设是一条路径的字符串)。此外,这些inode存储在哪里?我的意思是,很明显,它们存储在磁盘上,但是如何管理它们呢


一个简单的解决方案(我可以想出)是在磁盘上分配一个仅为inode指定的区域-实际做了什么?

这取决于文件系统的实现。例如,ext2fs/ext3fs选择在块组中的数据块之前存储索引节点

记住存储在所有块组中的索引节点。例如,索引节点1到32768将存储在块组0中,索引节点32768到65536将存储在块组2中,依此类推。 所以,您的问题的答案是:inode存储在inode表中,分区中的每个块组中都有一个inode表。

谢谢,但操作系统如何准确地知道给定路径的此块位于何处?(比方说“/path/to/my/file”)@LiorGolan-每个目录条目不仅必须指定路径组件名称,还必须指定查找其详细信息的位置(例如inode编号)。根目录有一个众所周知的inode编号(通常为#2)。正如mik1904所指出的,如果您知道inode编号,就可以找到给定文件系统的inode在磁盘上的位置。然后变成1的练习。读取指定索引节点2的目录数据。查找下一个路径组件的名称及其详细信息3。重复此操作,直到到达路径中的最后一个组件。为什么是n个数据块和n个块组?还是n和m很多?