在单个目录存放超过上百万的文件时,对大部分的OS都是一个挑战,目录的浏览就是一个非常难以忍受的事情。所以针对海量小文件的应用场景,能够使用nosql数据库时,尽量使用如redis之类的nosql数据库.
在非使用文件系统来存储管理海量小文件的情况下,尽量使用以下原则来进行管理
- 尽可能使用目录分批存储,避免单目录文件数量过万
- 文件系统最好使用XFS,XFS的inode数量是ext4的10倍以上
如果不小心遇到了单目录下文件数量过万甚至百万的情况,下面是一些处理建议
##目录复制或者移动 将单目录为百万以上的文件分目录批量存储
首先获取一份目录文件列表,然后根据列表来使用脚本批量处理文件
find /path/ -name "*" > filelist.txt #!/bin/sh cd _Receive for ((j=1;j<10000;j++)); do _dir=$j mkdir /u02/app/tomcat/files/temp/${_dir} for i in `head -n 10000 /u01/app/tomcat/files/flist.txt` ; do mv $i /u02/app/tomcat/files/temp/${_dir} done sed -i ‘1,10000d‘ /u01/app/tomcat/files/flist.txt done
## 快速删除文件
rsync -ap --delete-before /blank_dir/ /dest_dir
经测试验证,使用rsync批量删除文件效率要比直接rm快10倍以上
root# time rsync --delete-before -a b/ t real 2m6.463s user 0m3.150s sys 1m2.625s root# time find t -name "*" -exec rm {} \; real 27m52.152s user 4m59.824s sys 22m50.166s
原文地址:https://www.cnblogs.com/baill/p/9765425.html
时间: 2024-11-05 20:23:44