在 ext3 文件系统中查看超级块时出现问题

在 ext3 文件系统中查看超级块时出现问题

我尝试在 ext3 文件系统中通过命令“dd”查看超级块。

dd if=/dev/sda3 bs=4096 skip=1 count=1 of=superblock

但是超级块文件中的结果不正确(我比较了从 dumpe2fs 获得的 Inodes 计数值)。设备文件 /dev/sda3 是从引导块开始的,然后是从 group0 的超级块开始的?另一个问题是引导块和超级块的大小都是 BLOCKSIZE(这里是 4096)?ext2/ext3 的磁盘格式(我认为它们相同)如下所示:

替代文本

答案1

ext2/ext3 文件系统的启动块长度为 1024 字节,而不是 4096 字节。使用

  $ sudo tune2fs -l /dev/sda3

将文件系统参数视为块大小,以及

  $ sudo dumpe2fs -hx /dev/sda3

获取超级块。此外

  $ sudo dd if=/dev/sda3 bs=1k skip=1 count=4

将获得超级块。

答案2

感谢 dtmilano 的回答。我在提问之前已经尝试过了。但我认为结果是错误的。问题是我忘记转换小端字节序了!!

下面我把我的步骤写下来供大家参考:

$ sudo dd if=/dev/sda3 bs=1k skip=1 count=4

超级块中的第一行是:0000000: 0000 3a04 fdc4 3904 a616 3600 45f6 fc00 ..:...9...6.E...

因此根据 ext3_fs.h 中的 struct ext3_super_block 声明:/00/ __le32 s_inodes_count; /* Inode 数量/__le32 s_blocks_count;/块数 */

inode 数量为 043a0000 = 70909952(0000 3a04 应转换为 043a0000)块数量为 0439c4fd = 70894845

它与 dumpe2fs 的输出相同:Inode 计数:70909952 块计数:70894845

相关内容