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