2.5. Ceph CRUSH 规则集

Ceph 为池分配 CRUSH 规则集。当 Ceph 客户端在池中存储或检索数据时,Ceph 会标识 CRUSH 规则集、规则集内的规则以及用于存储和检索数据的规则中的顶级 bucket。当 Ceph 处理 CRUSH 规则时,它会标识包含对象的 PG 的 Primary OSD。这使得客户端能够直接连接到 OSD,访问 PG 以及读取或写入对象数据。

若要将放置组映射到 OSD,CRUSH map 定义了 bucket 类型的层次结构。bucket 类型的列表位于生成的 CRUSH map 中的 类型 下。创建 bucket 层次结构的目的是通过故障域和/或性能域来隔离 leaf 节点,如驱动器类型、主机、机箱、机架、电源管理单元、pod、行、房间和数据中心。

除了代表 OSD 的叶节点外,层次结构的其余部分是任意的。如果默认类型不符合其要求,管理员可以根据自己的需要对其进行定义。CRUSH 支持向无形图建模 Ceph OSD 节点,通常采用层次结构。因此,Ceph 管理员可以通过单个 CRUSH 映射中的多个根节点来支持多个层次结构。例如,管理员可以创建一个层次结构,代表更高的成本 SSD,以及采用 SSD 日志实现性能降低的成本硬盘驱动器的单独层次结构。