Instance 被 Suspend 后雖然處於 Shut Down 狀態,但 Hypervisor 依然在宿主機上為其預留了資源,以便在以后能夠成功 Resume。
如果希望釋放這些預留資源,可以使用 Shelve 操作。 Shelve 會將 instance 作為 image 保存到 Glance 中,然后在宿主機上刪除該 instance。 下面是 shelve instance 的流程圖
-
向 nova-api 發送請求
-
nova-api 發送消息
-
nova-compute 執行操作
下面我們詳細討論每一個步驟。
向 nova-api 發送請求
客戶(可以是 OpenStack 最終用戶,也可以是其他程序)向API(nova-api)發送請求:“幫我 shelve 這個 Instance”
查看日志 /opt/stack/logs/n-api.log
nova-api 發送消息
nova-api 向 Messaging(RabbitMQ)發送了一條消息:“shelve 這個 Instance” 查看源代碼 /opt/stack/nova/nova/compute/api.py,方法是 shelve。
nova-compute 執行操作
查看日志 /opt/stack/logs/n-cpu.log
首先,關閉 instance
然后對 instance 執行 snapshot 操作
成功后,snapshot 生成的 image 會保存在 Glance 上,命名為 <instance name>-shelved
最后刪除 instance 在宿主機上的資源
暫停操作成功執行后,instance 的狀態變為 Shelved Offloaded,電源狀態是 Shut Down
以上就是 Shelve 操作的分析,下一節我們討論 Unshelve 操作。