Ceph RBD灾备方案对比

一、业内灾备方案

1. Snapshot

1.1 介绍

Cluster A & B仍然是独立的Ceph集群,通过RBD的snapshot机制,在Cluster A端,针对image定期通过rbd创建image的snap,

然后通过rbd export-diff, rbd import-diff命令来完成image备份到Cluster B。

1.2 原理

异步备份,基于RBD的snapshot机制

1.3 命令和步骤

把 Cluster A 的 pool rbd 下面 image testimage 异步备份到 Cluster B 的 pool rbd 下的相同image上;

  1. 在Cluster A/B上创建rbd/testimage
    rbd create -p rbd --size 10240 testimage

  2. 在准备备份image前,暂停Cluster A端对testimage的IO操作,然后创建个snapshot
    rbd snap create <snap-name>

  3. 导出Cluster A端的testimage数据,不指定from-snap
    rbd export-diff <image-name> <path>

  4. copy上一步中导出的文件到Cluster B,并导入数据到testimage
    rbd import-diff <path> <image-name>

后续需周期性的暂停Cluster A端的testimage的IO,然后创建snapshot,通过 rbd export-diff <image-name> [--from-snap <snap-name>] <path>命令导出incremental diff,

之后把差异数据文件copy到Cluster B上,然后通过命令rbd import-diff <path> <image-name>导入。

【注】:也可不暂停Cluster A端的IO,直接take snapshot;这样并不会引起image的数据不一致,只是有可能会使rbd export-diff时导出的数据在take snapshot之后

1.4 优缺点

优点:

  1. 当前Ceph版本就支持rbd snapshot的功能
  2. 命令简介方便,通过定制执行脚本就能实现rbd块设备的跨区备份

缺点:

  1. 每次同步前都需要在源端take snapshot
  2. 持续的snapshots可能导致image的读写性能下降
  3. 还要考虑后续删除不用的snapshots
  4. snapshot只能保证IO的一致性,并不能保证使用rbd块设备上的系统一致性;

【可以每次暂停image的IO,sync IO数据来保证rbd块设备上的系统一致性,但需要虚拟机支持qemu-guest-agent】

1.5 参考资料

https://ceph.com/dev-notes/incremental-snapshots-with-rbd/
https://www.rapide.nl/blog/item/ceph_-_rbd_replication.html
http://wiki.libvirt.org/page/Qemu_guest_agent
http://www.zphj1987.com/2016/06/22/rbd
http://ju.outofmemory.cn/entry/243899

2. CEPH BackUp

2.1 介绍

teralytics是一家国外的大数据公司,这个是他们开源的ceph的备份的工具。
这个软件基于python的实现,可以说作者的实现逻辑是很清晰的,并且提供了配置文件的方式,基本上是各个细节都考虑的比较到位,很容易上手,可以直接拿来使用,或者集成到自己的平台中去,是一个很好的软件

软件包含以下功能:

  • 支持存储池和多image的只对
  • 支持自定义备份目标路径
  • 配置文件支持
  • 支持备份窗口设置
  • 支持压缩选项
  • 支持增量和全量备份的配置

2.2 原理

异步备份,基于RBD的snapshot机制。

2.3 命令和步骤

2.3.1 全量备份配置

上面的配置文件已经写好了,直接执行备份命令就可以了

cephbackup
Starting backup for pool rbd
Full ceph backup
Images to backup:
 rbd/zp
Backup folder: /tmp/
Compression: True
Check mode: False
Taking full backup of images: zp
rbd image 'zp':
 size 40960 MB in 10240 objects
 order 22 (4096 kB objects)
 block_name_prefix: rbd_data.25496b8b4567
 format: 2
 features: layering
 flags: 
