知识卡片
CRUSH优于普通Hash的两个特性
内容
把 PG 映射到 OSD 这一步,Ceph 没有用普通 Hash,而是专门设计了 CRUSH,原因在于普通 Hash 缺两样东西:一是可配置性——CRUSH 能按管理员定义的策略(比如同一 PG 的 3 个副本必须分布在不同机架)决定 OSD 的物理位置,而普通 Hash 算不出这种带约束的结果;二是稳定性——集群规模扩大、新增 OSD 时,CRUSH 能保证大多数已有的 PG→OSD 映射不变,只有少部分 PG 会迁移,普通 Hash 取模一旦节点数变化几乎会导致全局重排。这两点合起来正好对应[[数据分布算法的三个设计目标]]里的故障域隔离与控制数据迁移量两项,让 CRUSH 既能落地容灾策略,又能把扩容代价压到最低。
参考来源
《Ceph分布式存储实战》第3章《智能分布CRUSH》