
上一節我們討論了 Cinder 創建 Volume 的第一部分,cinder-api 的操作,本節繼續第二部分,cinder-scheduler 調度工作。
cinder-scheduler 執行調度
cinder-scheduler 執行調度算法,通過 Filter 和 Weigher 挑選最優的存儲節點 日志為 /opt/stack/logs/c-sch.log。
cinder-scheduler 通過 Flow volume_create_scheduler 執行調度工作。
該 Flow 依次執行 ExtractSchedulerSpecTask 和 ScheduleCreateVolumeTask。
主要的 filter 和 weighting 工作由 ScheduleCreateVolumeTask 完成。
經過 AvailabilityZoneFilter, CapacityFilter, CapabilitiesFilter 和 CapacityWeigher 的層層篩選,最終選擇了存儲節點 devstack-controller@lvmdriver-1#lvmdriver-1。
Flow volume_create_scheduler 完成調度,狀態變為 SUCCESS。
cinder-scheduler 發送消息
cinder-scheduler 發送消息給 cinder-volume,讓其創建 volume 源碼 /opt/stack/cinder/cinder/scheduler/filter_scheduler.py,方法為 schedule_create_volume。
下一節我們討論 Create Volume 的最后一部分: cinder-volume 的處理過程。

