devstackd 计算Nova的虚机生命周期场景查看

本文详细解析了OpenStack Nova中虚机的各种生命周期操作,包括shut off、start、reboot、lock/unlock、terminate、pause/resume、suspend/resume、rescue/unrescue、snapshot、rebuild、shelve/unshelve、migrate、resize、live migrate和evacuate。每种操作的流程、区别及在nova-api、nova-compute中的实现机制进行了详尽阐述,帮助读者深入理解OpenStack Nova的虚机管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一. shut off instance

shut off 的流程为
1. 向nova-api 发送请求
2. nova-api 发送消息
3. nova-compute执行操作

第一步:向nova-api发送请求

  • 从openstack界面关闭一个实例,查看nova-api的log文件,可以看到:
    在这里插入图片描述
    instance后面有实例ID。

第二步:nova-api 发送消息

  • nova-api 向 Messaging(RabbitMQ)发送了一条消息:“关闭这个 Instance” nova-api 没有将发送消息的操作记录到日志中,不过我们可以通过查看源代码来验证。 一提到源代码,大家可能以为要大海捞针了。其实很简单,上面日志已经清楚地告诉我们需要查看的源代码在 /opt/stack/nova/nova/compute/api.py 中,方法是 force_stop。
    在这里插入图片描述
  • force_stop 方法最后调用的是对象 self.compute_rpcapi 的 stop_instance 方法。 在 OpenStack 源码中,以 xxx_rpcapi 命名的对象,表示的就是 xxx 的消息队列。 xxx_rpcapi.yyy() 方法则表示向 xxx 的消息队列发送 yyy 操作的消息。

第三步:nova-compute执行操作

  • 根据操作日志中的req-ID来查看n-cpu的log,可以看到nova-compute关闭instance的日志条目。
    在这里插入图片描述

二、开启一个instance

start instance的流程

  1. 向nova-api发送请求
  2. nova-api 发送消息
  3. nova-compute 执行操作

第一步:向nova-api发送请求

  • 从openstack界面进行启动实例的按钮点击,可以根据req-ID进行日志查看。在这里插入图片描述

第二步:nova-api 发送消息

  • nova-api向message发送了一条消息:“启动这个 Instance”
    在这里插入图片描述
  • self.compute_rpcapi.start_instance() 的作用就是向 RabbitMQ 上 nova-compute 的消息队列里发送一条 start instance 的消息。

第三步:nova-compute执行操作

  • 根据req-ID查看n-cpu的log文件
  • 首先开始启动在这里插入图片描述
  • 然后准备虚拟网卡
  • 准备instance的XML文件
  • 准备instance镜像文件
  • 成功启动
    在这里插入图片描述

三、Soft/Hard Reboot

区别:

  1. soft reboot 只是重启操作系统,整个过程中,instance 依然处于运行状态。相当于在 linux 中执行 reboot 命令。
  2. hard reboot 是重启 instance,相当于关机之后再开机

提示:

  1. soft/hard reboot 在 nova-api 的日志里找不到,这是因为 /opt/stack/nova/nova/compute/api.py 的 reboot 方法中没有输出 log。
    可以通过关键字 “nova.api.openstack.wsgi” 或者 “reboot” 搜索。
  2. 在 nova-compute 的日志中可以看到 “soft reboot” 和 “hard reboot” 二者有明显的区别。

四、Lock /Unlock

  • 为了避免误操作,比如意外重启或删除 instance,可以将 instance 加锁。
  • 对被加锁(Lock)的 instance 执行重启等改变状态的操作会提示操作不允许。
  • 执行解锁(Unlock)操作后恢复正常。
    查看日志:
    在这里插入图片描述

五、terminate (删除instance)

删除instance的流程

  1. 向 nova-api 发送请求
  2. nova-api 发送消息
  3. nova-compute 执行操作
    (1)关闭instance
    (2) 删除instance的镜像文件
    (3) 释放虚拟网络等其他资源

六、Pause/Resume(暂停instance/恢复)

暂停instance流程

  • 向 nova-api 发送请求

  • nova-api 发送消息

  • nova-compute 执行操作

  • 有时需要短时间暂停 instance,可以通过 Pause 操作将 instance 的状态保存到宿主机的内存中。当需要恢复的时候,执行 Resume 操作,从内存中读回 instance 的状态,然后继续运行 instance。

七、 Suspend/Resume

  • 有时需要长时间暂停 instance,可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值