存储 频道

实测Linux ext3/4文件系统的规模与瓶颈

  【IT168 专稿】在文件系统方面,Linux可以算得上操作系统中的 “瑞士军刀”。Linux 支持许多种文件系统,从日志型文件系统到集群文件系统和加密文件系统。对于使用标准的和比较奇特的文件系统以及开发文件系统来说,Linux 是极好的平台。本文讨论 Linux 内核自带的文件系统Ext3、Ext4文件数、目录数、文件名长度等各种限制。

  实测ext3的限制瓶颈

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

  测试平台:RHEL5U3_x64
  测试过程:
  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个字符

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

  测试平台:RHEL5U3_x64
  测试过程:
  [root@fileserver maxdir]# 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的搜索效率而规定的,要想改变数目大概要重新编译内核.

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

  测试平台: RHEL5U3_x64
  测试过程:
  单个目录下的最大文件数似乎没什么特别限制,也是受限于所在文件系统的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中的文件数目。但是系统性能会有点损失。

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

  测试平台: RHEL5U3_x64
  ulimit -n 65535设置,或者/etc/security/limit.conf里设置用户打开文件数、进程数、CPU等

0
相关文章