我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: Linux下 读superblock的信息(已解决) 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

goon83





性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 349
威望: 0
浮云: 1146
在线等级:
注册时间: 2005-11-05
最后登陆: 2009-03-10

5come5帮你背单词 [ cite /sait/ vt. 举(例),引证,引用 ]


Linux下 读superblock的信息(已解决)

在Linux下 为了读superblock的信息:用以下命令:

dd if=/dev/sda3 bs=4096 count=1 |od -tx1 -Ax>temp
(sda3 为我的Linux的安装分区)

这样就得到了superblock 的十六进制的信息 放入temp

然后通过 stat -f 也可以得到一部分的信息, 比如可用的空余inode 节点数。
假设空余的inode数为1000。

按理说 可以在temp中找到 31 30 30 30。
可是我却不能够找到。


不明白 是什么原因。

希望 各位 给与 帮助。。。谢谢


[ 此贴被goon83在2006-12-14 08:16重新编辑 ]
顶端 Posted: 2006-12-10 19:38 | [楼 主]
albert





性别: 保密 状态: 该用户目前不在线
等级: 栋梁之材
家族: 唯war独尊
发贴: 634
威望: 0
浮云: 1116
在线等级:
注册时间: 2005-10-04
最后登陆: 2012-02-12

5come5帮你背单词 [ drama /'dra:mə/ n. 剧本,戏剧 ]


同问
顶端 Posted: 2006-12-12 16:46 | [1 楼]
goon83





性别: 帅哥 状态: 该用户目前不在线
等级: 品行端正
发贴: 349
威望: 0
浮云: 1146
在线等级:
注册时间: 2005-11-05
最后登陆: 2009-03-10

5come5帮你背单词 [ national /'næənl/ n. 国民(指侨居国外的);a. 全国性的,国内的,本国的,民族的,国有的 ]


开始我是以为superblock在一个单独的4k大小的的块内。
后来发现
"所谓 ext2 文件系统的 super block,就是硬盘分区开头(开头的第一个 byte 是 byte 0)从 byte 1024 开始往后的一部分数据。由于 block size 最小是 1024 bytes,所以 super block 可能是在 block 1 中(此时 block 的大小正好是 1024 bytes),也可能是在 block 0 中。"

通过
dd if=/dev/sda3 bs=1024 count=1 s|kip=1 | od -tx1 -Ax>temp
读出的 信息如下:

root@goon-desktop:/home/goon# dd if=/dev/sda3 bs=1024 count=1 skip=1 |od -tx1 -Ax
记录了 1+0 的读入
记录了 1+0 的写出
1024 字节 (1.0 kB) 已复制,3.7e-05 秒,27.7 MB/秒
000000 00 d8 13 00 71 a6 27 00 85 fb 01 00 60 a0 0f 00
000010 b3 4b 12 00 00 00 00 00 02 00 00 00 02 00 00 00
000020 00 80 00 00 00 80 00 00 80 3f 00 00 b2 1e 82 45
000030 b2 1e 82 45 19 00 1e 00 53 ef 01 00 01 00 00 00
000040 40 e0 7c 45 00 00 00 00 00 00 00 00 01 00 00 00
000050 00 00 00 00 0b 00 00 00 80 00 00 00 04 00 00 00
000060 06 00 00 00 01 00 00 00 84 a0 16 fa 34 d7 4c 71
000070 8d 6c f7 74 2b 60 c3 8e 00 00 00 00 00 00 00 00
000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
0000e0 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00
000100 00 00 00 00 00 00 00 00 00 00 00 00 0d 02 00 00
000110 0e 02 00 00 0f 02 00 00 10 02 00 00 11 02 00 00
000120 12 02 00 00 13 02 00 00 14 02 00 00 15 02 00 00
000130 16 02 00 00 17 02 00 00 18 02 00 00 19 02 00 00
000140 1a 06 00 00 00 00 00 00 00 00 00 00 00 00 00 08
000150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
*
000400


然后 通过 stat -f 的到的信息如下:
root@goon-desktop:/home/goon# stat -f /
File: "/"
ID: 0   Namelen: 255   Type: ext2/ext3
Block size: 4096   Fundamental block size: 4096
Blocks: Total: 2557695   Free: 1024356   Available: 894431
Inodes: Total: 1300480   Free: 1[屏蔽]79


如果要找 Inodes Total: 1300480 他的十六进制是: 13d800
由于磁盘的信息是采用的小端法存的:
所以可以在上面找到: 00 d8 13 00 也就是 上面读出来的 结果的 第一行的开始四个数字。
这样依次下去,就可以找到,superblock结构里的每个信息。
顶端 Posted: 2006-12-15 13:25 | [2 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.011602(s) query 5, Time now is:11-23 19:33, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号