海量小文件同步

简介:

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


环境:

文件容量以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,如需转载请自行联系原作者

目录
相关文章
|
机器学习/深度学习 Shell Python
vmcore自动分析工具
作者:雨庭 ## vmcore分析工具的需求变化 解决内核宕机、修复线上问题以及优化性能瓶颈是各操作系统团队工程师日常工作之一,其中大量工作依赖于crash工具对vmcore进行分析,但是应用规模以及场景的变化对其提出了新的需求。这种需求对开发者和集群运维而言,反映出不同的问题。对于开发者而言,crash工具可以满足查看vmcore中几乎所有数据的需求,例如全局变量、调度子系统
6527 0
|
数据处理 Python
Pandas数据处理 | apply() 函数用法指南!
本文介绍一下关于 Pandas 中 apply() 函数的几个常见用法,apply() 函数的自由度较高,可以直接对 Series 或者 DataFrame 中元素进行逐元素遍历操作,方便且高效,具有类似于 Numpy 的特性。
交叉证书
## 证书4要素 pubkey(公钥) ,有一个其一一对应的私钥,由证书拥有者保存。 subject(名字),可以理解为证书的名字,你可以理解为 网站的域名。 issuer(颁发者的名字),即上级证书的subject。 signature(签名) ,上级证书使用私钥对当前证书进行签名的值。 ## 证书签名 假设 有 3 级 证书 ![image.png](
5776 0
|
消息中间件 固态存储 Java
RocketMQ 消息发送system busy、broker busy原因分析与解决方案
RocketMQ 消息发送system busy、broker busy原因分析与解决方案
RocketMQ 消息发送system busy、broker busy原因分析与解决方案
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
272990 0
|
Python
Flask三种文件下载方法
Flask 是一个流行的 Python Web 框架,它提供了多种方法来实现文件下载。在本文中,我们将介绍三种不同的方法,以便你能够选择最适合你应用程序的方法。
1375 2
|
存储 监控 网络安全
rsync 远程同步 基础介绍
rsync 远程同步 基础介绍
|
机器学习/深度学习 算法 开发工具
【YOLOv8量化】普通CPU上加速推理可达100+FPS
【YOLOv8量化】普通CPU上加速推理可达100+FPS
2512 0
|
存储 缓存 负载均衡
高并发系统架构的设计挑战与应对策略
【8月更文挑战第18天】高并发系统架构设计是一项复杂而重要的任务。面对性能瓶颈、稳定性与可靠性、并发控制和可扩展性等挑战,开发人员需要采取一系列有效的策略和技术手段来应对。通过负载均衡、缓存技术、数据库优化、异步处理、并发控制、弹性设计及监控与调优等手段,可以设计出高性能、高可用和高可扩展性的高并发系统架构,为用户提供优质的服务体验。

热门文章

最新文章