知识卡片

引入PG层的管理开销缩放意义

专业/工作 · 555.a

内容

如果没有PG这一层,Object要直接映射到OSD,一个OSD上可能承载数百万个Object,为了维护副本一致性,每个OSD就要和共同持有同一个Object的其他OSD交换数百万乃至数千万次心跳与状态信息,这个开销完全无法承受。引入PG后,一个OSD只需要和与它共同承载同一个PG的其他OSD打交道——一个OSD上大约承载数百个PG,每个PG通常3副本,交换信息的量级从”千万级”降到”千级”,同时PG作为一个可以被CRUSH算法整体寻址、整体做故障恢复的单位,让数据迁移、状态同步的调度粒度也变得可控。发散:这本质是”批量分组降低管理复杂度”的又一次应用——不管理海量的原子对象,转而管理数量少得多的分组,组内共享调度决策,这与数据库分区表、消息队列分区(Partition)思路完全一致。

参考来源

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