Linux系统单个限制文件夹大小小怎么限制

Linux 目录个数和文件个数限制(单个目录下最大文件数) - CSDN博客
Linux 目录个数和文件个数限制(单个目录下最大文件数)
昨晚排查了在KVM的build系统中的一个问题,跟踪到后面发现在一个下mkdir创建目录失败。我手动试了一下,提示如下:cannot
create directory `/home/master/jaytemp` too many links
我发现是在一个目录下的一级子目录数量是有的,遂做了点实验和调查,结合网上人写的博客,得到如下的一些关于目录个数和文件个数限制的结论。
1.ext3文件系统一级子目录的个数默认为31998(个),准确地说是32000个。
为了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 `..'”的提示。所以98。
另外,你可以通过如下的脚本来尝试。
#!/bin/bash
while [ $i -lt 35000 ]
&&& mkdir $i
&&& if [ $? -ne 0 ]; then
&&&&&& echo &cannot make dir $i&
&&&&&& exit
&&& ((i++))
运行这个脚本,你最后将得到“mkdir: cannot create directory `31999': Too many links”的错误信息。
另外,不建议在一个目录下有太多的文件或者目录,这回降低查找文件或目录的性能。忽然想起阿里巴巴的图片服务器中将图片的存储按照年月等分为不同的各级子目录而不是在一个目录下,其中一个原因也是出于性能的Linux操作系统考虑。
2.ext3文件系统下单个目录里的最大文件数无特别的限制,是受限于所在文件系统的数。
我在RHEL5u5的文件系统中,在一个目录下,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个)
命令可以查看
修改这个限制可以使用ulimt -SHn 65535 命令
还可以在/etc/security/limit.conf 里设置打开文件数、进程数、CPU等信息
4.ext3下filename最大字符长度(默认255个英文字符)
LENTH=`for i in {1..255};do echo -n $x;done`
touch $LENTH
当增加到256时,touch报错,File name too long
系统下ext3文件系统内给文件/目录命名,最长只能支持127个中文字符,英文则可以支持255个字符
参考文档:
http://bbs.chinaunix.net/viewthread.php?tid=1972687
http://www.unixreference.net/articles/linux/fs/1.html
http://it.chinawin.net/os/article-3958.html
本文已收录于以下专栏:
相关文章推荐
一个目录下,到底是可以放多少个文件,由两点来决定:
1、inode的空间大小,一个文件占用一个inode,一个inode占用128  byte,如果inode空间用完了,就不能建立文件了
2、由磁...
在Nginx优化的过程中,将 connections加大的时候Nginx发出警告
worker_connections exceed open file resource limit: 1024...
coofucoo:写的一个程序需要密切关注这些系统特征,以避免把系统写坏。实际上现在出现过由于异常写入大量文件到一个目录中导致文件系统无法列目录的情况,连删除都不行。但是linux还是相当健壮,至少我...
Linux各种文件系统支持单文件大小
File System   
  
  
  
  
  
  
  
