由于公司项目的需要,现在需要设计一个关于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 | rbd export rbd/test@V1 - | 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 | rbd snap remove rbd/test@V1 |