知识卡片

Placement Rules用take-choose-emit描述副本分布规则

专业/工作 · 237.h.3

内容

副本该怎么分布在 [[层级化ClusterMap实现机架感知|Cluster Map]] 上,由一段小型 DSL 描述:take 选定一个起始 bucket(通常是 root),choose/chooseleaf 逐层向下按指定类型选出若干子 bucket(可以一路递归到叶子节点选出具体 OSD),emit 输出结果。这套小语言可以表达远比”选 N 个随机节点”复杂的策略——例如让主副本必须落在 SSD、其余副本落在 HDD,只需要连续两组 take/choose/emit 分别从不同的 root bucket 取数据后拼接结果。把选择逻辑做成可组合的小步骤序列,而不是写死几种预设策略,是这套规则语言能覆盖各种硬件混合场景的关键。

参考来源

《Ceph源码分析》第4章《CRUSH数据分布算法》