天天看點

Create Volume 操作(Part II) - 每天5分鐘玩轉 OpenStack(51)cinder-scheduler 執行排程 cinder-scheduler 發送消息

Create Volume 操作(Part II) - 每天5分鐘玩轉 OpenStack(51)cinder-scheduler 執行排程 cinder-scheduler 發送消息

上一節我們讨論了 Cinder 建立 Volume 的第一部分,cinder-api 的操作,本節繼續第二部分,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)cinder-scheduler 執行排程 cinder-scheduler 發送消息

該 Flow 依次執行 ExtractSchedulerSpecTask 和 ScheduleCreateVolumeTask。

Create Volume 操作(Part II) - 每天5分鐘玩轉 OpenStack(51)cinder-scheduler 執行排程 cinder-scheduler 發送消息

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

Create Volume 操作(Part II) - 每天5分鐘玩轉 OpenStack(51)cinder-scheduler 執行排程 cinder-scheduler 發送消息

經過 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-scheduler 發送消息給 cinder-volume,讓其建立 volume 源碼 /opt/stack/cinder/cinder/scheduler/filter_scheduler.py,方法為 schedule_create_volume。

Create Volume 操作(Part II) - 每天5分鐘玩轉 OpenStack(51)cinder-scheduler 執行排程 cinder-scheduler 發送消息

下一節我們讨論 Create Volume 的最後一部分: cinder-volume 的處理過程。

Create Volume 操作(Part II) - 每天5分鐘玩轉 OpenStack(51)cinder-scheduler 執行排程 cinder-scheduler 發送消息

繼續閱讀