知识卡片

CRUSH用计算寻址替代查表寻址解决的核心问题

专业/工作 · 555.b

内容

传统分布式存储用专用服务器维护”数据在哪”的映射表,客户端每次访问都要先查表,天然带来单点故障、性能瓶颈和额外的访问延迟。简单哈希能去掉这个中心节点,但集群规模变化时会引发几乎所有数据的剧烈迁移;一致性哈希改善了这一点,但对存储节点的物理分布毫无感知,无法控制副本落在不同机架、不同电源域这类失效域上。CRUSH算法在一致性哈希的基础上引入了对物理拓扑(CRUSH Map)和策略规则的感知:给定同样的元数据,任何节点都能独立计算出数据该存到哪,扩容或故障时只有相关的一小部分数据需要迁移,还能按需控制副本分布在不同的失效域中。发散:CRUSH解决的不是”要不要中心化”这个二元问题,而是在”去中心化带来的规模优势”和”中心化带来的精细调度能力”之间,用一份全局共享但轻量的元数据,把两者都保留了下来。

参考来源

《Linux开源存储全栈详解从Ceph到容器存储》第7章《分布式存储与Ceph》