Submit Search
Upload
Cinder snapshot and backup
•
Download as PPTX, PDF
•
2 likes
•
747 views
F
Felix Ma
Follow
My understanding about cinder snapshot and backup
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 10
Download now
Recommended
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
tka
构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
HonestQiao
Paveo Tweak WordPress
Paveo Tweak WordPress
Yuancheng Yang
Kafka & mafka client开发与实践
Kafka & mafka client开发与实践
志涛 李
快速打包工具Quick build
快速打包工具Quick build
tb-vertical-guide
Nova与虚拟机管理
Nova与虚拟机管理
OpenCity Community
Node js实践
Node js实践
jay li
Non-MVC Web Framework
Non-MVC Web Framework
Fred Chien
Recommended
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
tka
构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
HonestQiao
Paveo Tweak WordPress
Paveo Tweak WordPress
Yuancheng Yang
Kafka & mafka client开发与实践
Kafka & mafka client开发与实践
志涛 李
快速打包工具Quick build
快速打包工具Quick build
tb-vertical-guide
Nova与虚拟机管理
Nova与虚拟机管理
OpenCity Community
Node js实践
Node js实践
jay li
Non-MVC Web Framework
Non-MVC Web Framework
Fred Chien
pyspider 介绍 - pycon2014@北京
pyspider 介绍 - pycon2014@北京
roybinux
Android线程简介
Android线程简介
朋 王
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
Eric Xiao
深入浅出NodeJS
深入浅出NodeJS
sunzhenghua
Android开发基础
Android开发基础
ykdsg
Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!
Fred Chien
Cassandra 2.1 簡介
Cassandra 2.1 簡介
Cloud Tu
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
GO LL
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
洧杰 廖
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
wantingj
2018 8 18_play_framework
2018 8 18_play_framework
Lorn Jhu
[Flash开发者交流][2010.05.30]轻量级flash服务器开发框架 刘恒
[Flash开发者交流][2010.05.30]轻量级flash服务器开发框架 刘恒
Shanda innovation institute
Node.js 進攻桌面開發
Node.js 進攻桌面開發
Fred Chien
超。光速 網站最佳化實戰 -twMVC#8
超。光速 網站最佳化實戰 -twMVC#8
twMVC
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
美团技术团队
Koa 正在等一個人
Koa 正在等一個人
Fred Chien
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Joseph Chiang
Wang Chao
Wang Chao
The Linux Foundation
Intro-to-SeaJS
Intro-to-SeaJS
lifesinger
Sery lvs+keepalived
Sery lvs+keepalived
colderboy17
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
Jason Zheng
More Related Content
What's hot
pyspider 介绍 - pycon2014@北京
pyspider 介绍 - pycon2014@北京
roybinux
Android线程简介
Android线程简介
朋 王
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
Eric Xiao
深入浅出NodeJS
深入浅出NodeJS
sunzhenghua
Android开发基础
Android开发基础
ykdsg
Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!
Fred Chien
Cassandra 2.1 簡介
Cassandra 2.1 簡介
Cloud Tu
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
GO LL
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
洧杰 廖
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Will Huang
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
wantingj
2018 8 18_play_framework
2018 8 18_play_framework
Lorn Jhu
[Flash开发者交流][2010.05.30]轻量级flash服务器开发框架 刘恒
[Flash开发者交流][2010.05.30]轻量级flash服务器开发框架 刘恒
Shanda innovation institute
Node.js 進攻桌面開發
Node.js 進攻桌面開發
Fred Chien
超。光速 網站最佳化實戰 -twMVC#8
超。光速 網站最佳化實戰 -twMVC#8
twMVC
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
美团技术团队
Koa 正在等一個人
Koa 正在等一個人
Fred Chien
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Joseph Chiang
Wang Chao
Wang Chao
The Linux Foundation
Intro-to-SeaJS
Intro-to-SeaJS
lifesinger
What's hot
(20)
pyspider 介绍 - pycon2014@北京
pyspider 介绍 - pycon2014@北京
Android线程简介
Android线程简介
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
深入浅出NodeJS
深入浅出NodeJS
Android开发基础
Android开发基础
Java script 全面逆襲!使用 node.js 打造桌面環境!
Java script 全面逆襲!使用 node.js 打造桌面環境!
Cassandra 2.1 簡介
Cassandra 2.1 簡介
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
Npm 套件管理 & 常用開發工具介紹
Npm 套件管理 & 常用開發工具介紹
2018 8 18_play_framework
2018 8 18_play_framework
[Flash开发者交流][2010.05.30]轻量级flash服务器开发框架 刘恒
[Flash开发者交流][2010.05.30]轻量级flash服务器开发框架 刘恒
Node.js 進攻桌面開發
Node.js 進攻桌面開發
超。光速 網站最佳化實戰 -twMVC#8
超。光速 網站最佳化實戰 -twMVC#8
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
Koa 正在等一個人
Koa 正在等一個人
Node.js 入門 - 前端工程開發實務訓練
Node.js 入門 - 前端工程開發實務訓練
Wang Chao
Wang Chao
Intro-to-SeaJS
Intro-to-SeaJS
Similar to Cinder snapshot and backup
Sery lvs+keepalived
Sery lvs+keepalived
colderboy17
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
Jason Zheng
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
haiyuan ning
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
ykdsg
Vulkan introduction
Vulkan introduction
Jiahan Su
基于Fuel的超融合一体机
基于Fuel的超融合一体机
EdwardBadBoy
Maven初级培训
Maven初级培训
Cody Zhang
NF core-workflow
NF core-workflow
ChenzheLuo
0118 Windows Server 2008 的伺服器核心 (Server Core)
0118 Windows Server 2008 的伺服器核心 (Server Core)
Timothy Chen
Linux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
Kenny (netman)
Pan Tilt IP Camera
Pan Tilt IP Camera
艾鍗科技
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
OpenCity Community
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
涛 吴
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
人人网开发一站式体验
人人网开发一站式体验
zhen chen
数据库与ssd的实践与探索-2011数据库技术大会
数据库与ssd的实践与探索-2011数据库技术大会
freezr
Lamp优化实践
Lamp优化实践
zhliji2
Beyond rails server
Beyond rails server
Michael Chen
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
Laird Cheng
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
裝機安 Angelo
Similar to Cinder snapshot and backup
(20)
Sery lvs+keepalived
Sery lvs+keepalived
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
使用Rpm&yum进行基础软件管理
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
Vulkan introduction
Vulkan introduction
基于Fuel的超融合一体机
基于Fuel的超融合一体机
Maven初级培训
Maven初级培训
NF core-workflow
NF core-workflow
0118 Windows Server 2008 的伺服器核心 (Server Core)
0118 Windows Server 2008 的伺服器核心 (Server Core)
Linux network monitoring hands-on pratice
Linux network monitoring hands-on pratice
Pan Tilt IP Camera
Pan Tilt IP Camera
Track2 -刘继伟--openstack in gamewave
Track2 -刘继伟--openstack in gamewave
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
人人网开发一站式体验
人人网开发一站式体验
数据库与ssd的实践与探索-2011数据库技术大会
数据库与ssd的实践与探索-2011数据库技术大会
Lamp优化实践
Lamp优化实践
Beyond rails server
Beyond rails server
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
使用 Load Balancer 與 Redis 部署 LAMP Server 高併發架構 - Global Azure Taiwan 20200425 ...
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
【VM保護備份專題】Dell Power Protect Data Manager (PPDM) 詳解TSDM機制
Cinder snapshot and backup
1.
BC-EC 马琪 felix23ma@gmail.com 2015.10
2.
Agenda ❖ Cinder架构 ❖ Snapshot和backup ❖
Cinder中的snapshot和backup ❖ Code
3.
Cinder 架构 ❖ Block
service(移动硬盘) ❖ Block driver ❖ LVM ❖ CEPH ❖ EBS ❖ API volume/backup/snapshot API Q3: Snapshot和backup有啥区别?
4.
Snapshot和Backup ❖ 字面含义是相似的 -
对用户来说都是备份 ❖ 从driver理解(只研究了lvm/ceph) ❖ 只有snapshot命令,没有backup命令 ❖ LVM:lvcreate --snap -n my_snap --size 1G /dev/vg/orig_lv ❖ Ceph:rbd snap create my_pool/my_image@my_snap ❖ snapshot原理 - 很多driver使用COW方式 ❖ backup怎么做(full backup) ❖ LVM (cinder create volume from snap) 1. create snap 2. create new_lv 3. dd if=/dev/snap of=/dev/new_lv ❖ Ceph 1. create snap 2. protect snap 3. clone snap to new image 4. flatten new image
5.
Cinder中的Snapshot和Backup ❖ 特点 ❖ 用法 ❖
snapshot:临时备份、做实验性/破坏性操作之前 ❖ backup: 永久备份、定期备份 速度 占用空间 可靠性 用途 snapshot 快 小 不可靠 创建新卷; 不可用于恢复 backup 慢 大(需对象存储) 可靠 不可创建新卷; 可用于恢复
6.
Cinder Snapshot的实现 ❖ Driver实现(snapshot
create) ❖ LVM:构造命令:lvcreate --name lv_snap_name --snapshot -L source_lv_name ❖ Ceph:调用Ceph Python library rbd.py中的create_snap/protect_snap方法 ❖ Code ❖ LVM cinder/volume/drivers/lvm.py create_snapshot cinder/brick/local_dev/lvm.py create_lv_snapshot ❖ Ceph cinder/volume/drivers/rbd.py create_snapshot /usr/lib/python2.7/dist-packages/rbd.py create_snap/protect_snap 戳这儿:灏哥的代码分析
7.
Cinder Backup的实现 流程: 1. cinder/api/contrib/backup.py的create
-> self.backup_api.create 2. cinder/backup/api.py的create -> cinder/backup/rpcapi.py的create_backup,发送rpc请求 到rabbitmq server 3. cinder/backup/manager.py中的create_backup方法处理rpc请求 略去细节,第3步最终的处理方法是: backup_service = self.service.get_backup_driver(context) self._get_driver(backend).backup_volume(context, backup, backup_service) Note: ❖ backup_service表示cinder-backup的对象存储的后端,如Ceph,Swift ❖ backup_volume不是由cinder-backup定义,而是定义在cinder/volume/drivers/xxx.py中 ❖ 实际上是source和destination的关系: ❖ source:调用cinder-volume block driver的backup_volume方法读取block data, 如:cinder/volume/drivers/lvm.py backup_volume ❖ destination:调用cinder-backup对象存储的driver的backup方法保存block data, 如:cinder/backup/drivers/ceph.py backup
8.
Cinder Incremental Backup BP:https://blueprints.launchpad.net/cinder/+spec/incremental-backup Spec:https://github.com/openstack/cinder-specs/blob/master/specs/kilo/incremental-backup.rst ❖
完全依赖于cinder-backup对象存储driver的实现 ❖ Ceph ❖ source volume为RBD,做增量备份(不考虑--incr参数);失败,做full backup ❖ 类似使用rbd export-diff/import-diff --from-snap (说明) ❖ source volume为非RBD,做full backup(不考虑--incr参数) ❖ Swift 调用cinder/backup/chunkeddriver.py中的backup
9.
Cinder Incremental Backup
(cont’d) 全量备份一般过程(切片、计算、上传): 1. 对volume data切分,每次读入chunk_size_bytes大小的数据; 2. 对读入的数据,每sha_block_size字节的数据做SHA计算,保存计算结果; 3. 将chunk_size_bytes的数据上传到对象存储上,形成一个对象; 4. 依次循环,至所有数据备份完毕 对象存储上的文件: ❖ volume data对象 ❖ metadata:记录backup_name,volume_id,volume_meta等 ❖ sh256file:按照顺序记录了SHA计算的结果 增量备份一般过程: 1. 获得上次备份的sh256file 2. 对volume data切分,每次读入chunk_size_bytes大小的数据; 3. 对读入的数据,每sha_block_size字节的数据做一次SHA计算,和上次备份的结果进 行比较; 4. 如果相同,则只保存SHA计算结果不上传数据,否则保存计算结果并上传数据
10.
Thank you.
Download now