免费注册 查看新帖 |

Chinaunix

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

文件占用空间的计算方法的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-14 10:43 |只看该作者 |倒序浏览
下面的规则讲述了文件占用空间的计算方法,其中说的36K我是使用ls -l命令查看的。
当文件比较大时,这个规则似乎是不成立的,大家可以作个测试看看,有人可以解释吗?

BTW:要检查该目录所有文件占用的空间应该用这个命令:du。
譬如说前面说的36是如何计算出来:
首先我们要先了解你所用的文件系统的IO BLOCK(中文叫作簇)为多少,在你所使用的这个文件系统的IO BLOCK大小是4096 Bytes。

他意义是文件系统最小的读写及分配单位,每次读写操作你都不能小于这个尺寸。即使你的文件是只有一个字节。而且文件在硬盘上的存储也是以这个为单位,就是说如果文件尺寸小于这个值,那么它在磁盘上占用的空间就是4096字节。

占用空间的具体算法是:(进一(文件尺寸/4096))×4096。根据这个你就可以计算出你所列举的例子中的文件的空间使用状况:34890除以4096,大约等于8.5,进一法取得为9,就是说文件在磁盘上占用了9个BLOCk,每个BLOCK为4K,所以这两个文件占用的空间就是36K。

这个规则也适合于目录,不过不会出现为0的目录,即使是空目录


[ 本帖最后由 Jackiezhw 于 2007-1-14 10:45 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-01-14 14:10 |只看该作者
你的意思是du和ls -l 的字节数不同对吧。

ls -l 列出来的是文件大小
du 列出来的是文件占用的磁盘空间。
当然不同。windows不也如此麽?

可以肯定的说,在一般情况下(除了下述的特殊文件),du 出来的值肯定比ls -l 的大。 因为磁盘上实际存放的除了文件内容之外,还有文件信息,当然还有文件块信息之间的关系(如下一块等,如果文件很大,类似的多级指针,块也是多级的,这需要额外的磁盘空间来存放)。分配给文件的磁盘空间,是按照块来存放的。即使文件就一个字节(不足一块),实际也是占用了一个块。而后者就是du的得数。
还有一种文件叫做空洞文件,很特殊,ls -l 的可能会比du的报数来的大。

空目录也会有两个目录项,. (本身)和..(上级目录), 因此确实不为空。

[ 本帖最后由 ivhb 于 2007-1-14 14:13 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-01-16 10:55 |只看该作者
你说的不是很准确,我的意思是说,文件的大小和文件占用磁盘空间的多少是有个换算关系的,也就是我帖子中红色部分,一个文件size是34890(可以通过ls -l得到),占用的空间用上面的算法得出来是36K,可以通过du命令获得。
我的问题是,这个换算算法在文件比较小是正确的,当文件size比较大时,算出的结果跟du得出的结果不一样了。

论坛徽章:
0
4 [报告]
发表于 2007-01-16 15:39 |只看该作者
man du
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP