上一節我們成功地通過 attach 操作為 instance 添加了 volume,而與之相對的操作是 detach,就是将 volume 從 instance 上解除安裝下來。
下圖是 Detach 操作的流程圖
向 cinder-api 發送 detach 請求
cinder-api 發送消息
nova-compute detach volume
cinder-volume 删除 target
下面我們詳細讨論每一個步驟。
客戶(可以是 OpenStack 最終使用者,也可以是其他程式)向 cinder-api 發送請求:“請 detach 指定 instance 上的 volume。
這裡我們将 detach instance “c2”上的 volume “vol-1” 進入 GUI 操作菜單Project -> Compute -> Volumes。
選擇 volume “vol-1”,點選“Manage Attachments”。
點選 “Detach Volume”。
再次确認。
cinder-api 将接收到 detach volume 的請求。日志檔案在 /opt/stack/logs/c-api.log。
cinder-api 發送消息 detach 消息。 cinder-api 沒有列印發送消息的日志,隻能通過源代碼檢視 /opt/stack/cinder/cinder/volume/api.py,方法為 detach。
Detach 的操作由 nova-compute 和 cinder-volume 共同完成:
首先 nova-compute 将 volume 從 instance 上 detach,然後斷開與 iSCSI target 的連接配接。
最後 cinder-volume 删除 volume 相關的 iSCSI target。
後面兩個小節将詳細讨論這兩個步驟。
nova-compute 首先将 volume 從 instance 上 detach 。 日志為 /opt/stack/logs/n-cpu.log。
這時通過 virsh edit 可以看到 XML 配置檔案中已經不在有 volume 的虛拟磁盤。
接下來斷開與 iSCSI target 的連接配接。
具體有下面幾個步驟:
将緩存中的資料 Flush 到 volume。
删除計算節點上 volume 對應的 SCSI 裝置。
通過 iscsiadm 的 logout,delete 操作斷開與 iSCSI target 的連接配接。
compue-nova 完成了 detach 工作,接下來 cinder-volume 就可以删除 volume 相關的 target 了。
存儲節點 cinder-volume 通過 tgt-admin 指令删除 volume 對應的 target。日志檔案為 /opt/stack/logs/c-vol.log。
至此 detach volume 操作已經完成,GUI 也會更新 volume 的 attach 資訊。
以上就是 detach volume 的分析,下一節我們讨論 extend 操作。
本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1795459