天天看點

cinder建立的volume通過iscsi協定挂載到instance流程分析

輸入指令:nova volume-attache volume-id server-id

一、cinder-api

cinder建立的volume通過iscsi協定挂載到instance流程分析

1、POST一個http消息,body是connection初始化(initialized_connection)的相關資訊,192.168.232.12是要挂載虛機所在計算節點的IP位址,那麼可以看出初始化資訊包含了計算節點的相關資訊

cinder建立的volume通過iscsi協定挂載到instance流程分析

上圖是初始化成功之前,進行的一些操作

cinder建立的volume通過iscsi協定挂載到instance流程分析

2、初始化volume連接配接後,計算節點将指定的volume挂載到指定的instance,這主要由nova-compute完成,api日志裡最後顯示的Attach volume completed successfully是不是真的成功了呢?對應後面的日志的時間戳來繼續分析

二、cinder-volume,通過lio或者tgt軟體管理工具(可以在/etc/cinder/cinder.conf裡配置iscsi_helper參數指定)為指定的挂載卷建立target并将指定的挂載卷export出來供iscsi用戶端initiation通路,這在日志中,就是initialezed volume connection的過程(初始化)。

cinder建立的volume通過iscsi協定挂載到instance流程分析

1、cinder-volume接收到initiatialized_connection消息後,通過lioadm為需要挂載到instance的volume建立target(也有用tgt建立target的,lio和tgt都是用來管理iscsi target的軟體)

cinder建立的volume通過iscsi協定挂載到instance流程分析

上圖是lio建立target的一些操作,不深究

cinder建立的volume通過iscsi協定挂載到instance流程分析

2、建立好的target,export出來,至于怎麼export的,就看lio或者tgt這個軟體的操作了。

cinder建立的volume通過iscsi協定挂載到instance流程分析

3、initialized volume connection成功

PS:cinder-volume日志顯示initialized volume connection success的時間是14:21:43.648,api日志顯示initialized volume connection success的時間是14:21:43.709,說明api顯示的初始化連接配接成功的時間,就是真正初始化連接配接成功的時間,并非像cinder建立volume一樣,api顯示的建立volume成功,隻是api處理成功,不代表後端存儲建立volume真的成功。(先這麼分析,有待确認)

三、nova-compute,作為第二步生成的iscsi target的用戶端,通路存儲節點上的volume,挂載到instance

cinder建立的volume通過iscsi協定挂載到instance流程分析

1、nova-compute上最早開始生成一個Attaching volume的資訊,還未真正開始執行挂載

cinder建立的volume通過iscsi協定挂載到instance流程分析
cinder建立的volume通過iscsi協定挂載到instance流程分析
cinder建立的volume通過iscsi協定挂載到instance流程分析
cinder建立的volume通過iscsi協定挂載到instance流程分析
cinder建立的volume通過iscsi協定挂載到instance流程分析

2、iscsi開始依次執行new,update,login,rescan操作将遠端存儲上的volume挂載到計算節點。

cinder建立的volume通過iscsi協定挂載到instance流程分析

3、最後,計算節點将挂載好的iscsi target上的volume識别為一個磁盤檔案,通過寫入對應instance的xml檔案,将這個磁盤檔案給instance使用,可以在計算節點上驗證如下:

(1)驗證/dev目錄

cinder建立的volume通過iscsi協定挂載到instance流程分析

(2)驗證xml檔案

cinder建立的volume通過iscsi協定挂載到instance流程分析

PS:api的日志顯示14:21:48.894 Attach volume completed successfully,實際上nova-compute日志顯示的挂載volume成功是在14:21:46.222,是以說api報的資訊也應該是實際上挂載成功的時間。(這個也是有待确認的,因為我的環境沒用ntp同步時間)