基于Ceph RBD的快照技术实现异地灾备

SDN in China

2016年3月3日

核心技术

文章作者:宋贞,云杉网络高级研发工程师

基本术语

镜像 Image:对应于逻辑卷Logical Volume,是能被attach和detach到虚拟机的载体。
快照 Snapshot:Image在某一个时刻的状态,可以将Image回滚到某一个快照状态。

Ceph处理差量文件

Ceph可以将某个RBD image不同时刻的状态进行比较,将其差量导出成文件,同时也可以将这个差量文件导入到某个image中。

Ceph生成差量文件的三种方式

1)导出某个image从创建到此刻的变化
例如,将pool/image1从创建到此刻的差量保存至image1diff文件

rbd export-diff pool/image1 image1diff

2)导出某个image从创建到某快照时刻的变化
例如,将pool/image1创建时和快照snap1的差量保存至image1s1diff文件

rbd export-diff pool/image1@snap1 image1s1diff

3)导出某个image此刻和某快照时刻的变化
例如,将现在pool/image1和快照snap1的差量保存至image1s1diff2文件

rbd export-diff pool/image1 –from-snap snap1 image1s1diff2

Ceph导入差量文件的三种方式
对应生成差量文件的三种方式,有三种导入差量文件的方式。导入的前提是先创建一个image2,然后将diff文件导入这个image。

1)导入image从创建到某一时刻的diff

rbd import-diff image1diff pool/image2

此时,image2和生成diff时image1相同

2)导入image从创建时到某快照时刻的diff

rbd import-diff image1s1diff pool/image2

此时,image2和创建snap1后的image1相同,即image2也有一个叫做snap1的快照

3)导入image从某快照时刻到某时刻的diff

rbd import-diff image1s1diff2 pool/image2

执行的前提是image2有一个叫做snap1的快照

异地灾备的实现

由于第一次备份时,灾备数据中心还没有对应的base image,所以在操作上分为首次备份和第一次之后的备份。

20160303-01

第一次备份

1. 在备份中心创建一个image作为base

rbd create dest-pool/image1 -s 1

2. 在主数据中心创建一个image的快照

rbd snap create source-pool/image1@snap1

3. 以第二种导出方式生成差量文件

rbd export-diff source-pool/image1@today image1-snap1-diff

4. 将导出的差量文件传输到备份中心,使用scp或netcat工具
5. 以第二种导入方式将差量文件导入base image

rbd import-diff image1-snap1-diff dest-pool/image1

6. 备份完成

第二次之后的备份

1. 在主数据中心查找image最近一次的快照,并确认备份中心是否存在同名快照

rbd snap ls dest-pool/image1 | grep snap1

2. 若存在,在主数据中心创建image的新快照

rbd snap create source-pool/image1@snap2

3. 以第三种导出方式生成差量文件,所用的snap即第1步中找到的快照snap1。每次的diff都是相对于上一次备份而言的,即实现了增量备份

rbd export-diff --from-snap snap1 source-pool/image1@snap2 image1-snap1-snap2-diff

4. 将导出的差量文件传输到备份中心
5. 以第三种导入方式将差量文件导入image

rbd import-diff image1-snap1-snap2-diff dest-pool/image1

6. 备份完成

创建备份时,会在原始image上创建一个快照,通过比较新建快照和上一次备份的快照形成差量文件,将这个差量文件导入到backup image即完成了备份。由上面Ceph处理差量文件的方式可知,这个快照也会存在于backup image上,也就是说每个备份对应的是backup image上的一个快照。

Ceph RBD快照技术在2Cloud中的应用

2Cloud云平台中的运维工具提供了异地备份功能。每天可按计划对用户的虚拟机进行自动的异地备份。一旦主数据中心的发生异常并收到告警,可立即使用运维工具将虚拟机在备份中心启动,最大限度地减少用户损失。

以虚拟机vm-2cloud-1为例,在缺省配置下,2Cloud云平台在每日24时执行运维命令,对当天的虚拟机进行增量备份(xxxx-xx-xx为当天日期)。

20160303-02

当主数据中心发生故障时,在2Cloud云平台执行恢复的运维命令,即可将用户的虚拟机在备份中心快速启动,并恢复至最近一次备份时的状态。

20160303-03

功能的进一步优化

数据去重压缩
考虑到不同数据中心间数据传输的带宽压力,运维命令将对备份文件进行压缩去重处理后,再发送到备份数据中心。选取三种压缩算法的对比结果如下(以35G的差量文件为例)。基于压缩比例和压缩时间的综合考虑,2Cloud采用gzip算法作为压缩算法。

20160303-04

快照数量管理
考虑到快照数量对磁盘性能的影响,运维命令会在备份完成后将虚拟机前一天的快照删除,仅保留当天快照用于下次备份时生成差量文件。

应用场景

电信\IDC运营商为企业提供云端的灾备服务
面对用户从托管转向云,电信\IDC运营商纷纷建设和开拓云业务,除了基础云服务之外,可发挥其多地域数据中心及带宽的优势,推出云环境下针对虚拟机的异地灾备服务,提供更高SLA的数据保障。

企业私有云中关键数据的灾备与恢复
传统的灾备方案依托SAN存储及专业软件来实现。相比传统方案,运用x86服务器本地磁盘,基于Ceph RBD的快照技术即可实现异地灾备;同时,Ceph分布式存储的多副本机制,在本地数据中心也能保障数据高可用,从而极大地降低企业实现数据全面保护的门槛和成本。

Related Posts

「直播回看」DeepFlow——开启高度自动化的可观测性新时代

我们相信DeepFlow 是送给新时代开发人员、运维人员的一份礼物。我们希望开发人员能有更多的时间聚焦在业务上,将可观测性更多的交给自动化的 DeepFlow,让自己的代码更清晰整洁。

Read More

「直播回看」高清云网可观测之全链路追踪实战

“云原生可观测性分享会”第七期《高清云网可观测之全链路追踪实战》由云杉网络 高级产品经理 李倩分享,针对云网络的全链路追踪问题,用「实战」带领大家一步一步破解“网络谜案”。

Read More