ceph中rbd的增量备份和恢复

ceph的rbd操作文档地址:Ceph Documentation

​ 在调研OpenStack中虚机的备份和恢复时,发现OpenStack和ceph紧密结合,使用ceph做OpenStack的后端简直是不要太爽,于是调研了使用ceph中的块设备rbd来对虚机进行增量备份和恢复。以下是虚机备份和恢复的实验步骤:

1. 前言:

快照的功能一般是基于时间点做一个标记,然后在某些需要的时候,将状态恢复到标记的那个点,这个有一个前提是底层的数据没有破坏,举个简单的例子,Vmware 里面对虚拟机做了一个快照,然后做了一些系统的操作,想恢复快照,前提是存储快照的存储系统没用破坏,一旦破坏了是无法恢复的。

​ ceph也有快照功能,同样,在这里的快照是用来保存存储系统上的状态的,数据的快照能成功恢复的前提是存储系统是好的,而一旦存储系统坏了,快照同时会失效的,所以最好是能够将数据备份下来。本篇博客主要是调研使用ceph的rbd命令来对存储设备进行基于快照的增量备份。

2. ceph中rbd的常用命令:

2.1列出存储池

ceph osd pool ls

2.2 查看存储池的内容

rbd ls --pool pool_name
例子
rbd ls --pool volumes

2.3 打快照

rbd snap create {pool-name}/{image-name}@{snap-name}
例如
rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1

2.4 罗列快照

rbd snap ls {pool-name}/{image-name}
例如:
rbd snap ls volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3

2.5 创建image

rbd create --size {pool-name}/{image-name}

3. Nova实例的备份与恢复

以ceph做后端,在创建实例时,需要选择一个系统盘,系统盘即是我们的目标数据盘。

备份实验步骤:

  1. 创建虚机。
  2. 在时间点v1对虚机打快照。
  3. 导出从开始创建image到快照v1那个时间点的差异数据,可以视为全量备份。
  4. 使用dd命令写入文件test.txt
  5. 在时间点v2对虚机打快照。
  6. 导出从开始创建image到快照v2那个时间点的差异数据,可以视为全量备份。
  7. 导出了从v1快照时间点到v2快照时间点的差异数据,可以视为增量备份。

上文实验过程的数据:

v1时间点数据 + v1_v2之间数据 = v2 时间点数据

虚机的备份

1. 实例第一次快照:

rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1

2. 第一次全量备份:

rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v1 testimage_v1

这个命令是导出了从开始创建image到快照v1那个时间点的差异数据导出来了testimage_v1,导出成本地文件testimage_v1

3. 写入文件

dd

写入文件,以此显示出v1和v2之间的数据变化,并没有其他作用。

4. 实例第二次快照

rbd snap create volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2

5. 第二次全量备份:

rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2  testimage_v2

这个命令是导出了从开始创建image到快照v2那个时间点的差异数据导出来了testimage_v2,导出成本地文件testimage_v2

6. 增量备份

增量备份(第二次和第一次的差异文件):

rbd export-diff volumes/volume-c18b9782-dc71-4ddc-bb7f-bc0037105ac3@v2 --from-snap v1 testimage_v1_v2

这个命令是导出了从v1快照时间点到v2快照时间点的差异数据,导出成本地文件testimage_v1_v2

注意:

rbd export-diff rbd/testimage testimage_now

这个是导出了从image创建到当前的时间点的差异数据。

虚机恢复

虚机的恢复过程使用的是刚刚上面提到的备份到本地的那些文件。

1.创建块设备映像

2.将testimage_v1融入块设备,恢复v1时间的状态

3.将testimage_v2融入块设备,恢复v2时间状态

4.在2基础上将v1_v2融入块设备,恢复至v2时间状态

上述实验是全量恢复和增量恢复的两种状态。下文将详细总结项目中增量备份和恢复的使用过程。

1. 创建块设备映像image

首先随便创建一个image,名称大小都不限制,因为后面恢复的时候会覆盖掉大小的信息

rbd create --size 2048 backups/testbacknew

2. 基于v2的时间点的快照做恢复

2.1 基于V2恢复

直接基于v2的时间点的快照做恢复

rbd import-diff testimage_v2 rbd/testbacknew
2.2 基于v1+ v1_v2数据恢复

直接基于v1的时间点的数据,和后面的增量的v1_v2数据(要按顺序导入)

rbd import-diff testimage_v1 backups/testbacknew
rbd import-diff testimage_v1_v2 backups/testbacknew

​ 实际项目当中就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据,就可以了

4. 实际使用

​ 在实际项目中使用就是,定期做快照,然后导出某个时间点快照的数据,然后导出增量的快照的数据。

例如:

备份:

​ 对所有的rbd的image做一个基础快照,然后导出这个快照的数据,然后设置每天定时做快照,导出快照时间点之间的数据,这样每天导出来的就是一个增量的数据了。

