Detach Volume 操作 - 每天5分鍾玩轉 OpenStack(55)


上一節我們成功地通過 attach 操作為 instance 添加了 volume,而與之相對的操作是 detach,就是將 volume 從 instance 上卸載下來。

下圖是 Detach 操作的流程圖

  1. 向 cinder-api 發送 detach 請求

  2. cinder-api 發送消息

  3. nova-compute detach volume

  4. cinder-volume 刪除 target

下面我們詳細討論每一個步驟。

向 cinder-api 發送 attach 請求

客戶(可以是 OpenStack 最終用戶,也可以是其他程序)向 cinder-api 發送請求:“請 detach 指定 instance 上的 volume。

這里我們將 detach instance “c2”上的 volume “vol-1” 進入 GUI 操作菜單Project -> Compute -> Volumes。

image397.png

選擇 volume “vol-1”,點擊“Manage Attachments”。

點擊 “Detach Volume”。

再次確認。

cinder-api 將接收到 detach volume 的請求。日志文件在 /opt/stack/logs/c-api.log。

cinder-api 發送消息

cinder-api 發送消息 detach 消息。 cinder-api 沒有打印發送消息的日志,只能通過源代碼查看 /opt/stack/cinder/cinder/volume/api.py,方法為 detach。

Detach 的操作由 nova-compute 和 cinder-volume 共同完成:

  1. 首先 nova-compute 將 volume 從 instance 上 detach,然后斷開與 iSCSI target 的連接。

  2. 最后 cinder-volume 刪除 volume 相關的 iSCSI target。

后面兩個小節將詳細討論這兩個步驟。

nova-compute detach volume

nova-compute 首先將 volume 從 instance 上 detach 。 日志為 /opt/stack/logs/n-cpu.log。

這時通過 virsh edit 可以看到 XML 配置文件中已經不在有 volume 的虛擬磁盤。

接下來斷開與 iSCSI target 的連接。

具體有下面幾個步驟:

  1. 將緩存中的數據 Flush 到 volume。

  2. 刪除計算節點上 volume 對應的 SCSI 設備。

  3. 通過 iscsiadm 的 logout,delete 操作斷開與 iSCSI target 的連接。

compue-nova 完成了 detach 工作,接下來 cinder-volume 就可以刪除 volume 相關的 target 了。

cinder-volume 刪除 target

存儲節點 cinder-volume 通過 tgt-admin 命令刪除 volume 對應的 target。日志文件為 /opt/stack/logs/c-vol.log。

至此 detach volume 操作已經完成,GUI 也會更新 volume 的 attach 信息。

以上就是 detach volume 的分析,下一節我們討論 extend 操作。

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM