Linux下为什么限制文件数。

Linux下为什么限制文件数。,第1张

不明白你在问什么。

------------------------

还是不明白你到底遇到了什么问题。Linux 下面的虚拟机和文件个数有什么直接关系么?

------------------------

IDC??是虚拟主机吧……不是 vmware 或者 virtualbox 虚拟机吧……

这个很正常啊,文件系统的每个用户 ID 的磁盘容量限额是可以同时设置容量和文件数的。

至于为啥?你去问 IDC 机房吧……他们就是不想让你放那么多文件。这都是人设置的,又不是技术限制。

不过技术限制还是有的,比如磁盘的最小分配空间是 4k 的话,4M 容量就确实只能放下 1024 个文件,算过来,400M 也就放下 100000 文件多点,所以人家设置文件数量限制也是有理由的。而且现在的服务器用文件系统,如果你的文件体积很小,完全可以全都放进目录结构里面而不需要分配磁盘数据空间,这样你就变相的没有占用你的配额(不过应该没有人这么极端)。但你占用的是整个磁盘分区的总文件数量限制(这个是有技术限制的)。

所以很多人为了保证服务器的稳定和磁盘性能,有的会限制一下文件数量。

不过一般情况下没必要。

linux的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。

ext3文件系统下单个目录里的最大文件数无特别的限制,是受限于所在文件系统的inode数。

在一个目录下,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中的文件数目。但是系统性能会有点损失。

一个目录下,到底是可以放多少个文件,由两点来决定:

1。inode的空间大小,一个文件占用一个inode,一个inode占用128 byte,如果inode空间用完了,就不能建立文件了

2。由磁盘空间大小决定。不用我多说,磁盘空间用完了,就不能建文件了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8995425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存