cinder创建volume的流程分析

    xiaoxiao2021-03-25  109

    controller节点输入如下命令:

    cinder create --display-name admin-volume1 1

    一、cinder-api流程(图下面的字是解释上面的日志文件的)

     

    1、cinder-api接收到以http协议发送的POST请求,经过http body分析:创建一个size为1GB的volume

     

    2、cinder-api启动volume_create_api工作流(flow),flow的状态从pending->running->success,该工作流包含若干个任务(TASK),TASK的转换状态与工作流一样,都是到success结束,每个TASK完成特定的任务。

    1)volume_create_api包含的TASK包括:

    ①ExtractVolumeRequestTask获取request信息

    ②QuotaReserverTask预留配额

    ③EntryCreateTask在数据库中创建volume条目

    ④QuotaCommitTask确认配额

     

    以上①②③④都是创建volume的准备工作,然后

    ⑤VolumeCastTask向cinder-scheduler发送消息,实际就是把消息发给rabbitmq,所以看到有连接AMQP

    最后,volume_create_api flow达到success状态,完成了pending->running->success整个流程。

    PS:这里的Volume created successfully只代表cinder-api处理完成,不代表后端存储节点上的volume创建成功。

    二、cinder-scheduler

     

    1、cinder-scheduler也是开启一个volume_create_scheduler flow,这个flow也包含若干个任务

    ①ExtraceSchedulerSpecTask,不知道这个TASK干嘛用的,从日志里看这个TASK返回的结果,好像是指定了volume的一些性质

     

    ②SchedulerCreateVolumeTask完成的是filter和weight的工作

    filter依次经过:

    ·AvailabilityZoneFilter,可以给存储节点划分az,这样就可以通过该过滤器过滤到用户指定的az中创建卷;

    ·CapacityFilter过滤掉存储空间不满足用户需求的存储节点;

    ·CapabilitiesFilter,不同的后端存储,比如lvm、ceph、sheepdog等等这些产品有不同的特性,cinder用户允许创建volume时指定需要的Capabilities(特性),这个在dashboard页面中,通过volume Type来指定这个特性,volume Type可以根据不同的存储产品特性自定义。

     

    ③volume_create_scheduler到达success状态

    三、cinder-volume

     

    1、cinder-volume开启volume_create_manager flow,首先该flow的Task包括:

    ①ExtractVolumeRefTask

    ②OnFailureRescheduleTask

    ③ExtractVolumeSpecTask

    ④NotifyVolumeActionTask

    这四个Task为volume创建做准备,到底是什么功能,可以看他们都返回什么result,日志里有显示

     

    ⑤CreateVolumeFromSpecTask真正的执行volume创建任务,我的存储是lvm的(openstack默认的是lvm,可以在cinder.conf里指定后端存储类型),当然就用lvcreate这样的命令创建卷了,前面这个sudo cinder-rootwrap /etc/cinder/rootwrap.conf应该是类似于ssh到对应的存储节点上吧,而且应该和对应存储的驱动相关,待细看再说。

     

    ⑥CreatevolumeOnFinishTask,完成扫尾工作,具体的扫什么尾要看看代码了。

    最后volume_create_manager flow达到success状态

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

    最新回复(0)