注意
本文档适用于 Ceph 的开发版本。
Ceph 中的平衡
简介
在 Ceph 这样的分布式存储系统中,平衡写入和读取请求对于实现最佳性能至关重要。写入平衡确保了集群中数据的快速存储和复制,而读取平衡确保了集群中数据的快速访问和检索。出于不同的原因,这两种类型的平衡在分布式系统中都很重要。
Upmap 平衡
在集群中的重要性
容量平衡是一项功能要求。像 Ceph 这样的系统,其容量取决于最满的设备:当一个设备满时,系统就无法再处理写入请求,Ceph 就会失去其功能。为了避免设备被填满,我们希望以公平的方式在设备之间平衡容量。每个设备都应该获得与其大小成比例的容量,以便所有设备具有相同的满度水平。从性能角度来看,容量平衡为 OSD 上的写入请求创建了公平的份额工作负载。
容量平衡成本高昂。根据定义,此操作(更改 pg 的映射)需要数据移动,这需要时间。在此期间,系统的性能会下降。
在 Ceph 中,如果所有设备都是同构的(大小和性能相同),我们可以平衡写入性能。
如何在 Ceph 中平衡容量
有关详细信息,请参阅 使用 pg-upmap。
读取平衡
与容量平衡不同,读取平衡不是 Ceph 功能的严格要求。相反,它是一个性能要求,因为它有助于系统更好地“工作”。总体目标是确保每个设备获得其公平份额的主 OSD,以便读取请求在集群中的 OSD 之间均匀分布。不平衡的读取请求会导致性能不佳,因为总体集群带宽会降低。
读取平衡成本低廉。与容量平衡不同,它不涉及数据移动。它只是一个元数据操作,其中 osdmap 会更新,以更改 pg 中哪个参与 OSD 是主 OSD。此操作速度快,对集群性能没有影响(除了操作完成后性能有所改善——几乎是立即)。
在 Ceph 中,如果所有设备都是同构的(大小和性能相同),我们可以平衡读取性能。但是,在未来的版本中,可以改进读取平衡器以在异构系统中实现总体集群性能。
如何在 Ceph 中平衡读取
有关详细信息,请参阅 操作读取(主)平衡器。
另外,请参阅 Cephalocon 2023 演讲 New Read Balancer in Ceph,了解读取平衡器离线版本的演示。
下一版本的计划
改进池中异构 OSD 的行为