转载来自:
固定链接:
根据需要进行参数配置,实现更优的性能,有助于设计更为合理的存储结构。
一 目录数限制
RedHat Enterprise LinuxAS在同一个路径下,一级子目录的个数限制为31998,
如果应用生成目录超过这个数,可以进行目录分级。 例如,目录名为数字的话,将数字除以10000后的整数值做为父目录名 (/data/1/13892), 如果是目录名为字母的,可以用前几个字符来做为父一级目录(/data/ab/abcdefg)查询一个目录下级子目录的总数
$ ls -F | grep “/” | wc1) 创建子目录
2) Linux为了cpu的搜索效率而规定的,要改变数目要重新编译内核.二 文件数目限制
每个文件对应一个inode,如果inode没有了,那就算有空间也不能再写文件了。 查看某个分区的inodes信息: # tune2fs -l /dev/sda5 | grep “inodes” Free inodes: 1247005解决办法:
1) 重新mkfs,mkfs时将inode数调的多一些(根据你fs中文件的总数而定),块尺寸调得小一些(根据每个文件的平均大小而定) 2) 使用loopback文件系统临时解决 在/usr中(可以在别处)创建一个大文件,然后做成loopback文件系统,将原来的文件移到这个文件系统中,并将它mount到/usr下合适的位置。 这样可以减少/usr中的文件数目,但是系统性能有损失三 单个目录下文件数限制
Freebsd下有65535的限制,通过重新编译内核可以更改。(查看/usr/include/sys/syslimits.h) 不建议在一个目录下放太多文件,会影响系统性能。 ulimit -a 命令查看所有的限制,并能临时改变限制。没有优化或修改内核的测试,测试平台:RHEL5U3_x64
测试ext3文件系统下filename最大字符长度LENTH=`for i in {1..255};do for x in a;do echo -n $x;done;done`
touch $LENTH 当增加到256时,touch报错,File name too long linux系统下ext3文件系统内给文件/目录命名,最长127个中文字符,英文支持255个字符测试ext3文件系统下一级子目录的个数限制
RHEL5U3_x64 # for i in {1..32000}; do mkdir $i; done mkdir: cannot create directory `31999′: Too many links mkdir: cannot create directory `32000′: Too many links ext3文件系统一级子目录的个数为31998 (个)。 Linux为了cpu的搜索效率规定的,要改变数目要重新编译内核.测试ext3文件系统下单个目录里的最大文件数
单个目录下的最大文件数没什么特别限制,受限于所在文件系统的inode数限制 df -i 或者使用tune2fs -l /dev/sdaX 或者dumpe2fs -h /dev/sdaX 查看可用inode数后两个命令输出结果是一样的,跟df所得出的可用inode数会有些误差
常用两种解决办法:
1 重新mkfs,ext3默认block大小4096 Bytes,block设置小一些inode数设置大一些 2 使用loopback文件系统临时解决: 在/usr中(也可以在别处)创建一个大文件,然后做成loopback文件系统,将原来的文件移到这个 文件系统中,并将它mount到/usr下合适的位置。这样可以大大减少你/usr中的文件数目,系统性能会有损失。测试打开文件数限制(文件句柄、文件描述符)
ulimit -n 65535设置,或者/etc/security/limit.conf里设置用户打开文件数、进程数、CPU等转载来自:
固定链接: