操作区别

rebuild:xp系统的虚拟机用烦了,想换个linux的操作系统,就可以使用rebuild。
evacuate:虚拟机所在的host宕机了,可以使用evacuate将虚拟机在另外一个host上启起来,其实利用这个接口配合host监控工具,可以实现虚拟机的HA能力。
为什么要将这两个一起说呢,是因为在底层,这两个接口其实对应一个操作spawn。

1、rebuild
引用一下官方的API文档说明:

底层的实现,其实就是在虚拟机所在的host上,将原来的虚拟机干掉,然后再根据新的镜像创建一个新的虚拟机,实现虚拟机系统盘的变更,而用户盘的数据是不变的(软件的安装和配置会丢失),虚拟机的网络信息也不变。API里的accessIPv4和accessIPv6参数,在使用Quantum的场景下,是无效的。

目前rebuild仅支持active和stopped状态的虚拟机。而且使用后端卷启动的虚拟机,rebuild之后系统盘不会发生变化,见后面的实验部分。

2、evacuate
引用官方的API文档说明:

该接口使用的前提是虚拟机所在的host宕机。
参数onSharedStorage是让使用者指明,计算节点是否使用共享存储。其实在计算节点是有能力判断是否使用共享存储的(并且计算节点也确实会再进行判断),这里写在接口里,猜测应该是为了在API层做判断吧。
当使用共享存储时,才是真正意义上的HA,虚拟机的软件和数据不会丢失;否则,只有虚拟机的用户盘数据不会丢失,系统盘是全新的系统盘。

上面提到,rebuild和evacuate在底层的实现是一样的。其实想想也是,两个接口都需要重新创建虚拟机,唯一的区别是:
1、rebuild需要多做一步删除虚拟机的操作,而evacuate是直接创建新虚拟机。
2、rebuild使用的镜像是接口指定的新的镜像(可以与老镜像相同),而evacuate使用的是虚拟机原来的镜像。

再次引用下wiki上的evacuate流程图:

但evacuate也有一些不足,比如如果支持系统自动选择主机,用户体验可能会更好;还有,同rebuild一样,目前evacuate仅支持active和stopped状态的虚拟机,其他状态(paused,suspended等)的虚拟机是不支持的,这也就意味着其他状态的虚拟机遇到host故障的时候是无法恢复的。
顺带说一句,目前只有libvirt driver支持rebuild和evacuate。

实践

一、rebuild
步骤如下:
1、先使用keypaire创建cirros虚拟机,关联floatingip,创建成功后,ssh登录,操作正常。
root@controller231:~# nova show rebuild-test2
±------------------------------------±---------------------------------------------------------+
| Property | Value |
±------------------------------------±---------------------------------------------------------+
| status | ACTIVE |
| updated | 2013-06-24T08:14:45Z |
| OS-EXT-STS:task_state | None |
| OS-EXT-SRV-ATTR:host | controller231 |
| key_name | mykey |
| image | cirros (4851d2f2-ef75-4a80-91c6-f0fcbcd7276a) |
| hostId | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9 |
| OS-EXT-STS:vm_state | active |
| OS-EXT-SRV-ATTR:instance_name | instance-0000000e |
| OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org |
| flavor | m1.small (2) |
| id | 03774415-d9ce-4b34-b012-6891d248b767 |
| security_groups | [{u’name’: u’default’}] |
| user_id | f882feb345064e7d9392440a0f397c25 |
| name | rebuild-test2 |
| created | 2013-06-24T08:14:38Z |
| tenant_id | 6fbe9263116a4b68818cf1edce16bc4f |
| OS-DCF:diskConfig | MANUAL |
| metadata | {} |
| accessIPv4 | |
| accessIPv6 | |
| testnet01 network | 10.1.1.20, 192.150.73.3 |
| progress | 0 |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-AZ:availability_zone | nova |
| config_drive | |
±------------------------------------±---------------------------------------------------------+
root@network232:~# ssh -i mykey.pem -l cirros 192.150.73.3
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
Authenticated to 192.150.73.3 ([192.150.73.3]:22).
$ sudo passwd
Changing password for root
New password:
Retype password:
Password for root changed by root
2、命令行执行rebuild,指定ubuntu镜像,注意此时虚拟机的image已经发生改变:
root@controller231:~# nova rebuild rebuild-test2 1f7f5763-33a1-4282-92b3-53366bf7c695
±------------------------------------±------------------------------------------------------------------+
| Property | Value |
±------------------------------------±------------------------------------------------------------------+
| status | REBUILD |
| updated | 2013-06-24T08:34:47Z |
| OS-EXT-STS:task_state | rebuilding |
| OS-EXT-SRV-ATTR:host | controller231 |
| key_name | mykey |
| image | Ubuntu 12.04 cloudimg i386 (1f7f5763-33a1-4282-92b3-53366bf7c695) |
| hostId | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9 |
| OS-EXT-STS:vm_state | active |
| OS-EXT-SRV-ATTR:instance_name | instance-0000000e |
| OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org |
| flavor | m1.small (2) |
| id | 03774415-d9ce-4b34-b012-6891d248b767 |
| security_groups | [{u’name’: u’default’}] |
| user_id | f882feb345064e7d9392440a0f397c25 |
| name | rebuild-test2 |
| created | 2013-06-24T08:14:38Z |
| tenant_id | 6fbe9263116a4b68818cf1edce16bc4f |
| OS-DCF:diskConfig | MANUAL |
| metadata | {} |
| accessIPv4 | |
| accessIPv6 | |
| testnet01 network | 10.1.1.20, 192.150.73.3 |
| progress | 0 |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-AZ:availability_zone | nova |
| config_drive | |
±------------------------------------±------------------------------------------------------------------+
3、等待虚拟机状态变为ACTIVE,再次登录虚拟机:
root@network232:~# ssh -i mykey.pem 192.150.73.3
Welcome to Ubuntu 12.04.1 LTS (GNU/Linux 3.2.0-35-virtual i686)

  • Documentation: https://help.ubuntu.com/

