上一節咱們 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 操做。