inode 存储在哪里?
Posted
技术标签:
【中文标题】inode 存储在哪里?【英文标题】:Where are inodes stored at? 【发布时间】:2016-10-22 00:23:41 【问题描述】:我最近开始学习 Linux 内核,我刚刚了解了 inode,它是包含文件元数据的数据结构。
现在,操作系统如何找到文件的关联 inode? (假设是一串路径)。此外,这些 我的意思是,显然它们存储在磁盘上,但它们是如何管理的呢?
一个天真的解决方案(我能想出)是在磁盘上分配一个仅为 inode 指定的区域 - 实际做了什么?
【问题讨论】:
【参考方案1】:这取决于文件系统的实现。例如 ext2fs/ext3fs 选择在 Block Group 内的数据块之前存储 inode。 The Second Extended File system (EXT2)
记住存储在所有块组中的 inode。例如,inode 1 到 32768 将存储在 Block Group-0 中,inode 32768 到 65536 将存储在 Block-Group-2 中,依此类推。 因此,您的问题的答案是:inode 存储在 inode 表中,并且分区中的每个块组中都有一个 inode 表。
【讨论】:
谢谢,但是操作系统如何确切地知道该块在给定路径中的位置? (比如说“/path/to/my/file”) @LiorGolan - 每个目录条目不仅必须指定路径组件名称,还必须指定在哪里可以找到其详细信息(例如 inode 编号)。根目录有一个众所周知的 inode 编号(通常是 #2)。正如 mik1904 所指出的,如果您知道 inode 编号,您可以找出给定文件系统在磁盘上的位置。然后它变成一个练习 1. 读取指定 inode 的目录数据 2. 查找下一个路径组件的名称及其详细信息 3. 重复直到到达路径中的最后一个组件。 为什么是 n 个数据块和 n 个块组?还是 n 和 m 很多?以上是关于inode 存储在哪里?的主要内容,如果未能解决你的问题,请参考以下文章