Restore Volume 操作 - 每天5分钟玩转 OpenStack(60)
前面我们 backup 了 voluem,今天我们将讨论如何 restore volume。
restore 的过程其实很简单,两步走:
在存储节点上创建一个空白 volume。
将 backup 的数据 copy 到空白 voluem 上。
下面我们来看 restore 操作的详细流程:
向 cinder-api 发送 restore 请求
cinder-api 发送消息
cinder-scheduler 挑选最合适的 cinder-volume
cinder-volume 创建空白 volume
cinder-backup 将 backup 数据 copy 到空白 volume 上
我们先来看第 1 步。
向 cinder-api 发送 restore 请求
客户(可以是 OpenStack 最终用户,也可以是其他程序)向 cinder-api 发送请求:“请 restore 指定的 backup。这里我们将 restore 之前创建的 backup。
目前 restore 只能在 CLI 中执行。
cinder-api 接收到 restore 请求。日志文件在 /opt/stack/logs/c-api.log。
这里看到 cinder-api 转发请求,为 restore 创建 volume。 之后 cinder-scheduler 和 cinder-volume 将创建空白 volume,这个过程与 create volume 一样,不再赘述。
接下来分析数据恢复的过程。 首先,在 cinder-api 日志中可以看到相关信息。
这里注意日志中的 volume_id 和 backup_id 与前面 backup-restore 命令的输出是一致的。
下面来看 cinder-backup 是如何恢复数据的。
cinder-backup 执行 restore 操作
日志为 /opt/stack/logs/c-vol.log。
启动 restore 操作,mount NFS。
读取 container 目录中的 metadata。
将数据解压并写到 volume 中。
恢复 volume 的 metadata,完成 restore 操作。
此时,在 GUI 中已经可以看到 restore 创建的 volume。
以上就是 volume restore 的分析,下一节我们讨论如何将 volume 作为 instance 的启动盘。
相关文章:

gdb 查找动态库方法
当GDB无法显示so动态库的信息或者显示信息有误时,通常是由于库搜索路径错误导致的,可使用set sysroot、set solib-absolute-prefix、set solib-search-path来指定库搜索路径。 1. set sysroot 与 set solib-absolute-prefix 是同一条命令,实…

【ACM】杭电OJ 1004
题目链接:杭电OJ 1004 运行环境:Dev-C 5.11 思路: 先把先把num数组全部赋值为1;第一个颜色单独输入,从第二个开始,需要与前面的进行比较,如果前面有相同的颜色,则在目前的num[i]上…
zabbix 监控mysql(实例)
修改zabbix_agentd.conf UnsafeUserParameters1 UserParametermysql.version,mysql -V UserParametermysql.status[*],/usr/local/zabbix/share/zabbix/alertscripts/chk_mysql.sh $1 UserParametermysql.ping,mysqladmin ping | grep -c alive 设置mysql的链接 ln -s /data/my…

linux查看系统版本信息命令
几种查看Linux版本信息的方法: 1. uname -a 2. cat /proc/version 3. cat /etc/issue 4. lsb_release -a 详解 lsb_release -a 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如: 1. [root3.5.5Biz-46 ~]# lsb_releas…

【ACM】杭电OJ 1005
题目链接:杭电OJ 1005 超时代码如下(而且开辟的数组空间大小不够): #include <stdio.h> int m[100000]; int f(int n,int a,int b) {m[1] 1;m[2] 1;for (int i 3; i < n; i){m[i] (a * m[i - 1] b * m[i - 2]) % 7;}return …

PostgreSQL:Java使用CopyManager实现客户端文件COPY导入
在MySQL中,可以使用LOAD DATA INFILE和LOAD DATA LOCAL INFILE两种方式导入文本文件中的数据到数据库表中,速度非常快。其中LOAD DATA INFILE使用的文件要位于MySQL所在服务器上,LOAD DATA LOCAL INFILE则使用的是客户端的文件。 LOAD DATA I…

c, c++函数名编译符号修饰符说明
C 编译器的函数名修饰规则 函数名字修饰(Decorated Name)方式 函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串。用来指明函数的定义或原型。 LINK程序或其它工具有时须要指定函数的名字修饰来定位函数的正确…

VS Code - Debugger for Chrome调试JavaScript的两种方式
VS Code - Debugger for Chrome调试JavaScript的两种方式 最近由于出差的缘故,博客写的不是很多,一直想写一篇VS Code - Debugger for Chrome相关的文章,没想到一直拖到了今天。VS Code 开源以后确实在社区得到了很多人的支持,当中…

【ACM】杭电OJ 2018
题目链接:杭电OJ 2018 从n>4开始,每一年的牛的数量前一年的牛的数量三年前的牛的数量 问:为什么是三年前? 答:假设三年前有一头小牛出生,出生的那一年即为第一年,到了第四年,即…

