海量小文件的管理
Posted baill
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了海量小文件的管理相关的知识,希望对你有一定的参考价值。
在单个目录存放超过上百万的文件时,对大部分的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
以上是关于海量小文件的管理的主要内容,如果未能解决你的问题,请参考以下文章