腾逸   https://www.cnblogs.com/zt007/p/6639322.html

Linux系统目录数和文件数限制

对于系统管理员来说,了解系统的一些限制是非常有必要的,这样可以根据需要进行必要的参数配置和调整,进而实现更优的性能,对于系统设计人员甚至程序员来说,了解系统的一些限制,也会有助于设计更为合理的存储结构。

  一 目录数限制

  RedHat Enterprise Linux AS 4.0 Update 3

  在同一个路径下,一级子目录的个数限制为31998,如果你的应用生成的目录可能会超过这个数,那要注意进行目录分级。例如,如果目录名为数字的话,可以将数字除以10000后的整数值做为父目录名 (/data/1/13892),如果是目录名为字母的,可以用前几个字符来做为父一级目录(/data/ab/abcdefg)等等。

  通过以下的命令行可以得到一个目录下一级子目录的总数:

$ ls -F | grep "/" | wc

  解决方法:

  1) 创建子目录

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

  二 文件数目限制

  每个文件对应一个inode,如果inode没有了,那就算有空间也不能再写文件了。

  通过以下命令行,可以看某个分区的inodes信息:

[root@boss tmp]# tune2fs -l /dev/sda5 | grep "inodes"
    Free inodes:              1247005
    [root@boss tmp]#

  2种解决办法:

  1) 重新mkfs,mkfs时将inode数调的多一些(根据你fs中文件的总数而定),块尺寸调得小一些(根据每个文件的平均大小而定)

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

  在/usr中(也可以在别处)创建一个大文件,然后做成loopback文件系统,将原来的文件移到这个文件系统中,并将它mount到/usr下合适的位置。这样可以大大减少你/usr中的文件数目。但是系统性能会有点损失。

  三 单个目录下文件数限制

  原来以为Linux下单个目录内有文件数量限制,Google了一番没有看到明确的说法,到是Freebsd下有65535的限制,通过重新编译内核可以更改。(可以看看/usr/include/sys/syslimits.h)

  不过不建议在一个目录下放太多文件,会影响系统性能。

  补充: ulimit -a 命令查看所有的限制,并能临时改变限制。

  (参考链接: http://blog.chinaunix.net/u1/34654/showart_331913.html)

==============================================================

昨晚排查了在KVM的build系统中的一个问题,跟踪到后面发现在一个目录下mkdir创建目录失败。我手动试了一下,提示如下:cannot create directory `/home/master/jaytemp` too many links
我发现是在一个目录下的一级子目录数量是有限制的,遂做了点实验和调查,结合网上其他人写的博客,得到如下的一些关于目录个数和文件个数限制的结论。
1.ext3文件系统一级子目录的个数默认为31998(个),准确地说是32000个。
Linux为了cpu的搜索效率而规定的,要想改变数目限制需要重新编译内核。我看到在kernel代码中有这样的:
include/linux/ext2_fs.h:#define EXT2_LINK_MAX           32000
include/linux/ext3_fs.h:#define EXT3_LINK_MAX           32000
为什么说31998个呢?这是因为mkdir创建一个目录时,目录下默认就会创建两个子目录的,一个是.目录(代表当前目录),另一个是..目录(代表上级目录)。这两个子目录是删除不掉的,“ rm . ” 会得到“rm: cannot remove `.' or `..'”的提示。所以32000-2=31998。
另外,你可以通过如下的脚本来尝试。
#!/bin/bash
mkdir tmp
cd tmp
i=1
while [ $i -lt 35000 ]
do
    mkdir $i
    if [ $? -ne 0 ]; then
       echo "cannot make dir $i"
       exit
    fi
    ((i++))
done
运行这个脚本,你最后将得到“mkdir: cannot create directory `31999': Too many links”的错误信息。
另外,不建议在一个目录下有太多的文件或者目录,这回降低文件系统查找文件或目录的性能。忽然想起阿里巴巴的图片服务器中将图片的存储按照年月等分为不同的各级子目录而不是在一个目录下,其中一个原因也是出于性能的Linux操作系统考虑。
2.ext3文件系统下单个目录里的最大文件数无特别的限制,是受限于所在文件系统的inode数。
我在RHEL5u5的ext3文件系统中测试,在一个目录下,touch了100万个文件是没有问题的。但是肯定会受到所在文件系统的inode数的限制。
df -i /dev/sdaX或者使用tune2fs -l /dev/sdaX或者dumpe2fs -h /dev/sdaX查看可用inode数,后两个命令输出结果是一样的,但是跟df所得出的可用inode数会有些误差,其中原因,我也没搞清楚。
网上有两种解决inode数限制的办法如下,不过我没试过了。
  2.1 重新mkfs,mkfs时将inode数调的多一些(根据你fs中文件的总数而定),块尺寸调得小一些(根据每个文件的平均大小而定)
  2.2 使用loopback文件系统临时解决:在/usr中(也可以在别处)创建一个大文件,然后做成loopback文件系统,将原来的文件移到这个文件系统中,并将它mount到/usr下合适的位置。这样可以大大减少你/usr中的文件数目。但是系统性能会有点损失。
3.默认打开文件个数(文件描述符)限制(默认是1024个)
ulimit -n 命令可以查看
修改这个限制可以使用ulimt -SHn 65535 命令
还可以在/etc/security/limit.conf 里设置用户打开文件数、进程数、CPU等信息
4.ext3文件系统下filename最大字符长度(默认255个英文字符)
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个字符

参考文档:
http://bbs.chinaunix.net/viewthread.php?tid=1972687
http://www.unixreference.net/articles/linux/fs/2007/1115/651.html
http://it.chinawin.net/os/article-3958.html

【转载】Linux系统目录数和文件数限制相关推荐

  1. linux 目录最大文件数,Linux目录数和文件数限制(目录上最大文件数)

    Linux目录数和文件数限制(目录下最大文件数) Linux目录数和文件数限制(目录下最大文件数) 一.目录数限制: 在同一个路径下,一级子目录的个数限制为 31998 .如果你的应用生成的目录可能会 ...

  2. Linux系统目录结构以及简单说明

    Linux系统目录结构以及简单说明 linux目录图: root --- 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home --- 存储普通用户的个人文件 ftp - ...

  3. 二、Linux系统目录和文件基本操作

    (一)linux系统目录 1.相对路径 相对与当前系统位置,文件名称的简写,此名称前会自动添加'pwd'命令的输出, 相对路径文件名称前不会出现"/" 2.绝对路径 文件在系统中的 ...

  4. Linux系统目录结构解析(centos)

    2019独角兽企业重金招聘Python工程师标准>>> [Linux系统目录结构] 登录系统后,在当前命令窗口下输入 ls / 你会看到 以下是对这些目录的解释: /bin bin是 ...

  5. 【Linux系统】第3节 Linux系统目录结构、目录作用及文件系统分类

    目录 1 初识操作系统 2 目录结构 2.1 Linux与Windows目录结构的差异 2.2 Linux的目录结构 3 常用命令 4 主要目录/文件夹功能 4.1 特殊目录 4.2 系统启动必须类 ...

  6. Linux系统目录结构和相对/绝对路径和XFS文件系统备份恢复

    Linux系统目录结构和相对/绝对路径 系统目录结构 在WIN系统中,查看文件先进入相应的盘符,然后进入文件目录 在WIN中,它是多根 c:\ d:\ e: Linux只有一个根目录 查看根下有哪些文 ...

  7. Linux系统目录结构说明

    Linux系统目录结构说明 文章目录: 一.查看根目录 二.系统根目录的解释说明 三.需要注意的文件目录 一.查看根目录 Linux 系统目录结构 登录系统后,在当前命令窗口下输入命令: ls / 你 ...

  8. ossfs工具将OSS挂载到阿里云linux系统目录例子

    ossfs 是基于 aliyun OSS 的 fuse 客户端了,所以我们把它用在阿里云上肯定是没有错了,下面来看一篇关于ossfs工具将OSS挂载到阿里云linux系统目录例子,具体的细节如下文介绍 ...

  9. linux sys存放内容,了解linux系统目录,sys,tmp,usr,var!

    原标题:了解linux系统目录,sys,tmp,usr,var! linux小白到大神的成长之路:了解linux系统目录,sys,tmp,usr,var! 本经验由宗龙龙原创,全文共600多字,阅读需 ...

最新文章

  1. 美国DARPA204页可解释人工智能文献综述论文《Explanation in Human-AI Systems》
  2. 厌倦了枯燥的CRUD,是时候寻找下一个突破点了
  3. onWindowFocusChanged重要作用(得到/失去焦点call) 、
  4. linux vim编辑文本是 m,linux基础命令介绍四:文本编辑 vim
  5. 01 前端篇(标签)
  6. tomcat日志切割-logrotate
  7. UITabBar Contoller
  8. java中的math.abs_Java.math.BigDecimal.abs()方法
  9. paramiko上传下载
  10. 【五级流水线CPU】—— 3. 逻辑、移位与空指令 + 数据冒险RAM解决
  11. 图像分割并存储 matlab,用于面积增长的Matlab图像分割程序
  12. 苹果ipa签名工具免越狱下载_苹果签名——超级篇
  13. linux怎么检测硬盘坏道,linux怎么检测硬盘坏道|linux 硬盘坏道检测方法
  14. 5.larval 验证规则
  15. 途家、木鸟、美团……民宿暑期战事将起
  16. 采用两块半球体U235金属的原子弹
  17. 一文读懂多架构的中断控制器
  18. BGD 通信15-1 150206102 王嘉良 网络运维调查报告
  19. 简洁的JS图片滚动代码
  20. C语言编程题————编写代码,演示多个字符从两边移动,向中间聚拢

热门文章

  1. css实现右下角√对号选中样式——基础积累
  2. 国外80后和国内80后生活PK
  3. Unity动态编辑Terrain地形(四)植被编辑
  4. python接水果游戏代码_【Python】python制作一个接水果和金币的小游戏
  5. Matlab:晶体热透镜焦距粗略计算
  6. 安卓APP底部导航栏(有消息圆点指示器),实现fragment切换(eclipse)
  7. vue-router两种模式
  8. 520到了还有人不会表白吗——Python GUI实现爆火抖音的弹窗表白
  9. 用通配符批量替换日期中的年月日格式2021-04-20
  10. 全国唯一!烽火助力江夏数字乡村试点改革工作入选中国年度深化改革典型案例...