
上一節我們討論了 attach volume 操作中 cinder-api 的工作,本節討論 cinder-volume 和 nova-compute 如何將 volume attach 到 Instance。
cinder-volume 初始化 volume 的連接
cinder-volume 接收到 initialize_connection 消息后,會通過 tgt 創建 target,並將 volume 所對應的 LV 通過 target export 出來。日志為 /opt/stack/logs/c-vol.log

下面的日志顯示:通過命令 tgtadm --lld iscsi --op show --mode target 看到已經將 1GB(1074MB)的 LV /dev/stack-volumes-lvmdriver-1/volume-1e7f6bd7-ce11-4a73-b95e-aabd65a5b188 通過 Target 1 export 出來了。
Initialize connection 完成。
nova-compute 將 volume attach 到 instance
計算節點作為 iSCSI initiator 訪問存儲節點 Iscsi Target 上的 volume,並將其 attach 到 instance。日志文件為 /opt/stack/logs/n-cpu.log
nova-compute 依次執行 iscsiadm 的 new, update, login, rescan 操作訪問 target 上的 volume。
計算節點將 iSCSI target 上的 volume 識別為一個磁盤文件。
然后通過更新 instance 的 XML 配置文件將 volume 映射給 instance。
我們也可以通過 virsh edit 查看更新后的 XML。 
可以看到,instance 增加了一個類型為 block 的虛擬磁盤,source 就是要 attach 的 volume,該虛擬磁盤的設備名為 vdb。
手工 Shut off 並 Start instance,通過 fdisk -l 查看到 volume 已經 attach 上來,設備為 vdb
GUI 界面也會更新相關 attach 信息
現在如果我們在存儲節點執行 tgt-admin --show --mode target,會看到計算節點作為 initiator 已經連接到 target 1。cinder-volume 剛剛創建 target 的時候是沒有 initiator 連接的,大家可以將下面的截圖與之前的日志做個對比。
以上就是 attach volume 的全部內容,下一節我們討論 detach 操作。

