- 在 /etc/cinder/cinder.conf 中,cinder 經過 scheduler_driver, scheduler_default_filters 和 scheduler_default_weighers 這三個參數來配置 cinder-scheduler。
|
|
- scheduler_driver
- Filter scheduler 是 cinder-scheduler 默認的調度器。 在/etc/cinder/cinder.conf中
|
scheduler_driver=cinder.scheduler.filter_scheduler.FilterScheduler
|
- 與 Nova 同樣,Cinder 也容許使用第三方 scheduler,配置 scheduler_driver 便可
|
|
- scheduler_default_filters
- 當 Filter scheduler 須要執行調度操做時,會讓 filter 對存儲節點進行判斷,filter 返回 True 或者 False。
|
scheduler_default_filters = AvailabilityZoneFilter, CapacityFilter, CapabilitiesFilter
|
|
|
- Filter scheduler 將按照列表中的順序依次過濾
- AvailabilityZoneFilter [əˌveɪlə'bɪlətɪ]
- 爲提升容災性高可用是指提供服務的有效時間大於99.99%,主要防止服務器出現物理或邏輯故障後服務不可用;災備是指整個機房出現故障後可以將業務切換到另外一個機房繼續服務和提供隔離服務,能夠將存儲節點和計算節點劃分到不一樣的 Availability Zone 中。例如把一個機架上的機器劃分在一個 Availability Zone中。
- OpenStack 默認有一個命名爲「Nova」 Availability Zone 的,用戶能夠根據須要建立本身的 Availability Zone。
- 建立 Volume 時,須要指定 Volume 所屬的 Availability Zone。

- cinder-scheduler 在作 filtering 時,會使用 AvailabilityZoneFilter 將不屬於指定 Availability Zone 的存儲節點過濾掉。Availability Zone是針對節點來講的,並非說volume在哪一個Availability Zone,而是若是某個節點不屬於指定的Availability Zone,那麼這個存儲節點就會被過濾掉。
|
 主機聚合 |
- CapacityFilter
- 建立 Volume 時,用戶會指定 Volume 的大小。CapacityFilter 的做用是將存儲空間不能知足 Volume 建立需求的存儲節點過濾掉。
|
 |
- CapabilitiesFilter
- 不一樣的 Volume Provider 有本身的特性(Capabilities),好比是否支持 thin provision 等。Cinder 容許用戶建立 Volume 時經過 Volume Type 指定須要的 Capabilities。
|
 |
- Volume Type 能夠根據須要定義若干 Capabilities,詳細描述 Volume 的屬性。Volume Type 的做用與 Nova 的 flavor 相似。Volume Type 在 Admin -> Volume -> Volume Types菜單裏管理。
- 經過 Volume Type 的 Extra Specs specification[ˌspɛsəfɪˈkeʃən](N-COUNT) 規格;具體要求 定義 Capabilities
encryption[ɪn'krɪpʃn]n. 編密碼; 加密;Extra Specs 是用 Key-Value 的形式定義。不一樣的 Volume Provider 支持的 Extra Specs 不一樣,須要參考 Volume Provider 的文檔。 上圖所示的 Volume Type 只有一個 Extra Specs 「volume_backend_name」,這是最重要也是必須的 Extra Specs。cinder-volume 會在本身的配置文件 /etc/cinder/cinder.conf 中設置「volume_backend_name」這個參數,其做用是爲存儲節點的 Volume Provider 命名。
|
 |
- 這樣,CapabilitiesFilter 就能夠經過 Volume Type 的「volume_backend_name」篩選出指定的 Volume Provider。不一樣的存儲節點能夠在各自的 cinder.conf 中配置相同的 volume_backend_name,這是容許的。由於雖然存儲節點不一樣,但它們可能使用的是一種 Volume Provider。若是在第一步 filtering 環節選出了多個存儲節點,那麼接下來的 weighting 環節會挑選出最合適的一個節點。
|
|
- scheduler_default_weighers
- Filter Scheduler 經過 scheduler_default_weighers 指定計算權重的 weigher,默認爲 CapacityWeigher。
|
scheduler_default_weighers = CapacityWeigher
|
|
|
- CapacityWeigher 基於存儲節點的空閒容量計算權重值,空閒容量最大的勝出。
|