今天在服务器上遇到一个问题,目录下无法创建子目录,异常:
mkdir: 无法创建目录 “...”: 过多的连接
原来之前的理解是错误的,linux对目录下的文件数目基本无限制(受限于inode...
如何修改linux最大 文件打开数 , 通过ulimit,修改limits.conf文件,file-max还是file-nr服务器
转载:/blog/2087342
ulimit用于shell启动进程所占用的资源
shell内建命令
ulimit用于shell启动进程所占用的资源
shell内建命令
2、语法格式:
ulimit [-acdfHlmnpsStvw] [size]
3、参数介绍:
-H 设置硬...
linux下如何统计一个目录下的文件个数以及代码总行数的命令
知道指定后缀名的文件总个数命令:
find . -name &*.cpp& | wc -l
知道一个目录下代码总行数以及单个文件...
以下测试都是在没有优化或修改内核的前提下测试的结果
1. 测试目的:ext3文件系统下filename最大字符长度
   测试平台:RHEL5U3_x64
   测试过程:
LENTH=`for i...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)linux系统的磁盘空间限制的两种方法
首先我们来看第一种方法,用quota实现。
1、挂载需要限额的磁盘
mount -o usrquota,grpquota /dev/sdb1 /mnt/sd1
针对普通磁盘
mount -o remount,usrquota /
这个是针对根分区
2、检查并创建磁盘配额的数据库文件
quotacheck -camugv
v创建过程的详细信息,
u对用户的配额支持,
g对组的配额支持,
a表示激活所有配额的磁盘分区,
m只在对根分区创建的时候使用。
注:以上参数根据自己的情况而定
3、开启磁盘配额
quotaon -a
4、配置用户或组的限额的大小
edquota -u user (-g group)
5、查看用户或组的限额情况
quota -uv user (-gv group)
6、查看系统的配额情况
repquota -augv
注:以上5、6步,根据自己的情况来操作,当然,也可以不用查看,但前提是你确定配置是没有问题的!
7、将磁盘的挂载参数写入fstab,确保在系统下次启动的时候,能加载配额功能
defaults,usrquota,grpquota
至此,磁盘配额完成,为了大家更好的理解配置的时候的参数,我把编辑用户和组的各字段含义,贴出来,希望参大家用帮助。
FIlesystem:表示文件系统,即需要设置配额的硬盘分区;
block:表示所占的字节数,单位:KB (不要修改)
soft:磁盘空间限定值 单位:KB (需要设定)
hard:磁盘空间限定值 单位: KB (需要设定)
inodes:i节点数,用户拥有文件的文件的数目 (不要修改)
soft:文档限制数量 (根据需要修改)
hard:文档限制数量 (根据需要修改)
如果说,你不想使用磁盘配额了,就用quotaoff -a
关闭quota(删除/etc/mtab)、删除用户或组的数据库文件,修改/etc/fstab参数。
下面我们来看另外一种方法,限制目录的大小
主要的思路是通过dd命令COPY出你需要的大小,然后挂载到一个目录下使用。
1、copy出相应的文件大小,比如1G
dd if=/dev/zero bs=1024 count=1000000 of=/1Gfile.loop
2、对此文件进行格式化
mkfs.ext3 /1Gfile.loop
3、建立目录
mkdir /1Gdir
4、挂载使用
mount -o loop /1Gfile.loop /1Gdir
5、为了确保在系统启动的进时也要挂载,就要在/etc/rc.local最后增加
mount -o loop /1Gfile.loop /1Gdir
以上两种方法的优点和缺点
磁盘配额优点:不会先占用磁盘的空间
磁盘配额缺点:只针对磁盘用效,而且必须是针对用户和组的
限制目录大小优点:方便灵活,适用性强。但具体的性能如何,没有测试
限制目录大小缺点:在建立之初就占相应大小的磁盘空间
大家可以根据自己的情况,来选择适合自己的方法!
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。刨根问底:ext3/ext4文件系统最大空间及单个文件大小演算法则
时间: 23:53:16
&&&& 阅读:14798
&&&& 评论:
&&&& 收藏:0
标签:从ext3和ext4文件系统来窥探空间和文件大小的演算法则&&& 学习操作系统就不得不研究磁盘以及磁盘文件系统,磁盘是底层物理设备,而文件系统则是管理磁盘的上层工具,文件系统规划了磁盘存放数据的格式,确定了一个操作系统能够支持多大的磁盘空间,每个分区能够支持多大的数据空间,以及每个文件所能支持的大小。通常对系统管理员而言,最需要的知道的就是最大磁盘空间,最大分区空间以及最大文件的大小。本论题只讨论这三种大小到底是怎么算出来的,而不是死记硬背。知道了原理,以后不管遇到什么文件系统,都会有章可循,至少知道需要那些数据可以算出这三种需求的大小。此外,这里不谈磁盘的组成以及文件系统的布局,只说演算方法,可能涉及的相关知识点,请查看相关资料。&&& 很多人可能都是死记几个数值,却不知道为什么是这个数值,这里就来剖析一下:1.硬性规定ext3:1).ext3文件系统采用32bit的块地址索引空间;2)在inode条目中,引用一个块空间符号需要4byte的大小;3)对于一个inode来说,设计了12个直接指针索引,一个间接指针索引,一个双间接指针索引,以及一个三间接指针索引&注:a.这些规定都是文件系统自身的程序代码所决定的,也就是说这是开发时就设计好的,没有为什么,只有是什么;对于其它文件系统也是一样;b.所谓双间接指针索引和三间接指针索引指的是两级结构和三级结构,相当于linux中的根文件系统目录树一样;&附ext3文件系统中inode内部结构图:ext4:1).ext4文件系统采用48bit的块地址索引空间;2).在inode条目中,不在是使用指针索引的方式来进行与block的映射,而是采用extent来替代指针;此前在ext3中的15个指针被替换成5个extent,一个extent占用3byte空间;一个extent描述了一组连续的block,当不够用时extent依旧可以采用间接指针的索引,但没有个数限制。&注:对于extent计算单个文件大小的算法,还没摸索出,没看懂源码。你要是看懂了留言啊。&&2.演算法则&&& 好,知道了上面的源码设计规则,下面就可以进行计算了。ext3:1).最大支持的文件大小&&& 首先要知道,在linux文件系统,一个block的大小可以为1k,2k,4k,当block的大小为4k时为最大。在linux系统中,每一个文件都要使用一个inode号,因此要想计算出单个文件所支持的最大空间,只要知道inode中能够引用多少个block,而block取最大值4k的时候计算出来的值就是所能支持的单个文件的最大空间。&&& 从上面的硬性规定中可以看出:a.一个inode支持12个直接指针,因此就表示了12个blockb.一个inode支持一个间接指针,也就是一个指针指向了一个block块,将该block块作为指向最终block的直接指针,这里是一个block为4K,指向一个block要占用4byte的空间,因此一个block的间接指针可以指向4K/4byte的block,即2^10c.双间接指针最终则指向:2^10*2^10=2^20 个blockd.三间接指针最终执行:2^10*2^10*2^10=2^30 个block&因此最终的block的个数为:12+2^10+2^20+2^30则最终的大小为:(12+2^10+2^20+2^30)x4KByte则换算成TB的大小为:(12+2^10+2^20+2^30)x4KByte/24=4TB&到此,可知ext3文件系统,在block为4K的时候,其支持的单个文件大小为最大,最大为4TB。注:当然这是理论值,在业界应该都知道实际值与理论值总是会有点偏差,但无伤大雅&2)最大分区大小(即文件系统大小)&&& 在操作系统中,文件系统都是针对分区而言的,一个磁盘必须先分区才能格式化文件系统(即使你将磁盘所有容量划分一个分区).格式文件系统后才能挂载使用,此时就必须知道一个文件系统到底支持多大的分区大小。&&& 在ext3文件系统中,采用32bit的块索引空间,且其采用int的无符号整型,因此一个分区的最大空间为:&&& 2^32*4KByte=16TB&由此,得知在ext3文件系统中,当block为4K时,一个分区的空间将最大,且最大空间为16TB&3)最大磁盘容量&&& 有时候当我们需要更大的磁盘容量空间的时候,会增加磁盘来达到需求。但是最后分区使用时会发现提示不支持这么大的空间。这是为什么?&&& 对于整块磁盘而言,因为存在MBR区域,而MBR中有64byte的空间只能表示4个分区,每个分区16btye来表示,因此对于ext3文件系统支持的最大分区为16TB,那最大系统磁盘容量为:16TB*4=64TB&注:这里有人要问几个问题了a.有人问:你这里说4个分区,不是有逻辑分区吗,使用逻辑分区划分磁盘可以划分很多磁盘分区。那不是应该无限制吗?answer:逻辑分区是扩展了磁盘分区的个数,但是逻辑分区也是从4个主分区中的一个主分区扩展出来的,因此所有逻辑分区的空间也不过是最后一个最大主分区的空间扩展出来的。b.有人问:不对,在linux系统中,新磁盘可以作为分区后挂载到系统中的某个目录下来使用。answer: 新磁盘虽然可以挂载到系统中的某个目录下来使用,但是对于新磁盘而言也是在ext3文件系统下,新磁盘的本身最大也是64TB。因此这里基于的是在ext3文件系统下,block大小为4K时所能支持的最大磁盘容量,超过了这个大小,分区表无法识别了。千万不要理解成操作系统所能使用的空间大小。&ext4:1)单个文件的最大空间&&& 由于ext4默认不再使用指针的形式做block映射,而是使用extent来管理所能描述的block个数,本人还未理解extent到底是个什么机制,因此不做计算。但一致的说法是,单个文件可大16TB,相当于ext3的最大分区大小.&2)最大分区大小(即文件系统大小)&&& ext4使用48bit的块地址索引空间,因此在block为4k的情况下,大小为:2^48*4KByte=1EB=1024PB=TB 这个空间可以说在目前的环境下足够用了。&3)最大磁盘容量&&& 根据ext3的分析结论可知:1EB*4=4EB&&& OK,就说这么多了,不知道你理解否。反正我是懂了。(^_^)&本文出自 “” 博客,请务必保留此出处标签:
&&国之画&&&& &&&&chrome插件&&
版权所有 京ICP备号-2
迷上了代码!1被浏览217分享邀请回答暂时还没有回答,开始写第一个回答ubuntu12.04 64位怎么限制日志文件大小?【linux吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:180,721贴子:
ubuntu12.04 64位怎么限制日志文件大小?收藏
ubuntu12.04 64位怎么限制日志文件大小?/var/log/auth.log文件越来越大了,怎么设置可以限制他的大小啊?
阿里云云市场镜像可以一键部署云服务器所需要的运行环境和个性化的软件应用,满足建站,应用开发,可视化管理等个性化需求,linux镜像让云服务器&即开即用&.
写点程序定期删除文件前面部分?这个我不大懂,帮顶
疑似收到攻击
能有多大?-----------具体的 看下logrotate的帮助
呵呵~~~~~~~~~~~~~
logrotate,这玩意系统自带,就是滚日志的
貌似可以关掉的
登录百度帐号推荐应用

我要回帖

更多关于 单个cookie大小限制 的文章

 

随机推荐