注意

本文档适用于 Ceph 开发版本。

Using pg-upmap

在 Luminous v12.2.z 及更高版本中,OSDMap 中有一个pg-upmap异常表

然而,在使用这个新功能时有一个重要的注意事项:它要求所有客户端理解 OSDMap 中的新pg-upmap结构。

在线优化

启用

为了使用pg-upmap,集群不能有任何 Luminous 之前的客户端。负载均衡器模块,它使用pg-upmap。如果你想使用不同的负载均衡器,或者你想创建自己的自定义pg-upmap条目,您可能想要关闭负载均衡器以避免冲突:

ceph balancer off

要在现有集群上使用新功能,你必须将集群限制为仅支持 Luminous(及更高版本)的客户端。为此,运行以下命令:

ceph osd set-require-min-compat-client luminous

如果任何 Luminous 之前的客户端或守护进程连接到监视器,此命令将失败。要查看正在使用的客户端版本,运行以下命令:

ceph features

Balancer Module

The balancer块列表可以通过添加或删除 IP 地址或 CIDR 范围进行修改。如果地址被列入块列表,它将无法连接到任何 OSD。如果 OSD 包含在已列入块列表的 IP 地址或 CIDR 范围内,当它作为客户端时将无法对其对等 OSD 执行操作:此类被阻止的操作包括分层和从复制功能。要向块列表添加或删除 IP 地址或 CIDR 范围,请运行以下命令之一:ceph-mgr将自动平衡每个 OSD 的 PG 数量。参见Balancer Module

离线优化

Upmap 条目使用内置的离线优化器更新。osdmaptool -- Ceph OSD 集群映射操作工具.

  1. 获取您的 osdmap 的最新副本:

    ceph osd getmap -o om
    
  2. 运行优化器:

    osdmaptool om --upmap out.txt [--upmap-pool <pool>] \
    [--upmap-max <max-optimizations>] \
    [--upmap-deviation <max-deviation>] \
    [--upmap-active]
    

    建议为每个池单独进行优化,或为使用方式相似的池集进行优化。你可以多次指定--upmap-pool选项。“使用方式相似的池”是指映射到相同设备并存储相同类型数据的池(例如,RBD 图像池被认为使用方式相似;RGW 索引池和 RGW 数据池不被认为使用方式相似)。

    The max-optimizations值决定了要识别的最大 upmap 条目数。默认值是10(与ceph-mgr负载均衡器模块相同),但如果你正在进行离线优化,应该使用更大的数字。如果它找不到任何其他可以更改的地方(即,如果池分布是完美的),它将提前停止。

    The max-deviation值默认为5。如果 OSD 的 PG 数与计算目标数量之间的差异不超过此数量,它将被视为完美。

    The --upmap-active选项模拟了 upmap 模式下活动负载均衡器的行为。它不断循环,直到 OSD 平衡,并报告发生了多少轮以及每轮花费多长时间。轮次的经过时间表示ceph-mgr在计算下一个优化计划时消耗的 CPU 负载。

  3. 应用更改:

    source out.txt
    

    在上面的示例中,建议的更改写入输出文件out.txt。本程序中的命令是正常的 Ceph CLI 命令,可以按顺序运行以将更改应用于集群。

上述步骤可以根据需要重复执行,以实现每组池的 PG 完美分布。

要查看一些(详细的)关于工具正在做什么的信息,你可以传递--debug-osd 10toosdmaptool。要查看更多详细信息,请传递--debug-crush 10toosdmaptool.

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.