前言

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

ceph里面也有快照的功能,同样的,在这里的快照是用来保存存储系统上的状态的,数据的快照能成功恢复的前提是存储系统是好的,而一旦存储系统坏了,快照同时会失效的,本篇文章利用ceph的快照去实现一个增量的备份功能,网上也有很多这个脚本,这里主要是对里面细节做一个实践,具体集成到一套系统里面去,自己去做一个策略就行了,总之多备份一下,以备不时之需,并且也可以实现跨机房的增量备份,这个在某些云计算公司已经实现了,这样一旦发生故障的时候,能够把损失减到最小

快照的创建和数据的导出

上图是一个快照的创建和导出的过程,这里详细的描述下这些操作

创建快照

rbd snap create testimage@v1
rbd snap create testimage@v2

这两个命令是在时间点v1和时间点v2分别做了两个快照

rbd export-diff rbd/testimage@v1 testimage_v1

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

rbd export-diff rbd/testimage@v2 testimage_v2

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

rbd export-diff rbd/testimage@v2 --from-snap v1 testimage_v1_v2

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

这个地方上面的导出的数据:

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

rbd export-diff rbd/testimage testimage_now

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

快照的数据恢复

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

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

rbd create testbacknew --size 1

现在假如想恢复到v2那个快照的时间点,那么可以用两个方法

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

rbd import-diff testimage_v2 rbd/testbacknew

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

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

到这里数据就已经恢复了

如何利用这个

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

今天对所有的rbd的image做一个基础快照,然后导出这个快照的数据,然后从今天开始,每天晚上做一个快照,然后导出快照时间点之间的数据,这样每天导出来的就是一个增量的数据了,在做恢复的时候,就从第一个快照导入,然后按顺序导入增量的快照即可,也可以定期做一个快照,导出完整的快照数据,以防中间的增量快照漏了,然后就是要注意可以定期清理快照,如果是做备份的模式,在导入了快照数据后,也可以清理一些本地的数据,本地数据做异地机房复制的时候也可以做一下数据的压缩,来减少数据量的传输

相关文章

变更记录

Why Who When
创建 武汉-运维-磨渣 2016-06-22
修改错别字 武汉-运维-磨渣 2016-06-22
修改错别字 武汉-运维-磨渣 2017-12-26

最新文章

  1. 货架工程项目之js dom实现项目工程进度图
  2. Lintcode 175. 翻转二叉树
  3. js正则表达式中test,exec,match方法的区别
  4. js 循环切换图片
  5. struts2获取web元素(request、session、application)
  6. ACM/ICPC 之 数论-素数筛选法 与 "打表"思路(POJ 1595)
  7. android-BaseAdapter自定义控件深刻理解
  8. jquery mobile 和phonegap开发总结之三跨域加载页面
  9. 为什么在Mac中无法用k web运行ASP.NET 5程序
  10. mysql btree与hash索引的适用场景和限制
  11. SQL跨服务器操作语句
  12. 信息安全实验三:privilege-separation
  13. 熬之滴水穿石:Spring--精简的J2EE(6)
  14. 【Vue】浅谈Vue(一):从模板语法数据绑定、指令到计算属性
  15. Animations in UWP Community Toolkit - Overview
  16. lr-web services协议
  17. mysql 开发进阶篇系列 9 锁问题 (Innodb 行锁实现方式)
  18. peewee 事物 回滚
  19. JavaScript基础笔记(一)基本概念
  20. jupyter notebook远程服务器终端连接

热门文章

  1. 【C语言/C++编程学习笔记】你的第一个Windows程序!高级操作~
  2. 如何使用 Gin 和 Gorm 搭建一个简单的 API 服务 (二)
  3. docker-docker-compose 安装
  4. 【Azure 批处理 Azure Batch】在Azure Batch中如何通过开始任务自动安装第三方依赖的一些软件(Windows环境)
  5. Linux基础命令列表
  6. unordered_set
  7. pxe装机部署
  8. xlrd加载Excal表格编码格式的问题
  9. 上午小测1 B.序列 哈希表+数学
  10. Kubernetes 使用 Ingress 实现灰度发布功能