免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 33313 | 回复: 78
打印 上一主题 下一主题

[新手入门] 头疼!AIX下的超大目录终于撑满了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-19 16:40 |只看该作者 |倒序浏览
5可用积分
P570装的AIX 5.3,/bak目录下有几十个业务分别往各自的子目录下扔数以万计的数据文件(大小一般在1kB以内)。反正/bak目录在盘阵上,这个目录也很少用,偶尔进入一下知道列目录比较慢也没放在心上。
终于,有一天应用程序报错,不能往/bak/FPF目录mv数据了。

一检查吓了一跳,ls -ld /bak/FPF,目录大小已经达到了天文数字3307520000。

要命的是,这个目录虽然能够cd进去,但任何形式的ls都会提示
ls:. : Value too large to be stored in data type.

find 命令则提示
find: 0652-023 Cannot open file /bak/FPF.

rm -r 命令也提示
rm: 0653-602 Cannot read /bak/FPF.

tar 命令的报错更狠
tar: FPF.old: A file or directory in the path name does not exist.

$du FPF.old
du: FPF.old: Value too large to be stored in data type.

$fuser FPF.old
FPF.old:


粗粗估算了一下,这个子目录下面的文件数量在2千万以上,但/bak目录的%Iused还没到75%,df -g查看空间使用率也才70%,总容量400GB。用smitty查看这个jfs2类型的fs的容量,可是约1.6T。
看来,AIX下的jfs2文件系统,单个目录文件的最大容量莫过于此。

为了保证业务正常,临时把这个/bak/FPF更名成/bak/FPF.old,然后新建了一个/bak/FPF。

下定了决心,要把/bak下所有文件都按天归档打包,然后删除原文件。
其他子目录都差不多处理完了,跑了一周左右的时间。但这个/bak/FPF.old怎么也读不出其中的内容了,那几千万个小文件的空间无法回收。

请问各位大虾,应该怎么办?(不重做文件系统)

[ 本帖最后由 ncjh 于 2008-8-21 13:14 编辑 ]

最佳答案

查看完整内容

unix对目录文件的操作有一组单独的api,可能这组api实现的时候,没考虑一个目录能有这个大(比如实现这个函数内时,对目录文件中偏移使用了32位的int类型内部变量)。可以用ls -ld fpf.old看下目录文件大小是否超过2g了。如果真的是这个原因,那可能真的就只能找ibm了,aix里还有另外一组64位的api函数,可以访问大目录。如果他们提供这组64位命令,就可以把文件批量移出或者删除。验证方案,单独建个很小的文件系统(删除方便), ...

论坛徽章:
0
2 [报告]
发表于 2008-08-19 16:40 |只看该作者
unix对目录文件的操作有一组单独的api,可能这组api实现的时候,没考虑一个目录能有这个大(比如实现这个函数内时,对目录文件中偏移使用了32位的int类型内部变量)。

可以用ls -ld fpf.old看下目录文件大小是否超过2g了。如果真的是这个原因,那可能真的就只能找ibm了,aix里还有另外一组64位的api函数,可以访问大目录。如果他们提供这组64位命令,就可以把文件批量移出或者删除。

验证方案,单独建个很小的文件系统(删除方便),用循环建一些文件名非常长的空文件,使目录达到2g,然后看访问是不是有问题。

论坛徽章:
0
3 [报告]
发表于 2008-08-19 16:44 |只看该作者
关注

论坛徽章:
0
4 [报告]
发表于 2008-08-19 16:46 |只看该作者
要把/bak下所有文件都按天归档打包,然后删除原文件。

这种办法可行。

论坛徽章:
0
5 [报告]
发表于 2008-08-19 16:47 |只看该作者
你这个目录下文件有什么特点,比如有没有时间戳

论坛徽章:
0
6 [报告]
发表于 2008-08-19 16:48 |只看该作者
lsvg -l vgname

看看你这个/bak所在lv的type正常吗?

我以前遇见过type=“?”,而不是jfs2或jfs

[ 本帖最后由 chalylau 于 2008-8-19 16:49 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-08-19 16:49 |只看该作者
find 肯定是可以的

论坛徽章:
0
8 [报告]
发表于 2008-08-19 16:53 |只看该作者
听起来挺悬的。

论坛徽章:
0
9 [报告]
发表于 2008-08-19 16:54 |只看该作者
而且应用不能往里面写肯定是其他原因,INODE和容量都够,不可能写不进去的.IBM既然提供了这么大的INODE数量和容量,就肯定可以

论坛徽章:
0
10 [报告]
发表于 2008-08-19 16:57 |只看该作者
它的inode用完了,df -k可确认。
修改的ncargs值也许可能看ls.
ncargs属于sys0.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP