Attach Volume 操做(Part I) - 天天5分鐘玩轉 OpenStack(53)

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

Volume 的最主要用途是做爲虛擬硬盤提供給 instance 使用。Volume 是經過 Attach 操做掛載到 instance 上的。本節咱們就來詳細討論 Cinder 是如何實現 Attach 的。服務器

上一節咱們成功建立了基於 LVM provider 的 volume。每一個 volume 其實是存儲節點上 VG 中的一個 LV。架構

那麼問題來了:存儲節點上本地的 LV 如何掛載到計算節點的 instance 上呢?一般狀況存儲節點和計算節點是不一樣的物理節點。ide

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

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

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

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

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

下面來看看 Attach 操做的流程圖get

  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 操做。

相關文章
相關標籤/搜索