Ceph是一个开源的分布式存储平台,分布式块存储RBD(RADOS Block Device)在云计算中广泛使用。基于Ceph
RBD的快照技术,通过差量文件的方式定期将数据备份到灾备中心,当主数据中心发生故障时,从灾备中心恢复最近的备份数据并重启相应的虚拟机,最大程度降低灾难时的数据恢复时间。
基本术语
镜像 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,所以在操作上分为首次备份和第一次之后的备份。
第一次备份
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为当天日期)。
当主数据中心发生故障时,在2Cloud云平台执行恢复的运维命令,即可将用户的虚拟机在备份中心快速启动,并恢复至最近一次备份时的状态。
功能的进一步优化
数据去重压缩
考虑到不同数据中心间数据传输的带宽压力,运维命令将对备份文件进行压缩去重处理后,再发送到备份数据中心。选取三种压缩算法的对比结果如下(以35G的差量文件为例)。基于压缩比例和压缩时间的综合考虑,2Cloud采用gzip算法作为压缩算法。
快照数量管理
考虑到快照数量对磁盘性能的影响,运维命令会在备份完成后将虚拟机前一天的快照删除,仅保留当天快照用于下次备份时生成差量文件。
应用场景
电信及IDC运营商为企业提供云端的灾备服务
面对用户从托管转向云,电信及IDC运营商纷纷建设和开拓云业务,除了基础云服务之外,可发挥其多地域数据中心及带宽的优势,推出云环境下针对虚拟机的异地灾备服务,提供更高SLA的数据保障。
企业私有云中关键数据的灾备与恢复
传统的灾备方案依托SAN存储及专业软件来实现。相比传统方案,运用x86服务器本地磁盘,基于Ceph RBD的快照技术即可实现异地灾备;同时,Ceph分布式存储的多副本机制,在本地数据中心也能保障数据高可用,从而极大地降低企业实现数据全面保护的门槛和成本。
文章作者:宋贞,云杉网络高级研发工程师