3

我已经浏览了inodelinux 内核代码中的代码,但我无法弄清楚inode. 我知道有 15 个指针 [0-14],其中 12 个是直接的,1 个是单间接的,1 个是双间接的,1 个是三重间接的。

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

4

2 回答 2

4

访问其数据取决于特定的文件系统,因此通常没有“数据指针”(某些文件系统可能是虚拟的,这意味着动态生成数据或从网络检索数据)。

如果你有兴趣ext4,你可以查看 ext4 特有的 inode 结构 ( struct ext4_inode) fs/ext4/ext4.h,其中一个 inode 的数据确实被 12 个直接块的索引引用,1 个单间接,1 个双间接和 1 个三间接.

这意味着 inode 数据的块 [0..11] 具有 numbers e4inode->i_block[0/1/.../11],而e4inode->i_block[12]是一个由数据块编号本身填充的块的编号(因此它在 [12, 12 + fs- 范围内保存 inode 数据块的索引>block_size / sizeof(__le32)]. 相同的技巧适用于i_block[13],只是它保存从 index 开始的双间接索引(用块的索引填充的块,这些块的索引包含保存实际数据的块列表)12 + fs->block_size / sizeof(__le32),并i_block[14]保存三重间接索引。

于 2012-12-07T16:44:18.607 回答
4

如此处所述:

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 命令的输入通常是硬盘映像本身的副本,原因有很多。

于 2014-01-21T04:35:02.610 回答