linux查看分区blocks,查看ext3文件系统分区的superblock

本文将介绍怎样读取一个分区的superblock:

1. 首先我们查看一下在磁盘上有哪些分区,通过fdisk -l

3608893f31bdc41e280e0906b161807f.png

这里有三个分区,我们下面查看/dev/sda3(这是一个device file)

2. 从/dev/sda3拷贝1024B-2048B(这就是superblock的位置)到一个叫superblock的文件

594fd9c3f97eac31c454adffe8058ae4.png

这里我们用到了dd这个工具,它在对磁盘进行这样读写操作时非常有用,具体请见man。

bs=1k 每次读写的块大小

skip=1 偏移多少块开始读(这里块为bs=1k,偏移1,表示从1k开始读)

count=1 读的大小(这里表示读1k)

if,of 分别表示从哪里读和写到哪里去。

这里你也许会问为什么要从1k处开始读,并且就读1k的大小呢?下图就是一个分区的物理存储结构:

e96b2a956272e4f6b618ef51936ee5ab.png

从图中我们可以看到第一个Block的第一个1k处是存储的Boot Block,而superblock是从1k开始,大小为1k。

3. 查看superblock文件

用vim打开我们刚才从/dev/sda3复制出来的superblock文件,由于是二进制文件,我们在用vim打开之后要用:%!xxd转换成16进制形式。

1c2ebe16f07c65822f2a25b14be1a2a8.png

到这里其实我们已经看到了在磁盘上superblock的形式了。下面我想验证一个这个superblock的正确性。

首先,通过查看/usr/include/linux/ext3_fs.h头文件中的struct ext3_super_block:

70c23f15eda57721646080c026347771.png

我们可以知道在superblock的头上记录着inodes的个数和block的个数,它们分别是32位。

那从superblock中可以看出:

inodes_count: 0000 3a04(注意:这里是小数端) –> 043a0000 = 70909952

blocks_count: fdc4 3904 –> 0439c4fd = 70894845

那么该如何验证这个结果呢?linux为我们提供了dumpe2fs这个工具:

dumpe2fs /dev/sda3 |less

我们可以看到如下的输出(一部分)

f2578b64d955c94658f41e50df83a790.png

到这里,有关如果看superblock的方法,这里就全部都讲完了,同样我们可以用dd查看磁盘上任意的部分。0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值