存储在哪里的inode?

Lio*_*lan 5 linux filesystems operating-system linux-kernel

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

现在,操作系统如何找到文件的关联inode?(让我们说一串路径).而且,那些inode存储在哪里?我的意思是,显然它们存储在磁盘上,但它们是如何管理的?

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

mik*_*904 9

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

记住存储在所有块组中的inode.例如,inode 1到32768将存储在Block-Group-0和存储在Block-Group-2上的inode 32768到65536,依此类推.因此,您的问题的答案是:Inode存储在inode表中,并且在分区中的每个块组中都有一个inode表. 在此输入图像描述

  • @LiorGolan - 每个目录条目不仅必须至少指定路径组件名称,还必须指定查找其详细信息的位置(例如inode编号).根目录具有众所周知的inode编号(通常为#2).正如mik1904所指出的,如果您知道inode编号,则可以找到磁盘在给定文件系统中的位置.然后它成为1.读取指定inode 2的目录数据的练习.查找下一个路径组件的名称及其详细信息3.重复直到到达路径中的最终组件. (2认同)