全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 2790|回复: 3
打印 上一主题 下一主题

在VPS上解压zip文件,lnmp的,出现Too many links checkdir error错误

[复制链接]
跳转到指定楼层
1#
发表于 2012-5-20 10:59:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bgbrd888 于 2012-5-20 11:20 编辑

Too many links
                 unable to process 20575_255Fc/default.htm.
checkdir error:  cannot create 20575_c
                 Too many links
                 unable to process 20575_c/.
checkdir error:  cannot create 20575_c

求教各位大大,这个是什么情况呢

是目录下的文件数量限制呢

在哪儿可以修改呢

2012.05.20.11:25
################################
搜索了下,用ulimit -a查看,没有看到什么限制呢

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 71680
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
2#
发表于 2012-5-20 11:02:10 | 只看该作者
lu guo

评分

参与人数 1威望 -6 收起 理由
cpuer -6 恶意灌水

查看全部评分

3#
 楼主| 发表于 2012-5-20 11:10:35 | 只看该作者
是这个原因么

linux下文件数、目录数、文件名长度的各种限制
以下测试都是在没有优化或修改内核的前提下测试的结果

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等
4#
 楼主| 发表于 2012-5-20 11:11:19 | 只看该作者
对于系统管理员来说,了解系统的一些限制是非常有必要的,这样可以根据需要进行必要的参数配置和调整,进而实现更优的性能,对于系统设计人员甚至程序员来说,了解系统的一些限制,也会有助于设计更为合理的存储结构。
一 目录数限制

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 命令查看所有的限制,并能临时改变限制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-1-13 07:27 , Processed in 0.122978 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表