点击create volume

create volume

会看到如下界面

create volume


填好信息后选择create volume,就可以看到新建的volume

create volume

每个voulme对应的操作如下:

create volume

点击“Create Volume” 按钮,cinder-api 将接收到创建 volume 的请求。

查看 cinder-api 日志 /opt/stack/logs/c-api.log。

可见收到了一个POST 类型的RESTFUL API 来创建一个1GB的volume

create volume

cinder-api 启动了一个 Flow(工作流)volume_create_api。Flow 的执行状态依次为 PENDING, RUNNING 和 SUCCESS。分别对应ExtractVolumeRequestTask,QuotaReserveTask,EntryCreateTask

create volume

create volume

create volume

最终成功创建volume

create volume

对应的cinder-api的源码如下:

create volume


cinder-scheduler 执行调度:

可以看到cinder-schedule 的状态变化为PENDING->RUNNING->SUCCESS.启动的flow有两个ExtractSchedulerSpecTask,ScheduleCreateVolumeTask。经过的filter有三个AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter

create volume

/cinder/cinder/scheduler/filter_scheduler.py,方法为 schedule_create_volume

create volume

cinder-volume 也启动了一个 Flow 来完成 volume 创建工作,Flow 的名称为 volume_create_manage

volume_create_manager 首先执行 ExtractVolumeRefTask, OnFailureRescheduleTask, ExtractVolumeSpecTask, NotifyVolumeActionTask 为 volume 创建做准备。

从2570可以看出用的是rdb driver最终在2577行成功创建volume。

create volume

create volume

相关文章: