未及时深度清理的Ceph PG不断增加

问题描述 投票:0回答:4

我大约 4 天前就注意到了这一点,但现在不知道该怎么办。问题如下:

我有一个 6 节点 3 监视器 ceph 集群,带有 84 个 osd、72x7200rpm 旋转磁盘和 12xnvme SSD 用于日志记录。清理配置的每个值都是默认值。集群中的每个 pg 都是 active+clean,每个集群统计数据都是绿色的。但未及时深度清理的PG仍在增加,目前为96。 ceph -s 的输出:

  cluster:
    id:     xxxxxxxxxxxxxxxxx
    health: HEALTH_WARN
            1 large omap objects
            96 pgs not deep-scrubbed in time

  services:
    mon: 3 daemons, quorum mon1,mon2,mon3 (age 6h)
    mgr: mon2(active, since 2w), standbys: mon1
    mds: cephfs:1 {0=mon2=up:active} 2 up:standby
    osd: 84 osds: 84 up (since 4d), 84 in (since 3M)
    rgw: 3 daemons active (mon1, mon2, mon3)

  data:
    pools:   12 pools, 2006 pgs
    objects: 151.89M objects, 218 TiB
    usage:   479 TiB used, 340 TiB / 818 TiB avail
    pgs:     2006 active+clean

  io:
    client:   1.3 MiB/s rd, 14 MiB/s wr, 93 op/s rd, 259 op/s wr

我该如何解决这个问题?此外,ceph 运行状况详细信息输出显示此非深度清理的 pg 警报于 1 月 25 日开始,但我之前没有注意到这一点。我注意到这一点是在 osd 宕机 30 秒后又恢复的时候。可能与这个问题有关吗?它会自行解决吗?我应该篡改磨砂配置吗?例如,如果我将 osd_max_scrubs 从 1 增加到 2,我在客户端可能会面临多少性能损失?

ceph object-storage data-scrubbing
4个回答
4
投票

通常,集群会在集群上的 I/O 间隔较低时进行自我深度清理。默认情况下,每个 PG 必须每周深度擦洗一次。如果 OSD 出现故障,则无法对其进行深度清理,当然,这可能会导致一些延迟。 您可以运行类似的命令来查看哪些 PG 落后以及它们是否都在相同的 OSD 上:

ceph pg dump pgs | awk '{print $1" "$23}' | column -t

如有必要,对输出进行排序,并且您可以对受影响的 PG 之一发出手动深度清理,以查看数量是否减少以及深度清理本身是否有效。

ceph pg deep-scrub <PG_ID>

另请添加

ceph osd pool ls detail
以查看是否设置了任何标志。


3
投票

您可以将深度磨砂周期设置为2周,以延长深度磨砂窗口。 已安装

 osd_deep_scrub_interval = 604800

用途:

 osd_deep_scrub_interval = 1209600

先生。 Eblock 有一个好主意,可以手动强制某些 PG 进行深度清理,以便在 2 周内均匀地分散操作。


0
投票

您有 2 个选择:

  1. 增加深层磨砂的间隔时间。
  2. 使用独立脚本手动控制深度清理。

我编写了一个简单的 PHP 脚本,可以为我进行深度清理:https://gist.github.com/ethaniel/5db696d9c78516308b235b0cb904e4ad

它列出了所有 PG,选择 1 个 2 周前完成最后一次深度清理的 PG(脚本采用最旧的一个),检查 PG 所在的 OSD 是否未用于另一次清理(在active+clean 状态),然后才开始对该 PG 进行深度清理。否则它就会寻找另一个 PG。

我将 osd_max_scrubs 设置为 1(否则 OSD 守护进程会由于 Ceph 中的错误而开始崩溃),因此该脚本与常规调度程序配合良好 - 以先在 PG-OSD 上启动清理为准。


0
投票

默认情况下,Ceph 在恢复期间不会进行清理。 您可以告诉所有 osd 现在可以这样做(持续到重新启动为止)

ceph tell 'osd.*' injectargs --osd-scrub-during-recovery=1

© www.soinside.com 2019 - 2024. All rights reserved.