System information as of Mon Jun 24 08:47:49 UTC 2013

System load: 0.0 Processes: 60
Usage of /: 2.9% of 19.67GB Users logged in: 0
Memory usage: 1% IP address for eth0: 10.1.1.20
Swap usage: 0%

Graph this data and manage this system at https://landscape.canonical.com/

0 packages can be updated.
0 updates are security updates.

Get cloud support with Ubuntu Advantage Cloud Guest
http://www.ubuntu.com/business/services/cloud
Last login: Mon Jun 24 08:46:09 2013 from 192.168.82.232
root@rebuild-test2:~#
看到系统盘已经变成Ubuntu系统。

4、后端卷启动的虚拟机,rebuild
比如有一个虚拟机,后端卷启动,后端卷是cirros镜像:
root@controller231:~# nova show kong2
±------------------------------------±---------------------------------------------------------+
| Property | Value |
±------------------------------------±---------------------------------------------------------+
| status | ACTIVE |
| updated | 2013-06-26T10:01:29Z |
| OS-EXT-STS:task_state | None |
| OS-EXT-SRV-ATTR:host | controller231 |
| key_name | mykey |
| image | Attempt to boot from volume - no image supplied |
| hostId | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9 |
| OS-EXT-STS:vm_state | active |
| OS-EXT-SRV-ATTR:instance_name | instance-00000021 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org |
| flavor | kong_flavor (6) |
| id | 8989a10b-5a89-4f87-9b59-83578eabb997 |
| security_groups | [{u’name’: u’default’}] |
| user_id | f882feb345064e7d9392440a0f397c25 |
| name | kong2 |
| created | 2013-06-26T10:00:51Z |
| tenant_id | 6fbe9263116a4b68818cf1edce16bc4f |
| OS-DCF:diskConfig | MANUAL |
| metadata | {} |
| accessIPv4 | |
| accessIPv6 | |
| testnet01 network | 10.1.1.6 |
| progress | 0 |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-AZ:availability_zone | nova |
| config_drive | |
±------------------------------------±---------------------------------------------------------+
注意image字段中,显示该虚拟机是boot from volume。
对该虚拟机进行rebuild操作,指定ubuntu镜像:
root@controller231:~# nova rebuild kong2 1f7f5763-33a1-4282-92b3-53366bf7c695
±------------------------------------±------------------------------------------------------------------+
| Property | Value |
±------------------------------------±------------------------------------------------------------------+
| status | REBUILD |
| updated | 2013-06-26T10:25:03Z |
| OS-EXT-STS:task_state | rebuilding |
| OS-EXT-SRV-ATTR:host | controller231 |
| key_name | mykey |
| image | Ubuntu 12.04 cloudimg i386 (1f7f5763-33a1-4282-92b3-53366bf7c695) |
| hostId | 083729f2f8f664fffd4cffb8c3e76615d7abc1e11efc993528dd88b9 |
| OS-EXT-STS:vm_state | active |
| OS-EXT-SRV-ATTR:instance_name | instance-00000021 |
| OS-EXT-SRV-ATTR:hypervisor_hostname | controller231.openstack.org |
| flavor | kong_flavor (6) |
| id | 8989a10b-5a89-4f87-9b59-83578eabb997 |
| security_groups | [{u’name’: u’default’}] |
| user_id | f882feb345064e7d9392440a0f397c25 |
| name | kong2 |
| created | 2013-06-26T10:00:51Z |
| tenant_id | 6fbe9263116a4b68818cf1edce16bc4f |
| OS-DCF:diskConfig | MANUAL |
| metadata | {} |
| accessIPv4 | |
| accessIPv6 | |
| testnet01 network | 10.1.1.6, 192.150.73.16 |
| progress | 0 |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-AZ:availability_zone | nova |
| config_drive | |
±------------------------------------±------------------------------------------------------------------+
待虚拟机active之后,VNC登录虚拟机,发现虚拟机并没有发生变化,还是cirros。
因为rebuild在nova driver层调用还是spawn函数创建新的虚拟机,而后端卷启动的虚拟机,是不会跟glance打交道的,还是直接挂载系统盘。

