专栏首页磨磨谈rbd的ceph-backup增量备份本地恢复方法

rbd的ceph-backup增量备份本地恢复方法

前言

之前有写过一篇关于rbd增量备份的,以及介绍过ceph-backup这款软件

  • ceph的rbd备份软件ceph-backup
  • rbd的增量备份和恢复

这两篇文章里的方法都是基于rbd的快照去进行增量备份,之前文章里的恢复方法都是基于集群进行恢复,也就是需要一个集群进行导入,本篇将介绍另外一个方法,不基于集群进行恢复,直接在本地文件系统上进行恢复,我们来看下这个是怎么恢复的

本篇也可以用于rbd和rbd快照在本地进行合并

实践过程

全量备份的访问方法

rbd在没有做快照的情况下的备份,导出后是一个文件形式的

rbd export testrbd testrbd

使用下面方法进行直接访问

losetup /dev/loop0 testrbd 
kpartx -a /dev/loop0 
mount /dev/mapper/loop0p1 /mnt1/
mount /dev/mapper/loop0p2 /mnt2/

内核块设备使用的时候可以直接进行文件的本地访问,如果是librbd的虚拟机磁盘的形式的直接当raw格式进行直接访问或者传输到OpenStack里面直接访问即可,或者用上面的步骤本地直接访问

增量备份的访问方法

如果使用的是ceph-backup的增量备份,需要离线恢复的话需要一个第三方插件

wget https://github.com/zphj1987/eve4ceph-mdti/archive/master.zip

下载好了后进入代码目录,执行

yum install glib2-devel
yum install glib-devel
make install

执行完了后会生成一个二进制文件,这个 eve4ceph-mdti ,不需要其他配置,直接使用即可

[root@lab244 mnt]# ll /root/test/
total 280
-rw-r--r--. 1 root root 159958 Oct 25 03:10 testrbd@BACKUPUTC20171024T190955.full.tar.gz
-rw-r--r--. 1 root root  60202 Oct 25 03:12 testrbd@BACKUPUTC20171024T191243.diff_from_BACKUPUTC20171024T190955.tar.gz
-rw-r--r--. 1 root root  57568 Oct 25 03:13 testrbd@BACKUPUTC20171024T191358.diff_from_BACKUPUTC20171024T191243.tar.gz

使用ceph-backup生成的是上面的这些压缩包的形式,直接全部解压

[root@lab244 mnt]# ll /root/test/tmp/rbd/testrbd/
total 127788
-rw-r--r--. 1 root root 10737418240 Oct 25 03:30 testrbd@BACKUPUTC20171024T190955.full
-rw-r--r--. 1 root root    19650298 Oct 25 03:12 testrbd@BACKUPUTC20171024T191243.diff_from_BACKUPUTC20171024T190955
-rw-r--r--. 1 root root    18896617 Oct 25 03:13 testrbd@BACKUPUTC20171024T191358.diff_from_BACKUPUTC20171024T191243

解压完成后生成了原始全量镜像和快照增量部分,根据快照时间顺序进行合并

eve4ceph-mdti testrbd\@BACKUPUTC20171024T190955.full testrbd\@BACKUPUTC20171024T191243.diff_from_BACKUPUTC20171024T190955
eve4ceph-mdti testrbd\@BACKUPUTC20171024T190955.full testrbd\@BACKUPUTC20171024T191358.diff_from_BACKUPUTC20171024T191243

执行上面的以后会把快照的差量回滚到全量的那个备份当中

losetup /dev/loop0 testrbd\@BACKUPUTC20171024T190955.full
kpartx -a /dev/loop0
mount /dev/mapper/loop0p1 /mnt
ll /mnt

经过上面的步骤以后,在本地文件系统上面就把增量的部分进行合并了,这里面用到比较关键的一个技术点就是ceph_apply_diff,上面的操作进行了多次增量的备份,数据是按照快照点进行恢复,需要按时间先后顺序把差异合并到第一个full镜像,需要注意的是,做快照如果是librbd,要注意rbd的cache的影响,先flushcache,然后快照,如果是kernel rbd的快照,要注意本地文件系统的缓存的影响

总结

本篇是提供了一种本地恢复增量备份的rbd的方法,在集群之外进行快照的合并,减少了恢复过程对集群的依赖

本文分享自微信公众号 - 磨磨谈(momotan1987),作者:张鹏

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cephfs的快照功能

    Cephfs的快照功能在官网都很少提及,因为即使开发了很多年,但是由于cephfs的复杂性,功能一直没能达到稳定,这里,只是介绍一下这个功能,怎么使用,并且建议...

    用户2772802
  • rbd的image对象数与能写入文件数的关系

    对于这个问题,我原来的理解也是:对象默认设置的大小是4M一个,存储下去的数据,如果小于4M,就会占用一个小于4M的对象,如果超过4M,那么存储的数据就会进行拆分...

    用户2772802
  • 如何避免Cephfs被完全毁掉

    一套系统的最低要求是可恢复,也就是数据不丢失,但是在各种各样的原因下,整套系统都有被毁掉的可能,一直以来有个观点就是存储是需要两套的,一般情况下很难实现,但是如...

    用户2772802
  • 关于时间的处理

    计算机处理时间一直都是以时间戳的方式进行的, 并且以 格林尼治时间 1970/1/1 0:0:0 开始计算的: var date = new Date(0); ...

    IMWeb前端团队
  • 关于时间的处理

    计算机处理时间一直都是以时间戳的方式进行的, 并且以 格林尼治时间 1970/1/1 0:0:0 开始计算的:

    IMWeb前端团队
  • VMware 中 Linux 调整分区大小

    Precondition :VMware Player 中安装的Fedora 17 Linux 32bit,个人较久远的测试环境,安装时没有进行磁盘规划,默认2...

    gigiwangs
  • 从隐式转换案例,来挖掘开发人员的技能提升

    碰到个问题(https://www.modb.pro/issue/1440),有点意思,值得在这说下。

    bisal
  • python菜鸟教程 | 基础数学运算

    python当中^符号,区别于Matlab,在python中,^用两个**表示,如3的平方为3**2 , **3表示立方,**4表示4次方,依次类推

    week
  • Linux下date命令常用方法小计

    在Linux下date命令是由coreutils安装出来的一个系统命令,用来显示当前系统时间,不过默认显示结果可能不是你想想要的,特别是结果作为文件名输出不是很...

    后场技术
  • Single Number II

    问题:找出只出现一次的数,其他数出现了三次 分析:将数转化为二进制的位,数出现了三次相当于其对应的二进制上每个位置出现了3次,这里有个抽象的地方就是,例如数中包...

    用户1624346

扫码关注云+社区

领取腾讯云代金券