inode数据结构中的数据指针

我在linux内核代码中经历了inode代码,但是我无法确定inode中的数据指针在哪里。 我知道有15个指针[0-14],其中12个是直接的,1个是间接的,1个是间接的,1个是间接的。

有人可以find这些数据成员。 也请指出你如何find这些,因为我已经用不同的关键词search了很多次,但都是徒劳的。

Solutions Collecting From Web of "inode数据结构中的数据指针"

这是由一个特定的文件系统来访问它的数据,所以一般没有“数据指针”(一些文件系统可能是虚拟的,这意味着即时生成数据或从网络中检索数据)。

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

这意味着索引节点数据的块[0..11]具有数字e4inode->i_block[0/1/.../11] ,而e4inode->i_block[12]是一个数字块数据块编号本身(所以它保存inode的数据块的索引在[12,12 + fs-> block_size / sizeof(__le32)]。同样的技巧适用于i_block[13] ,只有它的双重i_block[13]索引由索引12 + fs->block_size / sizeof(__le32) ,并且i_block[14]保存三重间接索引,块填充有保存实际数据的块列表。

如这里所解释的:

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页有“块指针”(基本上是块号,或相对于磁盘映像起点的偏移值,通常为512个字节的1个块)的细节的示例。

如果你想走物理上的文件系统,说一个ext3格式化的硬盘驱动器,看到这个:

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

但是总是可以使用“dd”命令来执行所有操作,只需要知道从何处开始读取并停止读取,而输入dd命令通常是硬盘映像本身的复制品,原因很多。