Chinaunix

标题: linux数十万小文件管理 [打印本页]

作者: hyong2011    时间: 2013-10-16 11:08
标题: linux数十万小文件管理
本帖最后由 hyong2011 于 2013-10-16 11:08 编辑

某个目录下由于程序的原因产生大量的小文件(每天数十万),字节数在几十到几百个字节内,使用ls,rm,du等命令都不能很快出结果,linux下有专门针对小文件管理的命令吗,有哪个高手遇到过这种情况的,给给思路啊!@
作者: 关阴月飞    时间: 2013-10-16 13:46
话说,lz想出什么结果? 统计文件数量? 统计文件大小?
作者: jackyyen    时间: 2013-10-17 09:14
还是改程序吧,这个不是BUG么
作者: Hongqiyaodao    时间: 2013-10-17 09:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: hyong2011    时间: 2013-10-17 14:47
回复 2# 关阴月飞


    做啥都很慢啦,
作者: hyong2011    时间: 2013-10-17 14:48
回复 3# jackyyen


    PHP+oracle-instance连接ORACLE服务器,装ORACLE-INSTANCE的服务器上产生大量的小文件,这与PHP程序无关吧
作者: jackyyen    时间: 2013-10-18 08:47
php 连 oralce 使用扩展不可以么,
请教这个oracle-instance是什么阿。

hyong2011 发表于 2013-10-17 14:48
回复 3# jackyyen

作者: hyong2011    时间: 2013-10-18 12:00
本帖最后由 hyong2011 于 2013-10-18 12:02 编辑

回复 7# jackyyen


    oracle-instanceclient-basic
    oracle-instanceclient-devel
  
   OCI8.SO
   PDO_OCI.SO
作者: jackyyen    时间: 2013-10-18 14:01
本帖最后由 jackyyen 于 2013-11-01 15:56 编辑

这个,等高手出现。
楼主解决了问题以后,一定要分享哦。
作者: noshell    时间: 2013-10-25 15:28
不知道你说的管理是要怎么做?文件个数多了做操作会很慢。
作者: 流氓无产者    时间: 2013-10-25 21:43
hyong2011 发表于 2013-10-17 14:48
回复 3# jackyyen

具体是什么,oracle产生的,还是你们自己php产生的
如果是自己的,可以考虑合并小文件
作者: wenhq    时间: 2013-10-25 21:57
rsync负责删除
find +xargs负责编辑等!lz还想搞啥操作
作者: weizhulinux    时间: 2013-10-25 22:13
回复 1# hyong2011

“ls,rm,du等命令都不能很快出结果”
出不了结果的原因和用什么命令没有关系

慢的根源是extN文件系统的目录承载这么多文件,它就是这么个速度
用任何命令都是这么个速度

解决这个问题,从业务上下手,从上层控制,把这些小文件散列到多个目录去
可考虑MD5散列文件名,然后前2个字节作为目录名,比如00-FF,就可以把文件散列到256个目录中去,散开之后操作速度就快了
   
作者: co63oc    时间: 2013-10-25 23:00
可以考虑用固态硬盘
作者: fly3ds    时间: 2013-10-27 18:45
一个字,“等”。
作者: wenhq    时间: 2013-10-27 19:08
哈哈,等等等
作者: hyong2011    时间: 2013-10-28 14:10
这不是程序产生的文件呢,是oracle_client产生的日志文件,是什么ADR功能
作者: watchsat    时间: 2013-10-29 01:49
回复 17# hyong2011
交易紀錄?

   
作者: hyong2011    时间: 2013-10-29 09:59
晕,是oracle的自动诊断资料库管理工具
作者: xjianzy    时间: 2013-11-05 16:25
要看你想干什么了!
作者: watchsat    时间: 2013-11-06 05:27
換個想法:

寫個SQL script把logs再塞進Mysql, 以後要查找也方便...
作者: CoolCool顺    时间: 2013-11-06 10:58
生成文件的可以按照日期/小时/ 文件夹层级 来区别,如果你查看的 时候 当然文件夹的查看.但是不会解决根本问题
作者: nbrr    时间: 2013-11-06 15:23
生产环境不需要一直开着ADR,可以关掉它
编辑sqlnet.ora,把

  1. DIAG_ADR_ENABLED=on
复制代码
修改为

  1. DIAG_ADR_ENABLED=off
复制代码

作者: zhaopingzi    时间: 2013-11-06 16:40
hadoop对这方面不是牛吗
作者: jixuuse    时间: 2013-11-08 10:53
十几万个还算少的。我这边一台编译服务器出问题,要把文件拷贝出来,SCP拷了2天后进程直接死了。没法用RSYNC,最后统计的文件2000多万个,拷贝了4天。容量只有100多G。。。
作者: ackor    时间: 2013-11-10 01:13
用脚本把新生成的文件参数(文件名,文件大小等)都写到ORACLE里,脚本设置成定时,按每小时或是每半小时跑一次,管理起来很快的。
作者: jeffreyst    时间: 2013-11-11 09:04
不懂数据库,问下楼主这些小文件有用吗?
没有用到话,使用脚本定时检测,小文件生成来,直接删除,或者直接做相应到处理,没有必要一定要等所有到文件都生成来,再处理呀
一个思路而已...
作者: hyong2011    时间: 2013-11-13 11:28
照你这说法我可以自己控制,何必还生成呢,问题就是不能自己控制,你的明白




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2