linux下文件数、目录数、文件名长度的各种限制

以下测试都是在没有优化或修改内核的前提下测试的结果

1.测试目的:ext3文件系统下filename最大字符长度

测试平台:RHEL5U3_x64

测试过程:

LENTH=`foriin{1..255};doforxina;doecho-n$x;done;done`

touch$LENTH

当增加到256时,touch报错,Filenametoolong

linux系统下ext3文件系统内给文件/目录命名,最长只能支持127个中文字符,英文则可以支持255个字符

2.测试目的:ext3文件系统下一级子目录的个数限制

测试平台:RHEL5U3_x64

测试过程:

[root@fileservermaxdir]#foriin{1..32000};domkdir$i;done

mkdir:cannotcreatedirectory`31999':Toomanylinks

mkdir:cannotcreatedirectory`32000':Toomanylinks

ext3文件系统一级子目录的个数为31998(个)。

Linux为了cpu的搜索效率而规定的,要想改变数目大概要重新编译内核.

3.测试目的:ext3文件系统下单个目录里的最大文件数

测试平台:RHEL5U3_x64

测试过程:

单个目录下的最大文件数似乎没什么特别限制,也是受限于所在文件系统的inode数限制:

df-i或者使用tune2fs-l/dev/sdaX或者dumpe2fs-h/dev/sdaX查看可用inode数,后两个命令

输出结果是一样的,但是跟df所得出的可用inode数会有些误差,至今不明白什么原因。

网上常用两种解决办法:

1)重新mkfs,ext3默认block大小4096Bytes,block设置小一些inode数设置大一些

2)使用loopback文件系统临时解决:

在/usr中(也可以在别处)创建一个大文件,然后做成loopback文件系统,将原来的文件移到这个

文件系统中,并将它mount到/usr下合适的位置。这样可以大大减少你/usr中的文件数目。但是系统

性能会有点损失。

4.测试目的:打开文件数限制(文件句柄、文件描述符)

测试平台:RHEL5U3_x64

ulimit-n65535设置,或者/etc/security/limit.conf里设置用户打开文件数、进程数、CPU等