#########################################################
#512M分区不停写入1K文件可以写多少个
#date:2011-08-09
#作者:Jeacen
#QQ:198888885 MAIL:jeacen@lamphelp.org
#blog: http://jeacen.blog.51cto.com
#psite: http://www.lamphelp.org
#pblog:http://www.jeacen.com
##########################################################
一个512M的分区,如果不停的写入1K大小的文件,请问可以写多少个文件?描述其限制原因及解决方法;
a.受节点数(inode)限制;可以通过 df -i查看当前以用和可用节点数,可以在格式化硬盘时定义;
下文既是一个分区有足够的磁盘空间,却没有节点导致文件无法写入了:
[root@caotest /]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sdb2 126976 126976 0 100% /mnt
[root@caotest /]# df -H
Filesystem Size Used Avail Use% Mounted on
/dev/sdb2 502M 145M 332M 31% /mnt
b.受格式化时设定的block size的影响;
在大分区下,下文是我自己做的一个1024字节的文件,他的大小是1024byte,但他的占用空间是4k.
[root@caotest ~]# ls -ls test
4 -rw-r--r-- 1 root root 1024 Apr 10 03:11 test
[root@caotest ~]# du -sh test
4.0K test
但是,512M的小分区,默认的block size即为1024,而非大分区的4096,在本题中该参数不影响设置;
[root@caotest ~]# dumpe2fs /dev/sdb6 |grep "Block size"
dumpe2fs 1.39 (29-May-2006)
Block size: 1024
补充材料,block size和单个文件及文件系统大小的关系:
-----------------------------------------------
|Block_size | 1k | 2k | 4k |
|单个文件的大小限制 | 16G | 256G | 2TB |
|文件系统的大小限制 | 2TB | 8TB | 16TB |
-----------------------------------------------
c.额外的空间占用;每个inode节点本身还要占用128k的空间;逻辑分区(506016比主分区(506044)少28个block;日志占用的空间最小为8M,“lost foundlost found”也要占据一个inode和block;
综上所述,且经过实际验证,一个512M内存的ext3分区,默认格式化参数可存放126965个文件,限制的原因是inode耗尽;
如果格式化时用mkfs.ext3 -N "inode_nuber"来进行设置,则要考虑到每一个innode节点本身还要占用128k的空间,inode增加的同时也在占用block,要在free innode和free block之间找到两者最接近的最大值.
经过多次测试,发现一个512M的分区,最多可以存放40-42万个1kb的文件.
实际测试时写入30多万个文件后,用脚本写入文件就会报错,但仍可以手动写入文件,因此无法彻底完成实验得到精确数值. 本文出自 “jeacen的技术屋” 博客,请务必保留此出处http://jeacen.blog.51cto.com/920211/634901
|