天天看點

Detach Volume 操作 - 每天5分鐘玩轉 OpenStack(55)向 cinder-api 發送 attach 請求cinder-api 發送消息nova-compute detach volumecinder-volume 删除 target

上一節我們成功地通過 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