- 在 /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 基于存储节点的空闲容量计算权重值,空闲容量最大的胜出。
|