3.4. PG 数量
池中放置组的数量对于集群如何对等、分布数据和重平衡操作起非常重要的作业。与大型集群相比,在小集群中增加放置组的数据对性能并不会有显著提高。但是,具有许多访问相同 OSD 的池的集群可能需要仔细考虑 PG 数量,以便 Ceph OSD 使用资源。
红帽建议每个 OSD 使用 100 到 200 个 PG。
3.4.1. PG Calculator 复制链接链接已复制到粘贴板!
PG 计算器计算您和地址特定用例的放置组数量。当使用 Ceph 客户端(如 Ceph 对象网关)时,PG 计算器尤其有用,其中有许多池通常使用相同的规则(CRUSH 层次结构)。您仍然可以参照 PG Count for Small Clusters 和 Calculating PG Count 来手动计算 PG。但是,PG 计算器是计算 PG 的首选方法。
有关详细信息,请参阅红帽客户门户网站 上 每个池计算器的 Ceph 放置组(PG)。
3.4.2. 配置默认 PG 计数 复制链接链接已复制到粘贴板!
当您创建池时,您还要为池创建几个放置组。如果您没有指定放置组数量,Ceph 将使用默认值 8,这不可接受。您可以为池增加放置组数量,但我们建议 Ceph 配置文件中设置合理的默认值。
osd pool default pg num = 100 osd pool default pgp num = 100
osd pool default pg num = 100
osd pool default pgp num = 100
您需要设置放置组数量(总计)以及用于对象的放置组数量(在 PG 分隔中使用的数量)。它们应该相等。
3.4.3. Small 集群的 PG Count 复制链接链接已复制到粘贴板!
小集群不会从大量放置组中受益。随着 OSD 数量的增加,为 pg_num 和 pgp_num 选择正确的值会变得更为重要,因为在出现问题时以及数据不稳定(这是严重事件导致数据丢失的可能性)时,对集群的行为有显著影响。使用带有小集群的 PG 计算器 非常重要。
3.4.4. 计算 PG 数量 复制链接链接已复制到粘贴板!
如果您有超过 50 个 OSD,建议每个 OSD 大约有 50-100 个放置组来均衡资源使用情况、数据持久性和分布。如果您有超过 50 个 OSD,在 Small 集群的 PG Count 中选择是理想的选择。对于单个对象池,您可以使用以下公式获取基准:
(OSDs * 100)
Total PGs = ------------
pool size
(OSDs * 100)
Total PGs = ------------
pool size
其中,pool size 是复制池的副本数,或用于删除代码池的 K+M 总和(ceph osd erasure-code-profile 的返回值)。
然后,您应该检查结果是否适合您设计 Ceph 集群以最大化数据持久性、数据分布和最小化资源使用量。
结果应 向上取整为两个最接近的电源。向上舍入是可选的,但建议使用 CRUSH 在放置组之间均匀地平衡对象数量。
对于 200 个 OSD 和池大小 3 个副本的集群,您可以估计 PG 数量,如下所示:
(200 * 100)
----------- = 6667. Nearest power of 2: 8192
3
(200 * 100)
----------- = 6667. Nearest power of 2: 8192
3
在 200 个 OSD 之间分布 8192 个放置组,评估每个 OSD 大约有 41 个放置组。您还需要考虑集群中可能会使用的池数量,因为每个池也会创建放置组。确保您有合理的 最大 PG 数量。
3.4.5. 最大 PG 数量 复制链接链接已复制到粘贴板!
当使用多个数据池来存储对象时,您需要确保平衡每个池的放置组数量与每个 OSD 的放置组数量,以便您可以达到合理的放置组总数。目的是在不消耗系统资源或使 peering 进程太慢的情况下,为每个 OSD 达到合理的差异。
在由 10 个池组成的 exemplary Ceph Storage 集群中,每个池在 10 个 OSD 上有 512 个放置组,总计有 5120 个 PG 分布于 10 个 OSD 中,或每个 OSD 都有 512 个放置组。取决于硬件配置,可能无法使用过多的资源。相反,如果您创建 1,000 个池,每个 PG 具有 512 个 PG,OSD 将处理 ~50,000的放置组,这需要大量资源。使用每个 OSD 的放置组数量太多的操作可能会显著降低性能,特别是重新平衡或恢复期间。
Ceph Storage 集群为每个 OSD 有一个默认值 300 个放置组。您可以在 Ceph 配置文件中设置不同的最大值。
mon pg warn max per osd
mon pg warn max per osd
Ceph 对象网关部署有 10-15 池,因此,您可以考虑每个 OSD 使用 100 个 PG 达到合理的数量。