博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
海量小文件同步
阅读量:6622 次
发布时间:2019-06-25

本文共 1123 字,大约阅读时间需要 3 分钟。

集中式存储是目前中小企业广泛采用的方案,随着时间的流逝,这些存储不可避免的膨胀。集中式存储的弊端愈加显现,同步就是其中一个。

环境:

文件容量以TB计,里面是千万/亿级的小文件,分布在成千上万的子文件夹内。

分析

rsync几乎是唯一选择,海量小文件同步面临的问题主要是rsync无止境的扫描,同步进度难以把控,巨大的临时目录等。所以解决办法只能是庖丁解牛,将一个大任务分解成N个小任务。

场景假设如下:

1、源服务器目录结构是按照年月日分布,示例如下

1
/www/images/
2014
/
04
/
30
/xxx.png

2、目标rsync服务器为 192.168.1.2::www,且可写。

解决办法:

很明显,同步最底层的目录最快。

1
2
3
4
5
6
find 
/www/images 
\
    
-mindepth 3 \
    
-maxdepth 3 \
    
-
type 
d \
    
-
exec 
rsync 
-aquR  {}/ 192.168.1.2::www
/images/ 
\; \
    
-
exec 
echo 
/www/images/
{} 
done 
\;

注:-R 可解决远程rsync服务器的目录结构问题。

另一种方法是for循环,比较好理解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/env bash
 
dir
=
"www/images"
 
for 
year 
in  
2014 2015 ;
do
        
for 
month 
in 
`
seq 
1 12`;
do
                
for 
day 
in 
`
seq 
1 31`;
do
                        
if 
[  -d /$
dir
/$year/$month/$day ];
then
                                
rsync 
-aqu /$
dir
/$year/$month/$day/  192.168.1.2::$
dir
/$year/$month/$day/
                        
else
                                
echo 
"directory /$dir/$year/$month/$day not exist."
                        
fi
                
done
        
done
done

集中式存储的缺点是: 必须提前做容量规划,存储严格控制在设计容量内之内,如果要扩展,必须重新进行容量规划。

要根本解决这个问题,终极的办法似乎只有分布式文件系统,用全新的设计理念的来解决存储问题,按需扩展。

可惜的是,目前的分布式文件系统几乎都是为大文件而设计,对于海量小文件支持都不够。ceph足够优秀,但是还不完全成熟。

本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1404981,如需转载请自行联系原作者
你可能感兴趣的文章
python3利用pyftpdlib模块启动ftp服务
查看>>
PHP 源码扩展开发相关记录
查看>>
linux 编译安装pureFTP
查看>>
分割字符串
查看>>
Tomcat9.0环境搭建与源码编译
查看>>
javascript ES6 Proxy
查看>>
机器学习前沿热点–Deep Learning
查看>>
Sunglasses Replicas Oakley
查看>>
用vlc搭建简单流媒体服务器(UDP和TCP方式)
查看>>
c语言机构体,枚举,宏
查看>>
今天正式开通了博客园,好激动啊!
查看>>
CSS3 实现别样图型
查看>>
Java 200+ 面试题补充 ThreadLocal 模块
查看>>
hdu5389 Zero Escape DP+滚动数组 多校联合第八场
查看>>
有关不同浏览器不同版本号的css以及js计算高度的问题
查看>>
java垃圾收集相关问题
查看>>
python 12 生成器 列表推导式 内置函数I
查看>>
C++图形编程之graphics.h头文件
查看>>
Spring根据XML配置文件注入对象类型属性
查看>>
log4j.properties
查看>>