上一节咱们 shelve instance 到 Glance,本节讨论如何经过 unshelve 操做恢复该 instance。api
由于 Glance 中保存了 instance 的 image,unshelve 的过程其实就是经过该 image launch 一个新的 instance,nova-scheduler 也会调度合适的计算节点来建立该 instance。网络
instance unshelve 后可能运行在与 shelve 以前不一样的计算节点上,但 instance 的其余属性(好比 flavor,IP 等)不会改变。spa
下面是 Unshelve instance 的流程图
日志
向 nova-api 发送请求内存
nova-api 发送消息资源
nova-scheduler 执行调度it
nova-scheduler 发送消息io
nova-compute 执行操做select
下面咱们详细讨论每个步骤。请求
客户(能够是 OpenStack 最终用户,也能够是其余程序)向 API(nova-api)发送请求:“帮我 Unshelve 这个 Instance”
查看日志 /opt/stack/logs/n-api.log
nova-api 向 Messaging(RabbitMQ)发送了一条消息:“unshelve 这个 Instance” 查看源代码 /opt/stack/nova/nova/compute/api.py,方法是 unshelve。
nova-scheduler 收到消息后,会为 instance 选择合适的计算节点。 查看日志 /opt/stack/logs/n-sch.log
通过筛选,最终 devstack-controller 被选中 launch instance。
nova-scheduler 发送消息,告诉被选中的计算节点能够 launch instance 了 源代码在 /opt/stack/nova/nova/scheduler/filter_scheduler.py 第 95 行,方法为 select_destinations
nova-compute 执行 unshelve 的过程与 launch instance 很是相似。 同样会通过以下几个步骤: 1. 为 instance 准备 CPU、内存和磁盘资源 2. 建立 instance 镜像文件 3. 建立 instance 的 XML 定义文件 4. 建立虚拟网络并启动 instance
日志记录在 /opt/stack/logs/n-cpu.log,分析留给你们练习。
以上就是 Unshelve 操做的分析,下一节咱们讨论 Migrate 操做。