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

    xiaoxiao2021-03-25  98

    输入命令: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同步时间)

     

     

    转载请注明原文地址: https://ju.6miu.com/read-15992.html

    最新回复(0)