​ 设置循环周期,比如三天为一个周期。每三天循环一次,自动删除三天前的备份。

恢复:

​ 从第一个快照导入,然后按照顺序导入增量的快照即可。

ceph中rbd的增量备份和恢复的更多相关文章

  1. rbd的增量备份和恢复

    前言 快照的功能一般是基于时间点做一个标记,然后在某些需要的时候,将状态恢复到标记的那个点,这个有一个前提是底层的东西没用破坏,举个简单的例子,Vmware 里面对虚拟机做了一个快照,然后做了一些系统 ...

  2. xtrabackup之Innobackupex增量备份及恢复

    演示增量备份 #启动一个全备 innobackupex \ > --defaults-/my.cnf \ > --host=127.0.0.1 \ > --user=xtrabk \ ...

  3. mysql全备和增量备份以及恢复过程(percona工具)

    实验环境 系统环境,内核版本和xtrabackup工具版本 [root@linux-node1 mysql]# cat /etc/redhat-release CentOS Linux release ...

  4. 【mysql】使用xtrabackup在线增量备份及恢复数据库

    一.Percona Xtrabackup 简介 1.Xtrabackup  bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...

  5. 数据库增量备份,恢复innobackex

    Xtrabackup 一款强大的在线热备工具 备份过程中不锁表,适合生产坏境 Xtrabackup:C程序,支持innodb/xtradb Innobackupex:innodb/mysiam #rp ...

  6. innobackupex做MySQL增量备份及恢复【转】

    创建备份用户 mysql> grant process,reload,lock tables,replication client on *.* to 'backup'@'localhost' ...

  7. 16、xtrabackup 增量备份及恢复

    备份命令如下 备份命令如下 全量备份 #  innobackupex -p123123 /backup # ls /backup 2017-04-08_13-36-11 增量备份或差量备份 # inn ...

  8. oracle:rman恢复----通过增量备份来恢复

    试验计划:先rman进行一个0级备份,插入表相关数据,再进行level 1级增量备份,进行rman恢复 实验环境:归档模式下,oracle10.2.0.1 开始试验: 1. rman level 0级 ...

  9. MySQL备份与恢复之percona-xtrabackup实现增量备份及恢复 实例

    innobackupex 的使用方法1.完全备份 参数一是完全备份地址 完全备份到/data/mysql/back_up/all_testdb_20140612 目录下innobackupex --u ...

随机推荐

  1. 【原创】docker在Ubuntu下1小时快速学习

    前言 由于工作原因,很多情况下需要快速学习新的知识,针对docker如果从头到尾看相关书籍学习会非常慢,所以整理了下docker的常用操作,只要跟着本文学习操作,一小时就能掌握docker大部最常用分 ...

  2. Spring使用AspectJ开发AOP:基于XML

    基于XML的声明式 基于 XML 的声明式是指通过 Spring 配置文件的方式定义切面.切入点及声明通知,而所有的切面和通知都必须定义在 <aop:config> 元素中. 下面通过案例 ...

  3. 你真的了解 volatile 关键字吗?

    今天,让我们一起来探讨 Java 并发编程中的知识点:volatile 关键字 本文主要从以下三点讲解 volatile 关键字: volatile 关键字是什么? volatile 关键字能解决什么 ...

  4. 部署acfs笔记

    acfs问题分析 环境描述 某电力项目创建了两个磁盘组,分别是OGGEXT和OGGREP,利用这两个磁盘组划分了两个acfs文件系统,之后,cloud监控就一直在报磁盘空间不足,但是这两个文件系统的使 ...

  5. 安装实时查看日志工具 log.io

    官网:http://logio.org/ 一.环境 [root@centos ~]# cat /etc/system-release CentOS release 6.5 (Final) [root@ ...

  6. IIS部署WCF疑难

    1.其他信息: 无法激活请求的服务. 可能原因:1. 服务的命名空间和接口的命名空间不一致.2. 传递的参数类型没有打上[DataContract], [DataMember]标签. 2.记得这样: ...

  7. Vim 自定义补全利器 Snippet

    Vim Snippet 设置 本人是 vim 用户,可以说能不用 IDE 就不用 IDE. Snippet 是一种支持用户自定义补全的需求,在 vim 中,可以使用 UltiSnips 和 Vim-S ...

  8. F#周报2019年第45期

    新闻 邀请博客主们:2019年的F# Advent日历 宣告ML.NET 1.4 .NET Core与Jupyter笔记本 在Jupyter笔记本中使用ML.NET 用于Windows桌面的.NET ...

  9. 获取tomcat的deploy路径(用于存放用户上传的文件,如果不放在这会出现图片不能及时加载出来的问题!)

    String path =request.getSession().getServletContext().getRealPath("/“);

  10. 如何利用缓存机制实现JAVA类反射性能提升30倍

    一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> ...