cinder创建的volume通过iscsi协议挂载到instance流程分析

来源:互联网 发布:淘宝联盟无法注册 编辑:程序博客网 时间:2024/05/18 07:13

输入命令:nova volume-attache volume-id server-id

一、cinder-api

 

1POST一个http消息,bodyconnection初始化(initialized_connection)的相关信息,192.168.232.12是要挂载虚机所在计算节点的IP地址,那么可以看出初始化信息包含了计算节点的相关信息

 

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

 

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的过程(初始化)。

 

1cinder-volume接收到initiatialized_connection消息后,通过lioadm为需要挂载到instancevolume创建target(也有用tgt创建target的,liotgt都是用来管理iscsi target的软件)

 

上图是lio创建target的一些操作,不深究

 

2、创建好的targetexport出来,至于怎么export的,就看lio或者tgt这个软件的操作了。

 

3、initialized volume connection成功

PScinder-volume日志显示initialized volume connection success的时间是14:21:43.648api日志显示initialized volume connection success的时间是14:21:43.709,说明api显示的初始化连接成功的时间,就是真正初始化连接成功的时间,并非像cinder创建volume一样,api显示的创建volume成功,只是api处理成功,不代表后端存储创建volume真的成功。(先这么分析,有待确认)

 

三、nova-compute,作为第二步生成的iscsi target的客户端,访问存储节点上的volume,挂载到instance

 

1nova-compute上最早开始生成一个Attaching volume的信息,还未真正开始执行挂载

 

 




2、iscsi开始依次执行newupdateloginrescan操作将远程存储上的volume挂载到计算节点。

 

3、最后,计算节点将挂载好的iscsi target上的volume识别为一个磁盘文件,通过写入对应instancexml文件,将这个磁盘文件给instance使用,可以在计算节点上验证如下:

(1)验证/dev目录

 

(2)验证xml文件

 

PS:api的日志显示14:21:48.894 Attach volume completed successfully,实际上nova-compute日志显示的挂载volume成功是在14:21:46.222,所以说api报的信息也应该是实际上挂载成功的时间。(这个也是有待确认的,因为我的环境没用ntp同步时间)

 

 

0 0
原创粉丝点击