Exporting image zp to /tmp/rbd/zp/zp_UTC20170119T092933.full
Compress mode activated
# rbd export rbd/zp /tmp/rbd/zp/zp_UTC20170119T092933.full
Exporting image: 100% complete...done.
# tar Scvfz /tmp/rbd/zp/zp_UTC20170119T092933.full.tar.gz /tmp/rbd/zp/zp_UTC20170119T092933.full
tar: Removing leading `/' from member names

压缩的如果开了,正好文件也是稀疏文件的话,需要等很久,压缩的效果很好,dd生成的文件可以压缩到很小

检查备份生成的文件

ll /tmp/rbd/zp/zp_UTC20170119T092933.full*
-rw-r--r-- 1 root root 42949672960 Jan 19 17:29 /tmp/rbd/zp/zp_UTC20170119T092933.full
-rw-r--r-- 1 root root 0 Jan 19 17:29 /tmp/rbd/zp/zp_UTC20170119T092933.full.tar.gz

2.3.2 全量备份的还原

rbd import /tmp/rbd/zp/zp_UTC20170119T092933.full zpbk

检查数据,没有问题

2.3.3 增量备份配置

写下增量配置的文件,修改下备份模式的选项

[rbd]
window size = 7
window unit = day
destination directory = /tmp/
images = zp
compress = yes
ceph config = /etc/ceph/ceph.conf
backup mode = incremental
check mode = no

执行多次进行增量备份以后是这样的

[root@lab8106 ~]#ll /tmp/rbd/zpbk/
total 146452
-rw-r--r-- 1 root root 42949672960 Jan 19 18:04 zpbk@UTC20170119T100339.full
-rw-r--r-- 1 root root 66150 Jan 19 18:05 zpbk@UTC20170119T100546.diff_from_UTC20170119T100339
-rw-r--r-- 1 root root 68 Jan 19 18:05 zpbk@UTC20170119T100550.diff_from_UTC20170119T100546
-rw-r--r-- 1 root root 68 Jan 19 18:06 zpbk@UTC20170119T100606.diff_from_UTC20170119T100550
-rw-r--r-- 1 root root 68 Jan 19 18:06 zpbk@UTC20170119T100638.diff_from_UTC20170119T100606

2.3.4 增量备份的还原

分成多个步骤进行

1、进行全量的恢复
# rbd import config@UTC20161130T170848.full dest_image
2、重新创建基础快照
# rbd snap create dest_image@UTC20161130T170848
3、还原增量的快照(多次执行)
# rbd import-diff config@UTC20161130T170929.diff_from_UTC20161130T170848 dest_image

本测试用例还原步骤就是

rbd import zpbk@UTC20170119T100339.full zpnew
rbd snap create zpnew@UTC20170119T100339
rbd import-diff zpbk@UTC20170119T100546.diff_from_UTC20170119T100339 zpnew
rbd import-diff zpbk@UTC20170119T100550.diff_from_UTC20170119T100546 zpnew
rbd import-diff zpbk@UTC20170119T100606.diff_from_UTC20170119T100550 zpnew
rbd import-diff zpbk@UTC20170119T100638.diff_from_UTC20170119T100606 zpnew

检查数据,没有问题

3. RBD Mirroring

3.1 介绍

Ceph新的rbd mirror功能支持配置两个Ceph Cluster之间的rbd同步

3.2 原理

利用Journal日志进行异步备份,Ceph自身带有的rbd mirror功能

3.3 命令和步骤

详见:rbd-mirror

3.4 优缺点

优点:

  1. Ceph新的功能,不需要额外开发
  2. 同步的粒度比较小,为一个块设备的transaction
  3. 保证了Crash consistency
  4. 可配置pool的备份,也可单独指定image备份

缺点:

  1. 需要升级线上Ceph到Jewel 10.2.2版本以上
  2. Image Journal日志性能影响较为严重

二、结论

1. 方案对比

方案 详细说明 优点 缺点
Snapshot 主站点备份时为存储块打快照,将快照的差异部分发送到备站点重新生成新快照 1.当前Ceph版本就支持rbd snapshot的功能
2. 命令简介方便,通过定制执行脚本就能实现rbd块设备的跨区备份
3. 不需要对集群操作升级降级操作
4. 风险较低,简单,易实现
1. 快照对原块的性能有很大影响,尤其是随机IO
2. 快照间的差异部分是在备份时计算出来的,因此很耗时,即使两个快照间没有差异也要花上很长一段时间来扫描差异部分
3. 定期备份存在差异数据丢失
Ceph-backup 官方社区基于快照的方式,进行包装了下 同上 同上
RBD Mirroring 主要是客户端多写一份日志,然后异步同步到备集群进行实时备份 1. Ceph新的功能,不需要额外开发
2. 同步的粒度比较小,为一个块设备的transaction
3. 保证了Crash consistency
4. 可配置pool的备份,也可单独指定image备份
5. 实时备份保证数据的一致性
1. 需要升级线上Ceph到Jewel 10.2.2版本以上
2. Image Journal日志性能影响较为严重

2. 总结

结合业内的各大公司的灾备方案,以及社区相关的技术文档。个人建议用快照的方式, 简单、便捷、风险较低、易实现。

并且国内云厂商也普遍都是利用快照的方式实现灾备方案,然后加上自己的策略进行包装。

rbd-mirror功能还是比较新 并且官方的文档也有一些措施进行优化,但是效果不佳。

官方也把这块列为todolist,期待下个版本进行优化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容