点击create volume
会看到如下界面
填好信息后选择create volume,就可以看到新建的volume
每个voulme对应的操作如下:
点击“Create Volume” 按钮,cinder-api 将接收到创建 volume 的请求。
查看 cinder-api 日志 /opt/stack/logs/c-api.log。
可见收到了一个POST 类型的RESTFUL API 来创建一个1GB的volume
cinder-api 启动了一个 Flow(工作流)volume_create_api。Flow 的执行状态依次为 PENDING, RUNNING 和 SUCCESS。分别对应ExtractVolumeRequestTask,QuotaReserveTask,EntryCreateTask
最终成功创建volume
对应的cinder-api的源码如下:
cinder-scheduler 执行调度:
可以看到cinder-schedule 的状态变化为PENDING->RUNNING->SUCCESS.启动的flow有两个ExtractSchedulerSpecTask,ScheduleCreateVolumeTask。经过的filter有三个AvailabilityZoneFilter,CapacityFilter,CapabilitiesFilter
/cinder/cinder/scheduler/filter_scheduler.py,方法为 schedule_create_volume
cinder-volume 也启动了一个 Flow 来完成 volume 创建工作,Flow 的名称为 volume_create_manage
volume_create_manager 首先执行 ExtractVolumeRefTask, OnFailureRescheduleTask, ExtractVolumeSpecTask, NotifyVolumeActionTask 为 volume 创建做准备。
从2570可以看出用的是rdb driver最终在2577行成功创建volume。