知识卡片
过滤加权重的两阶段调度模型
内容
cinder-scheduler选择该把卷创建在哪个存储节点上,分两步走:第一步用一组过滤器(Filter)淘汰掉不满足硬性条件的节点(比如剩余空间不够),第二步对剩下满足条件的候选节点分别计算权重并排序,选出综合得分最高的一个。过滤解决的是”能不能用”的二元判断,权重解决的是”用哪个更好”的排序问题,两者被拆成独立的、可插拔的模块,用户可以在配置文件里自由组合启用哪些过滤器和权重算法。发散:这套”先做硬性淘汰、再做软性排序”的两阶段调度模型是资源调度器的通用范式,后面会在容器编排系统的调度器里看到几乎一模一样的结构——先排除不满足资源、亲和性等约束的节点,再按打分策略挑一个最优解,这种拆分让调度逻辑的两个关注点(正确性约束、优化目标)可以完全独立演化。
参考来源
《Linux开源存储全栈详解从Ceph到容器存储》第8章《OpenStack存储》