nova Evacuate
作用:当一个 node down 掉后,在新的 node 上根据其 DB 中保存的信息重新 build down node 上虚机。这个往往在虚机 HA 方案中用到。它尽可能地将原来的虚机在新的主机上恢复:
- 虚机的配置:从 DB 中获取,包括 image,block,network 等
- 虚机的数据:如果使用共享存储,则使用共享存储上的虚机数据;如果不使用共享存储,则无法恢复数据
- 内存状态:无法恢复
因此,HA 方案中,应该尽可能地将虚机的数据文件放在共享存储上,否则,恢复出来的虚机的价值非常有限。
Nova CLI:usage: nova evacuate [--password <password>] [--on-shared-storage] <server> [<host>]
要求:
(1)必须指定和虚机的 host 不同的 host,否则将报错“The target host can't be the same one”。
(2)虚机的host 必须处于不可用状态即nova compute服务的状态为down,否则将报错 “Compute service of compute2 is still in use.”
(3)可以指定新的 admin password,不指定的话,nova 将生成一个随机密码,如果是共享存储则不能设置新的密码。
(4)参数 on-shared-storage 表示虚机的 instance folder 是不是在共享存储上。如果不设置则让driver自己判断。
主要步骤:
(1)在做完以上各种参数检查后,调用 Conductor 的 方法:
return self.compute_task_api.rebuild_instance(context, instance=instance, new_pass=admin_password, injected_files=None,
image_ref=None, orig_image_ref=None, orig_sys_metadata=None, bdms=None这些信息会从DB中获取, recreate=True,
on_shared_storage=on_shared_storage, host=host)
如果 host 为none 的话,conductor 将调用 scheduler 的方法选择一个 host。
(2)接着调用 nova compute 的 rebuild_instance 方法。该方法从系统(DB)中获取已有的数据,然后根据这些已有的 metadata 重新构造domain。“A 'rebuild' effectively purges all existing data from the system and remakes the VM with given 'metadata' and 'personalities'.”
- 获取 image_ref,再获取 image meta
- 获取 network_info 并在新的 host 上构造网络
- 获取 BlockDeviceMappingList
- 获取 block_device_info
(3)然后调用 virt driver 的 rebuild 方法,但是 libvirt 没有实现该方法,转而调用 _rebuild_default_impl 方法。该方法:
- 从 volume 端断开其与原来 host 的连接
- 调用 driver.spawn 方法构造新的 domain,依次创建 image(如果 on_shared_storage = false 的话,则重新下载 image, 构造 instance folder;如果 on_shared_storage = true 的话,则直接使用共享存储上的 instance folder。这也可见使用共享存储的优势),network 和 domain,并设置 domain 的状态和之前一致。
(4)在坏了的 host 被重启后,nova-compute 服务调用 _destroy_evacuated_instances 方法来找到 evacuated instances 并将它们删除:
- 调用 libvirt 找到该 host 上所有 domains,然后在 nova db 中一一查找其状态,过滤出 “deleted” 为 false 的 domains
filters = {
'source_compute': self.host,
'status': 'accepted',
'migration_type': 'evacuation',
} - 如果instance.host 不是本机,而且 instance.task_state 不是
{ MIGRATING,RESIZE_MIGRATING,RESIZE_MIGRATED,RESIZE_FINISH} 之一,则删除该
domain,以及 network,block device 以及 instance folder。
总之,在使用共享存储的情况下,evacuate 出来的新的 domain 除了临时盘上的数据外,它和之前的 domain 的数据是一样的了,但是内存状态除外。
http://www.cnblogs.com/sammyliu/p/4571209.html
nova Evacuate的更多相关文章
- Nova 操作汇总(限 libvirt 虚机) [Nova Operations Summary]
本文梳理一下 Nova 主要操作的流程. 0. Nova REST-CLI-Horizon 操作对照表 Nova 基本的 CRUD 操作和 extensions: # 类别 Nova V2 REST ...
- 理解 OpenStack 高可用(HA)(1):OpenStack 高可用和灾备方案 [OpenStack HA and DR]
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- 《转》OpenStack Live Migration
This post is based assumption that KVM as hypervisor, and Openstack is running in Grizzly on top of ...
- Openstack虚拟机在线迁移(Live Migration)
Openstack VM live migration can have 3 categories: -Block live migration without shared storage -Sha ...
- OpenStack高可用方案及配置
1 OpenStack高可用介绍 1.1 无状态和有状态服务 无状态服务指的是该服务接收的请求前后之间没有相关关系,接收并处理完该请求后不保存任何状态,在OpenStack的服务中常见的无状态服务 ...
- openStack灾备方案说明
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1) OpenStack 高可用方案概述 (2) Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3 ...
- openStack高可用性和灾备方案
1. 基础知识 1.1 高可用 (High Availability,简称 HA) 高可用性是指提供在本地系统单个组件故障情况下,能继续访问应用的能力,无论这个故障是业务流程.物理设施.IT软/硬件的 ...
- O043、计算节点宕机了怎么办
参考https://www.cnblogs.com/CloudMan6/p/5562131.html Rebuild 可以恢复损坏的instance .那如果是宿主机坏了怎么办呢?比如硬件故障或者 ...
- drbd虚拟机宕机恢复方法
问题现象 云南计算节点YN-ec-compute-19因系统盘损坏宕机且操作系统无法恢复,其上本地虚拟机无法疏散且无法迁移 拟采用drbd备份的数据对compute19上的虚拟机进行恢复 恢复方法 1 ...
随机推荐
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)
(四)列表附件 列表的附件也是文件系统的一部分,它依附于普通列表的列表条目之上(文档库没有附件),它的操作在一些地方和文档库中文档的操作非常类似. 1.附件的读取 一个列表条目的附件可以使用SPL ...
- 亚马逊订单api重构 api异常入库 在php中执行python
https://docs.python.org/2/library/xml.etree.elementtree.html python 较 php能更高效第处理xml xpth php 扮演什么角 ...
- 数据库之MySQL(一)
概述 1.什么是数据库 ? 数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ...
- Python多进程multiprocessing
import multiprocessing import time # 具体的处理函数,负责处理单个任务 def func(msg): # for i in range(3): print (msg ...
- (2.3)学习笔记之mysql基础操作(表/库操作)
本系列学习笔记主要讲如下几个方面: 本文笔记[六:表操作--线上可以直接删除表吗?] 附加:库操作 [1]创建制定字符集的数据库 需求描述: 在创建DB的时候指定字符集. 操作过程: 1.使用crea ...
- github的代码上传成功但是不显示绿格子(一直拖....心痛的教训.....)
损失了我特么的很多格子啊啊啊啊,必死强迫症啊!!!! 究其原因就是客户端绑定邮箱错误 本地 :git config user.email 显示邮箱是否和github中设定的一样? git config ...
- 003-诠释 Java 工程师【一】
一.基础篇 1.面向对象的三大特性 继承.封装.多态 什么是继承? ①继承是面向对象程序设计能够提高软件开发效率的重要原因之一. ②继承是具有传递性的,就像现实中孙子不仅长得像爸爸而且还像他爷爷. ③ ...
- 【转】JAVA学习笔记----PL/SQL最差实践
1. 超长的PL/SQL代码 影响:可维护性,性能 症状: 在复杂的企业应用中,存在动辄成百上千行的存储过程或上万行的包.为什么是最差: 太长的PL/SQL代码不利于阅读,第三方工 ...
- Java转C#,非常不错(转)
http://www.cnblogs.com/cnwebman/archive/2012/07/21/2602436.html 最近正在研究将一个纯java工程如何转换成C#工程,代码量还比较大,于是 ...
- 如何成为专业的PHP开发者
如何才能成为一名专业的PHP开发者?资深Web开发者Bruno Skvorc在其博客上分享了一些心得. 当阅读各种和PHP相关的博客.Quora问题.Google+社区.资讯和杂志的时候,Bruno ...