ceph资源池之间的image备份策略

由于公司项目的需要,现在需要设计一个关于ceph的简易的image数据备份,备份的image需要挂载到backup资源池。备份资源池使用bluestore的compression特性以节约硬盘存储空间。下面对image的备份过程进行简单的

创建相应image的snapshot

首先需要创建image的snapshot

1
rbd snap create rbd/test@v1

上述命令就是创建了test的snapshot

设置合适的compression_algorithm和compression_required_ratio参数

需要设置合适的压缩算法和压缩率。bluestore相比于filestore,其巨大的优势无疑体现在两点:
1、去掉了journal,直接管理裸设备
2、优化SSD
因此bluestore去除了双写的缺点(从内存到journal,从journal再到存储硬盘);直接管理裸设备,不需要操作系统去管理磁盘,去除了对象到文件、文件到对象的转换过程,提高IO效率(ceph是以object进行存储的,所有针对rados的对象操作,filestore中需要需要预先转化为能够被本地文件系统识别的、符合POSIX语义的文件操作)

export && import

全量备份

1
rbd export rbd/test@V1 - | rbd import - rbd/test2

对上面的命令做一个解释:
首先上面的 - 是将image作为数据流export and import,不会生成文件占据磁盘存储空间

md5校验

1
2
3
rbd export rbd/test@V1 - | md5sum

rbd export rbd/test2 - | md5sum

核对两个image做MD5后的值,核对数据的完整性和一致性。

创建diff的snapshot

1
rbd snap create rbd/test@V2

export-diff && import-diff

增量备份

1
rbd export-diff rbd/test@V2 --from-snap V1 - | rbd import-diff - rbd/test2

rename different的snapshot

1
2
rbd snap remove rbd/test@V1 
rbd snap rename rbd/test@V2 rbd/test@V1