大型分布式文件系统传统上需要元数据来指明每个块或对象所在的位置。在 PB 级规模下,这些分配映射会带来协调、恢复和再平衡方面的问题。

Ceph 的答案是 CRUSH:一种伪随机放置函数。客户端和存储节点可以根据对象名称和集群映射计算出对象的位置,而不必查询中央表。

OSDI 论文报告称,Ceph 支持每秒超过 250,000 次元数据操作,而 CRUSH 的论文则将这一算法定位为可支持数万乃至数十万个存储设备,同时避免使用中央目录。

将放置变为一个函数

确定性的放置函数让每个参与者都能独立找到同一个对象。

权重和故障域规则保留了机架和设备容量等现实约束。

小的拓扑变化只会移动必须移动的数据,使扩容和故障的干扰更小。

移除分配列表后,元数据服务器的职责缩减为命名空间,而不再是每个字节的地址。

在极端规模下,删除协调可能比优化协调更重要;一个共享的确定性函数可以取代一个共享的可变目录。

CRUSH 成为 Ceph 的标志性理念之一,并帮助该项目成为一个持久的开源存储系统。它的美在于架构层面:在 PB 级规模下,最好的目录就是根本没有目录。

从这里,追溯依据

参考来源

  1. CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data Storage Systems Research Center, UC Santa Cruz · ssrc.us
  2. Ceph: A Scalable, High-Performance Distributed File System USENIX · usenix.org ·