LoveUnix » AIX -IBM UNIX » 实验:有利于提高对于jfs的认识
让LU留住您的每

一天 让LU博客留住您的每一天
2008-8-14 11:08 钱三
实验:有利于提高对于jfs的认识

起因:有用户反映df 查看文件系统有剩余空间,但是在创建文件的时候提示“no enough space”

模拟了一个极端情况下的步骤,用于实验:
1、新建了一个jfs2的文件系统/testfs,最好只用一个pp,因为这样能够大量节约实验的时间[color=red]。"block=512"[/color]
[color=black]2、在该目录下生成2个文件test.txt(512字节),test1.txt(513字节)
[/color]2、[color=#000000]利于shell生成15万个512个字节大小的文件,目的是把该文件系统给塞满东西。(具体生成的文件数量视所建文件系统的大小而定)[/color]
[color=#000000]    shell例:[/color]
[color=#000000]    i=1
    while [ $i -ne 150000]
    do    #执行
    dd if=/testfs/test.txt of="/testfs/f$i.txt"
    i=`expr $i + 1`  
    done [/color]
[color=#000000]3、删除部分文件[/color]
[color=#000000]cd /testfs[/color]
[color=#000000]find ./ -name "f*9.txt" |xargs -i rm -f {}[/color]
[color=#000000](确认好在测试目录下做)[/color]
[color=#000000]4、然后cp test1.txt test2.txt[/color]
[color=#000000]然后看提示“no enough space”,模拟效果达成。[/color]
[color=#000000][/color]
[color=#000000]不想做实验的,只需要清楚,其实建立文件系统的时候,默认的block=4096其实也挺好。[/color]
[color=#000000]想做实验的,可以多看看IBM网站上的信息中心,4k就是答案。搞清楚这个问题了,自然就知道以后文件系统如何更好的去规划了。[/color]
[color=#000000]明白的,指点一条明路。面对几百G以上的文件系统,有没有好的解决方案。[/color]

2008-8-14 11:13 darkbug
说实话,没太看懂

LZ是想模拟inode耗尽的情况么?

2008-8-14 11:32 ChaosLegion
LZ是咩目的?没看明白

2008-8-14 13:14 老农
用JFS2,不要再用JFS

2008-8-14 13:39 larryh
LZ的实验结果很奇怪,FS有问题?

删除f*9.txt怎么也不止两个文件被删掉吧,513字节的无论如何应当是放得下的

我做的实验:

[font=宋体][code]
[localhost:root:/ttt]df -k /ttt
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/fslv00         65536         0  100%    61376   100% /ttt
[localhost:root:/ttt]find . -name "f*9.txt" -exec rm -f {} \;
[localhost:root:/ttt]df -k /ttt
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/fslv00         65536      3068   96%    55239    90% /ttt
[localhost:root:/ttt]cp t513.txt tt.txt
[localhost:root:/ttt]df -k /ttt
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/fslv00         65536      3068   96%    55240    90% /ttt
[/code][/font]

[[i] 本帖最后由 larryh 于 2008-8-14 19:14 编辑 [/i]]

2008-8-14 14:06 钱三
[quote]原帖由 [i]老农[/i] 于 2008-8-14 13:14 发表 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=820273&ptid=88366][img]http://www.loveunix.net/images/common/back.gif[/img][/url]
用JFS2,不要再用JFS [/quote]


jfs2和jfs是一样的。详见下贴。

2008-8-14 14:24 钱三
[quote]原帖由 [i]larryh[/i] 于 2008-8-14 13:39 发表 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=820288&ptid=88366][img]http://www.loveunix.net/images/common/back.gif[/img][/url]
LZ的实验结果很奇怪,FS有问题?

删除f*9.txt怎么也不止两个文件被删掉吧,513字节的无论如何应当是放得下的


问题的关键不是删除了多少文件,而是,是否有[color=Red]!!!4k连续的磁盘空间!!![/color]

我建立的模拟实验如下:
[root@test:/]ls -l lslpp.txt
-rw-r--r--   1 root     system       153072 May 18 2007  lslpp.txt
[root@test:/]df -k /testfs
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/fslv10        131072     12736   91%    96082    79% /testfs
[root@test:/]cp lslpp.txt /testfs
cp: /testfs/lslpp.txt: There is not enough space in the file system.

[root@test:/]lsfs -q /testfs
Name            Nodename   Mount Pt               VFS   Size    Options    Auto Accounting
/dev/fslv10     --         /testfs                jfs2  262144  rw         yes  no
  (lv size: 262144, fs size: 262144, block size: 512, sparse files: yes, inline log: no, inline log size: 0, reserved: 0, reserved: 0, DMAPI: no, VIX: no)

我建的是128M的一个jfs2文件系统,block size=512。
模拟实验的目的是使文件系统没有连续的空间,来验证即使文件系统有空间,依然无法可用。这是我给客户的答案,觉得挺有意义,以前自己没在意过,所以分享一下。

larryh建的文件系统block size是512的?

2008-8-14 14:25 beginner-bj
5楼的结果和1楼的描述不一样啊

2008-8-14 14:27 老农
FS空间的占用是以BLOCK(JFS是segment)为单位的。

2008-8-14 14:48 钱三
[quote]原帖由 [i]beginner-bj[/i] 于 2008-8-14 14:25 发表 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=820344&ptid=88366][img]http://www.loveunix.net/images/common/back.gif[/img][/url]
5楼的结果和1楼的描述不一样啊 [/quote]


因为折腾了好几次,删除建立了很多文件,要是用小文件实现最初的目的,我也不知道要折腾多久才行。所以拿大文件copy来说明一下。


至于defragfs,与这个也无关。

2008-8-14 15:07 beginner-bj
文件不必须是连续的,但不连续的最大次数是有限制的。这个次数是多少,懒得查了。

block size: 512的情况,513字节的文件,最多也就是不连续两次,无论如何都能放得下的。

你7楼给了个153072字节的文件,512的299倍,299肯定超过限制了,所以道理应该是这个。

2008-8-14 17:34 larryh
[quote]原帖由 [i]钱三[/i] 于 2008-8-14 14:24 发表 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=820342&ptid=88366][img]http://www.loveunix.net/images/common/back.gif[/img][/url]
larryh建的文件系统block size是512的?
[/quote]

是的,虽然你没明说,但从上下文知道你是说block=512的意思,我建的是一个64MB的512块大小的JFS2

如果块是512,那么4K这个数字就没意义了,文件size÷512的整数商,加上文件size÷512的余数(IF>0, 1,IF =0, 0),就这么多个块,所以512字节占一个块,513字节占2个块。

当然,JFS2的inode表是动态的,如果这之前inode表正好占满整数个块,增加一个就会刚好造成必须另外分配一块,则空间需求是512字节文件2个块,513字节文件3个块。

[[i] 本帖最后由 larryh 于 2008-8-14 19:13 编辑 [/i]]

2008-8-14 17:42 chalylau
关注ing。。。

2008-8-15 00:23 钱三
[quote]原帖由 [i]larryh[/i] 于 2008-8-14 13:39 发表 [url=http://www.loveunix.net/redirect.php?goto=findpost&pid=820288&ptid=88366][img]http://www.loveunix.net/images/common/back.gif[/img][/url]
LZ的实验结果很奇怪,FS有问题?

删除f*9.txt怎么也不止两个文件被删掉吧,513字节的无论如何应当是放得下的

我做的实验:


[localhost:root:/ttt]df -k /ttt
Filesystem    1024-blocks      Free  ... [/quote]

考虑了一下,是否能够多做几次copy 如copy成tt2、tt3等,因为删除文件后,可能会形成有部分的小段连续空间。

因为白天上网不便,贴一下刚重新做的结果。

/testfs>cp f513.txt tt2.txt
/testfs>cp f513.txt tt3.txt     
/testfs>cp f513.txt tt4.txt
cp: tt4.txt: There is not enough space in the file system.
/testfs>df -k /testfs
Filesystem    1024-blocks      Free %Used    Iused %Iused Mounted on
/dev/fslv01         65536      3064   96%    55217    90% /testfs

2008-8-15 00:30 钱三
贴个图,会比较有说服力点:

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.