Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)

时间:2024-01-04 19:35:14

Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)

上一节我们讨论了 Cinder 创建 Volume 的第一部分,cinder-api 的操作,本节继续第二部分,cinder-scheduler 调度工作。

cinder-scheduler 执行调度

cinder-scheduler 执行调度算法,通过 Filter 和 Weigher 挑选最优的存储节点 日志为 /opt/stack/logs/c-sch.log。

cinder-scheduler 通过 Flow volume_create_scheduler 执行调度工作。

Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)

该 Flow 依次执行 ExtractSchedulerSpecTask 和 ScheduleCreateVolumeTask。

Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)

主要的 filter 和 weighting 工作由 ScheduleCreateVolumeTask 完成。

Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)

经过 AvailabilityZoneFilter, CapacityFilter, CapabilitiesFilter 和 CapacityWeigher 的层层筛选,最终选择了存储节点 devstack-controller@lvmdriver-1#lvmdriver-1。

Flow volume_create_scheduler 完成调度,状态变为 SUCCESS。

Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)

cinder-scheduler 发送消息

cinder-scheduler 发送消息给 cinder-volume,让其创建 volume 源码 /opt/stack/cinder/cinder/scheduler/filter_scheduler.py,方法为 schedule_create_volume。

Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)

下一节我们讨论 Create Volume 的最后一部分: cinder-volume 的处理过程。

Create Volume 操作(Part II) - 每天5分钟玩转 OpenStack(51)