cinder-backup详细介绍
首先介绍Snapshot
snapshot可以为volume创建快照,快照中保存了volume当前的状态,此后可以通过snapshot回溯
主要采用了Copy On Write算法。进行快照时,不牵涉到任何档案复制动作,它所作的只是通知服务器将目前有数据的磁盘区块全部保留起来,不被覆写。接下来档案修改或任何新增、删除动作,均不会覆写原本数据所在的磁盘区块,而是将修改部分写入其它可用的磁盘区块中。
COW技术在很多场景都有应用,下图为编程中创建子进程时采用COW技术的场景(思想一致):
只读情况:
针对上述场景,当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间,如下:
写情况:
资源的复制只有在需要写入的时候才进行,此前,是以只读方式共享,使实际的拷贝被推迟到实际发生写入的时候。
再回到volume的snapshot中,根据上述其它场景的例子,此处的volume即对应上述的物理空间,而snapshot相当于指向虚拟空间的指针,是依赖于volume的,无法独立存在。
Backup相关
Backup与Snapshot区别
1. snapshot依赖源volume,不能独立存在;而backup不依赖vilume,即便源volume不存在了,仍可以restroe。
2. snapsot与源volume通常存放在一起,由同一个volume provider管理;backup存放在独立的备份设备中,有自己的备份方案和实现。
3. backup具有容灾功能;而snapshot则提供volume provider内便捷的回溯功能。
分析backup创建流程
以NFS为backend时:
1. 启动backup操作,mount NFS
2. 创建volume的临时快照
3. 创建存放backup的container目录
4. 对临时快照数据压缩并保存到container目录中
5. 创建保存sha256(加密)文件和metadata文件
6. 删除临时快照
以LVM为backend时:
1. 创建volume的临时快照
2. 创建一个设备new_lv
3. 依据快照将数据从源卷拷贝到new_lv中
4. 删除临时快照
以ceph为backend时:
1. 判断源卷是否为RBD卷,如果源卷为RBD卷,则使用增量备份,否则使用全量备份。
Ceph作为backend
按照cinder-volume所用的backend分两种情况介绍:一种是使用非RBD作为backend,另一种是使用RBD作为backend。
1. cinder-volume使用非RBD作为backend
这种情况下比较简单,并且仅支持全量备份。在创建备份时,首先创建一个base backup image,然后每次从源卷读入chunk_size(即backup_ceph_chunk_size,默认是128MB)大小的数据,写入到backup image,直到把整个源卷都复制完。注意,这里不支持对chunk的压缩。因为volume上的数据都会写入到创建的这个backup image上去,也就是说volume和backup是一对一的,因此也不需要metadata文件。
2. cinder-volume使用RBD作为backend
在这种情况下,即cinder-volume和cinder-backup都是用rbd作为backend,是支持增量备份的。增量备份的实现完全依赖于ceph处理差量文件的特性,所谓ceph处理差量文件的能力,即ceph可以将某个rbd image不同时刻的状态进行比较,并且将其差量导出成文件。另外,ceph也可以将这个差量文件导入到某个image中。
差量文件的生成与导入
生成差量文件的三种方式
三种方式对应命令及简要描述:
rdb export-diff volumes/image1 diff1 | image1创建时到此时的diff |
rbd export-diff volumes/image1@snap1 diff2 | image1创建时与snap1的diff |
rbd export-diff volumes/image1-from-snap snap1 diff3 |
image1此时(snap2)与snap1的diff |
导入差量文件的三种方式(前提,先创建一个image2,然后将diff文件导入image2):
rbd import-diff diff1 volumes/image2 | image2和生成diff1时的image1相同 |
rbd import-diff diff2 volumes/image2 | image2和创建snap1时的image1相同 |
rbd import-diff diff3 volumes/image2 | image2和创建snap1后(创建snap2时)的image1相同 |
备份的实现
依据上述差量文件的生成与导入的操作特性实现备份,这里主要说明ceph增量备份的实现:
备份的恢复
diff方式的恢复
利用ceph的特性,首先找到第一次备份时创建的base image和所选备份的snapshot,利用上述第二种生成差量文件的方式生成diff文件,将diff文件导入到新的volume即完成volume恢复。
1)获取恢复备份的起点
2)如果能则进行增量恢复
这里进行增量恢复的条件如下
a. 要恢复的卷必须是rbd
b. 要恢复的卷必须没有任何内容
c. 备份卷必须存在
d. 备份卷的恢复点(快照)必须存在
e. 要恢复的卷和备份卷的源卷是不同的
3)如果不能,则进行全量恢复
非diff方式的恢复
全量恢复,每次从备份读入chunk_size的数据,写入到对应的volume中,直到复制完整个备份。没有metadata文件,也不支持解压。
cinder-backup详细介绍的更多相关文章
- WDCP是什么 关于WDCP的详细介绍
WDCP是WDlinux Control Panel的简称,是一套用PHP开发的Linux服务器管理系统以及虚拟主机管理系统,,旨在易于使用Linux系统做为我们的网站服务器,以及平时对Linux服务 ...
- LVS详细介绍以及遇到的坑
LVS详细介绍以及遇到的坑 一,概述 本文介绍了我搭建LVS集群的步骤,并且在使用LVS(Linux Virtual Server)过程中遇到的问题和坑, 二,LVS简单介绍 大家都知道,LVS中文意 ...
- cinder backup ceph的配置和使用
Backup 是将 volume 备份到别的地方(备份设备),将来可以通过 restore 操作恢复. 初看 backup 功能好像与 snapshot 很相似,都可以保存 volume 的当前状态, ...
- 详细介绍Redis的几种数据结构以及使用注意事项(转)
原文:详细介绍Redis的几种数据结构以及使用注意事项 1. Overview 1.1 资料 <The Little Redis Book>,最好的入门小册子,可以先于一切文档之前看,免费 ...
- kvm详细介绍
KVM详解,太详细太深入了,经典 2016-07-18 19:56:38 分类: 虚拟化 原文地址:KVM详解,太详细太深入了,经典 作者:zzjlzx KVM 介绍(1):简介及安装 http:// ...
- 多图文,详细介绍mysql各个集群方案
目录 多图文,详细介绍mysql各个集群方案 一,mysql原厂出品 二,mysql第三方优化 三,依托硬件配合 四,其它 多图文,详细介绍mysql各个集群方案 集群的好处 高可用性:故障检测及迁移 ...
- [No0000A7]批处理经常用到的变量及批处理>NUL详细介绍
绝对路径是指调用绝对的程序位置的路径,例如: start C:\Windows\test.exe 相对路径是文件改变路径以后还会按照变量的路径所在位置去调用,例如: start %WINDIR%\te ...
- linux配置网卡IP地址命令详细介绍及一些常用网络配置命令
linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...
- _MSC_VER详细介绍
_MSC_VER详细介绍 转自:http://www.cnblogs.com/braver/articles/2064817.html _MSC_VER是微软的预编译控制. _MSC_VER可以分解为 ...
- php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系
以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...
随机推荐
- 在FP与DDD的道路上越走越远
托辞 最近一口气读了若干本FP方面的书,可人是越来越懒了,要整理个什么东西却也没有那个精力,所以简单扔几张图,算是给自己一个提醒吧. 在此期间,我用并不纯熟的Scala和Groovy练了一把手.虽然只 ...
- [Math]Pi(2)
[Math]Pi(2) 接着前一篇,[Math]Pi(1),下面继续介绍Leonard Euler求Pi的第二个公式. 其实这个公式也是来源一个古老的问题,Basel problem . 证法1.麦克 ...
- vue 之node.js 02
文档 铺垫 以前网页制作web1.0 如今是web2.0-->交互式操作 前端工具 grunt gulp webpack :打包机 作用:将项目中的js,css,img,font,html等进行 ...
- baos bais 意义
import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOut ...
- Eclipse远程调试Java程序
1. 在服务器上运行jar包时加入参数 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address= 2. 在Eclipse中操作 ...
- linux下环境变量PATH设置错误的补救
本文转自: http://blog.clzg.cn/blog-614449-740527.html 之前不小心在/etc/profile中添加了错误的PATH变量,导致几乎所有的系统命令无法使用 ...
- ubuntu 下jdk安装配置
下载jdk-8u71-linux-x64.tar.gz 创建jvm文件夹(/usr/lib/jvm) sudo mkdir /usr/lib/jvm 创建jvm文件夹(/usr/lib/jvm) su ...
- bzoj 4447 小凸解密码
bzoj 4447 小凸解密码 先将原始状态的 \(B\) 处理出来,可以发现,若不修改,则每次指定的起始位置不同,对这个环 \(B\) 带来的影响只有 \(B_0\) 不同,即每次 \(B_0=A_ ...
- POJ3696 The Windy's 【网络流】
#include<iostream> #include<vector> #include<cstring> #include<algorithm> #i ...
- WordCount运行详解
1.MapReduce理论简介 1.1 MapReduce编程模型 MapReduce采用"分而治之"的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然 ...