inode数据结构中的数据指针

时间:2012-12-07 15:45:19

标签: linux linux-kernel kernel

我已经浏览了linux内核代码中inode的代码,但我无法确定inode中数据指针的位置。我知道有15个指针[0-14],其中12个是直接的,1个是单个间接的,1个是双重间接的,1个是三个间接的。

有人可以找到这些数据成员。另外请详细说明你如何找到这些,因为我在google上用不同的关键词多次搜索但都是徒劳的。

2 个答案:

答案 0 :(得分:3)

由特定的文件系统来访问其数据,因此没有"数据指针"通常(某些文件系统可能是虚拟的,这意味着即时生成数据或从网络中检索它)。

如果您对ext4感兴趣,可以在struct ext4_inode中查找特定于ext4的inode结构(fs/ext4/ext4.h),其中inode的数据确实被引用12个直接块的索引,1个单个间接,1个双重间接和1个三个间接。

这意味着inode数据的块[0..11]具有数字e4inode->i_block[0/1/.../11],而e4inode->i_block[12]是填充了数据块编号本身的块的编号(所以它保存了inode数据块的索引[12,12 + fs-> block_size / sizeof(__ le32)]。同样的技巧应用于i_block[13],只有它拥有双重间接索引(填充了包含保存实际数据的块列表的块索引的块)从索引12 + fs->block_size / sizeof(__le32)开始,i_block[14]保存三个间接索引。

答案 1 :(得分:3)

如下所述:

http://computer-forensics.sans.org/blog/2010/12/20/digital-forensics-understanding-ext4-part-1-extents

Ext4使用范围而不是块指针来跟踪文件内容。

如果您对使用内容指针的ext3 / ext2数据结构感兴趣:

http://www.slashroot.in/how-does-file-deletion-work-linux

有许多好的图表来详细说明。在这里:

http://mcgrewsecurity.com/training/extx.pdf

第16页的

有“块指针”的详细信息示例(基本上是块编号,或相对于磁盘映像开头的偏移值,1块通常是512字节)。

如果你想在文件系统中走一条文件系统,比如一个ext3格式的硬盘,请看:

http://wiki.sleuthkit.org/index.php?title=FS_Analysis

但你总是可以使用“dd”命令来做所有事情,只需要知道从哪里开始阅读和停止阅读,dd命令的输入通常是硬盘图像本身的复制品,原因很多。 / p>