OpenStack虚拟机rebuild和evacuate差异梳理相关推荐

  1. 使用虚拟机备份软件备份OpenStack虚拟机

    1.进入虚拟机备份系统 2.选择[虚拟机保护]--[备份],新建备份任务.选择虚拟化类型[OpenStack],再选择需要备份的虚拟机,点击[下一步] 3.设置备份目的地,选择[目标节点]与[目标存储 ...

  2. Openstack虚拟机镜像深度实践

    转载:http://geek.csdn.net/news/detail/52407?ref=myread 虚拟机镜像(以下简称镜像)是Openstack云计算平台不可或缺的一部分.利用各种定制化的镜像 ...

  3. openstack虚拟机内文件遭破坏的急救方案

    一.场景: openstack虚拟机存放于ceph存储,由于用户将系统的grub误删除,导致系统无法正常引导.现在用户要求抢救文件. 二.可行的方案: 1.将虚拟机保存为镜像,将镜像转换成云硬盘,将云 ...

  4. openstack云主机无法绑定ip_智汇华云|OpenStack 虚拟机 GPU 性能优化

    随着大数据.人工智能技术的发展,越来越多的用户产生了获取拥有GPU算力的弹性计算服务的需求,GPU云主机具有突出的图形处理和高性能计算能力,适用于科学计算.视频处理.深度学习等应用场景,受到了市场的青 ...

  5. 大牛写的Openstack虚拟机创建细节

    别以为真懂Openstack: 虚拟机创建的50个步骤和100个知识点(5) (1) http://www.cnblogs.com/popsuper1982/p/3927390.html (2) ht ...

  6. openstack 虚拟机如何修改ip地址

    2019独角兽企业重金招聘Python工程师标准>>> 导读 在日常开发和生产环境中经常需要将OpenStack虚拟机配置一个静态Ip,但配置完成后发现外面无法访问.原因是opens ...

  7. 使用虚拟机备份软件恢复OpenStack虚拟机

    1.进入虚拟机备份系统 2.选择[虚拟机保护]--[恢复],新建恢复任务,选择选择虚拟化类型[OpenStack],勾选需要恢复的备份点,点击[下一步] 3. 设置恢复目标宿主机,并按需配置恢复虚拟机 ...

  8. OpenStack 虚拟机冷/热迁移的实现原理与代码分析

    目录 文章目录 目录 前文列表 冷迁移代码分析(基于 Newton) Nova 冷迁移实现原理 热迁移代码分析 Nova 热迁移实现原理 向 libvirtd 发出 Live Migration 指令 ...

  9. pve虚拟机和openstack虚拟机的区别

    PVE 虚拟机和 OpenStack 虚拟机是两种不同的虚拟化技术. PVE 虚拟机是使用 Proxmox Virtual Environment (PVE) 所创建的虚拟机.PVE 是一个开源虚拟化 ...

  10. 联想服务器usb虚拟引入,联想ThinkCloud的OpenStack虚拟机的USB设备挂载

    上周五开始电力停电,备用电源将要耗尽,解除了机房10台联想物理机组成的云平台OpenStack. 之前自己接触用得最多的虚拟机或平台是VMware的Workstation 14平台,自己弄了几台虚拟机 ...

最新文章

  1. 是男人就下100层【第四层】——Crazy贪吃蛇(2)
  2. VMware Tools按钮变灰色,无法安装的解决方法
  3. 20162328蔡文琛week07
  4. 【Android 插件化】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件化引擎
  5. Java中Dom解析XML
  6. vc6.0开发环境两个辅助工具
  7. OpenCV图像旋转,指定填充背景颜色边界颜色
  8. 《数据库SQL实战》获取所有员工当前的manager
  9. 玩的起也要输的起 。。没什么,照样支持你。。
  10. for循环下标 shell_如果再写for循环,我就锤自己
  11. python基于窗体的播放器_基于Python3的终端播放器 – MellPlayer
  12. 计算机的flash player在哪里,flash player电脑设置管理器在哪?怎么打开
  13. excel小写转大写公式_excel数字小写转大写公式的教程
  14. 公众号网课搜题API系统对接教程
  15. 微信公众平台小程序开发教程
  16. 波兰表达式(Polish Notation)简要介绍
  17. 【Linux学习笔记】27:环境变量中的语系变量
  18. 熵、条件熵、联合熵、互信息的理解
  19. bing搜索分析网站的方法
  20. 爬虫|12306模拟登录

热门文章

  1. 关于Android方向传感器的终极解释
  2. 访问图片出现403的解决办法
  3. phpunit问题与解决
  4. 小学知识三角函数和差化积
  5. webpack学习小项目
  6. gromacs ngmx_GROMACS使用教程
  7. 详解Java 12新特性:switch表达式
  8. 【什么是IaaS,PaaS,SaaS? DaaS又是什么?】
  9. UE4 Chunk分块
  10. php post伪装ip,PHP中用CURL伪造IP来源的方法