Attach Volume 操作(Part I) - 每天5分鍾玩轉 OpenStack(53)


上一節我們創建了 volume,本節討論如何將 volume attach 到 Instance,今天是第一部分。

Volume 的最主要用途是作為虛擬硬盤提供給 instance 使用。Volume 是通過 Attach 操作掛載到 instance 上的。本節我們就來詳細討論 Cinder 是如何實現 Attach 的。

上一節我們成功創建了基於 LVM provider 的 volume。每個 volume 實際上是存儲節點上 VG 中的一個 LV。

那么問題來了:存儲節點上本地的 LV 如何掛載到計算節點的 instance 上呢?通常情況存儲節點和計算節點是不同的物理節點。

解決方案是使用 iSCSI,如下圖所示

iSCSI 是 Client-Server 架構,有 target 和 initiator 兩個術語。

Target
提供 iSCSI 存儲資源的設備,簡單的說,就是 iSCSI 服務器。

Initiator
使用 iSCSI 存儲資源的設備,也就是 iSCSI 客戶端。

Initiator 需要與 target 建立 iSCSI 連接,執行 login 操作,然后就可以使用 target 上面的塊存儲設備了。 Target 提供的塊存儲設備支持多種實現方式,我們實驗環境中使用的是 LV。 Cinder 的存儲節點 cinder-volume 默認使用 tgt 軟件來管理和監控 iSCSI target,在計算節點 nova-compute 使用 iscsiadm 執行 initiator 相關操作。

下面來看看 Attach 操作的流程圖

  1. 向 cinder-api 發送 attach 請求

  2. cinder-api 發送消息

  3. cinder-volume 初始化 volume 的連接

  4. nova-compute 將 volume attach 到 instance

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

向cinder-api發送attach請求

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

這里我們將 volume “vol-1” attach 到 instance ”c2”上。 attach 操作之前,c2 上的虛擬磁盤如下:

進入 GUI 操作菜單 Project -> Compute -> Volumes

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

在 “Attach to Instance”下拉列表中,選擇instance “c2”

點擊 ”Attach Volume”

cinder-api 將接收到 attach volume 的請求,attach 請求實際上包含兩個步驟:

  1. 初始化 volume 的連接 Volume 創建后,只是在 volume provider 中創建了相應存儲對象(比如 LV),這時計算節點是無法使用的。Cinder-volume 需要以某種方式將 volume export 出來,計算節點才能夠訪問得到。這個 export 的過程就是“初始化 volume 的連接”。 下面是 cinder-api 的日志文件 /opt/stack/logs/c-api.log 中記錄的相關信息Initialize_connection 的具體工作主要由 cinder-volume 完成,將在后面詳細討論。

  2. Attach volume 初始化 volume 連接后,計算節點將 volume 掛載到指定的 instance,完成 attach 操作。下面是 cinder-api 的日志文件 /opt/stack/logs/c-api.log 中記錄的相關信息

Attach 的具體工作主要由 nova-compute 完成,也將在后面詳細討論。

cinder-api 發送消息

cinder-api 分兩步完成 attach 操作,所以對應地會先后向 RabbitMQ 發送了兩條消息:

  1. 初始化 volume 的連接 cinder-api 沒有打印發送消息的日志,只能通過源代碼查看 /opt/stack/cinder/cinder/volume/api.py,方法為 initialize_connection

  2. Attach volume cinder-api 沒有打印發送消息的日志,只能通過源代碼查看

下一節我們討論 cinder-volume 和 nova-compute 如何實現 attach 操作。


免責聲明!

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



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