免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1896 | 回复: 2
打印 上一主题 下一主题

ext2/ext3 fs一点疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-18 01:53 |只看该作者 |倒序浏览
ext3 fs下读取一个文件inode,
打印出来
block_size=4096
i_blocks=1184
i_size=601779

计算一下, 601779/4096 差不多只用147个block就够了,可实际却分了1184这么大,想不明白?
因为inode中的i_blocks(包括间接)前147是实际的数据块,应该是连续的,跟文件的偏移量对应。
那么多出来的部分存为空闲的还是存放了其它数据?

再作了一下实验,根据以 i_block[0] * block_size作为偏移量,读取第一个block,存为A
直接打开文件,读取前block_size个字节存为B
比较A 与 B,概率性不相同。

哪位达人给解析一下

论坛徽章:
0
2 [报告]
发表于 2010-03-20 12:11 |只看该作者
HI,

哥们你搞错了,你是用stat(2)看到的inode节点信息吧,你这里看到的io blocks其实是sectors,就是块设备最小的块数据大小,所以大小应该是512,你用i_size/512看看,得到的io blocks正好是显示的,stat()看到的blocksize则是ext3的块大小,作为文件系统data和metadata分配的最小单位。

其实有一种情况会真正导致i_size/blocksize>i_blocks,那就是文件里预留空间。

论坛徽章:
0
3 [报告]
发表于 2010-03-26 00:26 |只看该作者
我是从ext3 fs的写请求中取得的struct inode,然后打出相关信息的,fs层使用block_size都为格式化时指定的块大小,并非设备sector。
至于文件空间预留,倒是有可能。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP