海量小文件的管理

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

 



以上是关于海量小文件的管理的主要内容,如果未能解决你的问题,请参考以下文章

VS中添加自定义代码片段——偷懒小技巧

宜搭小技巧|海量数据管理难?这招帮你事半功倍

Android获取各个应用程序的缓存文件代码小片段(使用AIDL)

海量图片存储,杉岩分布式对象存储轻松应对

微信小程序代码片段

作业二:调查一下目前流行的源程序版本管理软件和项目管理软件