python 帮助文档、自我解释
现在让我们以交互方式使用 Python 来开始研究。当我们从命令行启动 Python 时,就进入了 Python shell,在这里可以输入 Python 代码,而且立刻会从 Python 解释器获得响应。 清单 1. 以交互方式启动 Python 解释器 Python 2.7.15rc1 (default, …

RCF远程调用框架
介绍 RCF(远程调用框架)是一个C IPC框架,提供了一种在C 程序中实现进程间通信的简单而一致的方法。它基于强类型的客户端/服务器接口的概念,这是基于IDL的中间件(如CORBA和DCOM)的用户熟悉的概念。然而&am…

Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习
#codingutf-8 __author__ Administrator#Python变量类型#Python数字,python支持四种不同的数据类型 int整型 long长整型 float浮点型 complex复数 var1 10; #表示整型 var2 678L #表示长整型 var3 12.34;#表示浮点型 var4 123j #复数 var5 12345j #复数print(…

【ACM】杭电OJ 2020(排序)
题目链接:杭电OJ 2020 排序可以有冒泡排序,选择排序,或者直接调用函数。 下面是选择排序: #include <stdio.h> #include <math.h> int main () {int n,i,j,t,a[100],temp;while(scanf("%d",&n)!EOF)…

使用Novell.Directory.Ldap.NETStandard在.NET Core中验证AD域账号
Novell.Directory.Ldap.NETStandard是一个在.NET Core中,既支持Windows平台,又支持Linux平台,进行Windows AD域操作的Nuget包。 首先我们新建一个.NET Core控制台项目:NetCoreLdap,并下载如下Nuget包: Nove…

android AIDL IPC深入分析
深入分析AIDL原理 博客分类: Android 在上一篇文章(Service使用方式)中,介绍了Android进程间通信(IPC)的使用,并给出了一个示例。但并没有深入分析aidl是怎样可以做到进程间通信的,…

xml常用操作(js、sql、vb)
我们经常会用到xml操作,如下介绍了js、sql、vb等对xml的操作。 JS创建xml对象 //创建对象 function getDataXML() {var objTds $("TEXTAREA");var count objTds.length;var jsonData;var xmlDoc new ActiveXObject("Microsoft.XMLDOM");//创…
【ACM】杭电OJ 2019
可以用链表写,也可以用顺序表写: 下面是链表的AC代码: #include <stdio.h> #include <stdlib.h> typedef struct node {int info;struct node* next; }N; N* init() {return NULL; } N* creat(N* head,int n) {int i,x;N *p, *…

Nancy in .Net Core学习笔记 - 初识Nancy
原文:Nancy in .Net Core学习笔记 - 初识Nancy前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合.NET Core学习总结了一下。 注: 本文中大部分内容都是对官网文档的…

rpath和runpath的区别
考虑翻译Qt官方blog中的RPATH and RUNPATH这篇文章,在继续之前,我需要先验证自己的理解是正确的,至少能自圆其说,能说服自己。 用例子说话 二进制 对应源码 有一个程序 a.out main.c 需要加载插件A libA.so liba…
scanf(%s,a)和gets(a)的差别
gets()和scanf()的区别在于输入的字符串是否中间有空格:对于前者,只有遇到"\n"时才停止输入,而对于后者,出现"\n"或空格都停止输入。

阿里注册中心nacos使用整合Dubbo-原创
阿里注册中心nacos是今年开源的框架,一开始以为就是个zk。后面看了图才明白他对标的竟然是consul\eureka,最重要是完美支持dubbo。我想今年开源它也是别有用意 。(目前nacos0.7版本) Dubbo 融合 Nacos 成为注册中心 Nacos 作为 Du…

UBUNTU adb连接android设备
1sudo vi /etc/udev/rules.d/70-android.rules 2最新修改方法,不用去看设备的ID,直接在rules.d下增加一个文件51-android.rules,内容为: SUBSYSTEM"usb" ENV{DEVTYPE}"usb_device", MODE"0666" …

jetty9请求form表单太小限制
报错:java.lang.IllegalStateException: Form too large: 201975 > 200000解决:vi jetty.xml<Configure id"Server" class"org.eclipse.jetty.server.Server">在Server这行下面增加以下代码<!-- guowang add --><…

【ACM】杭电OJ 2037
题目链接:杭电OJ 2037 先把b[i]进行排序,然后,b[i]与a[i1]进行比较。 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <set> #include <…

第二十章:异步和文件I/O.(十三)
通过该开销,可以开始实际编写应用程序。 TextFileAsyncPage的XAML文件与TextFileTryoutPage相同,但必须将代码隐藏文件设置为使用异步文件I / O方法。 必须在此处捕获文件I / O函数中可能发生的任何异常,这意味着任何可以抛出异常的方法必须与…

shell [] [[ ]] {}区别
一、小括号,圆括号() 1、单小括号 () ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命…
【C++】用指针做函数参数
此篇博客程序运行环境为:VS2017!!! 函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。 它的作用是将一个变量的的地址传给被调用函数的形参。 e.g. 输入两个数,按由大到小顺序输出 #…

JAVA面向对象-----final关键字
JAVA面向对象—–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率。1:如果需要提高计算精度,就需要修改每个方法中圆周率。 4…

win7安装mysql-8.0.13-winx64
这里展示一下,由于需要安装一个版本测试一下数据,其实就是超简单的啦。 下包 注:https://dev.mysql.com/downloads/mysql/ 解压与配置 [mysqld] basedirC:\\Users\\hp\\Downloads\\mysql-8.0.13-winx64 datadirC:\\Users\\hp\\Downloads\\mysql-8.0.13-w…

Http 请求头中的 Proxy-Connection
平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头。之前一直没去了解什么情况下会产生它,也没去了解它有什么含义。最近看完《HTTP 权威指南》第四章「连接管理」和第六章「代理」之后,终于搞明白了这是因为给浏览器设…