11.6. mClock 配置集


mClock 配置集是一个配置设置。当应用到正在运行的 Red Hat Ceph Storage 集群时,它允许将属于不同客户端类的 IOPS 操作节流,如后台恢复、清理snap trimclient oppg 删除

mClock 配置集使用容量限制和用户选择的 mClock 配置集类型,以确定低级 mClock 资源控制配置参数,并透明地应用它们。也会应用其他 Red Hat Ceph Storage 配置参数。低级 mClock 资源控制参数是保留、限制和权重,提供对资源共享的控制。mClock 配置集为每个客户端类型分配这些参数。

11.6.1. mClock 配置集类型

mClock 配置集可以分为 内置自定义配置文件

如果任何 mClock 配置集处于活跃状态,则禁用以下 Red Hat Ceph Storage 配置睡眠选项,这意味着它们被设置为 0

  • osd_recovery_sleep
  • osd_recovery_sleep_hdd
  • osd_recovery_sleep_ssd
  • osd_recovery_sleep_hybrid
  • osd_scrub_sleep
  • osd_delete_sleep
  • osd_delete_sleep_hdd
  • osd_delete_sleep_ssd
  • osd_delete_sleep_hybrid
  • osd_snap_trim_sleep
  • osd_snap_trim_sleep_hdd
  • osd_snap_trim_sleep_ssd
  • osd_snap_trim_sleep_hybrid

这是为了确保 mClock 调度程序能够确定何时从操作队列提取下一个操作并将其传送到操作序列。这会导致在所有客户端中都提供所需的 QoS。

Custom 配置集

这个配置集允许用户完全控制所有 mClock 配置参数。它应该谨慎使用,适用于了解 mClock 和 Red Hat Ceph Storage 相关配置选项的高级用户。

内置 配置集

启用 内置配置集时,mClock 调度程序会根据为每个客户端类型启用的配置集计算低级 mClock 参数,即保留、权重和限制。

mClock 参数根据前面提供的最大 Ceph OSD 容量计算。因此,在使用任何内置配置集时无法修改以下 mClock 配置选项:

  • osd_mclock_scheduler_client_res
  • osd_mclock_scheduler_client_wgt
  • osd_mclock_scheduler_client_lim
  • osd_mclock_scheduler_background_recovery_res
  • osd_mclock_scheduler_background_recovery_wgt
  • osd_mclock_scheduler_background_recovery_lim
  • osd_mclock_scheduler_background_best_effort_res
  • osd_mclock_scheduler_background_best_effort_wgt
  • osd_mclock_scheduler_background_best_effort_lim

    注意

    这些默认值不能使用任何 config subsystem 命令(如 config setconfig daemonconfig tell 命令)进行修改。虽然上述命令报告成功,但 mclock QoS 参数将恢复到其相应的内置配置集默认值。

以下恢复和回填相关的 Ceph 选项会被覆盖为 mClock 默认值:

警告

不要更改这些选项,因为内置配置集会根据它们进行了优化。更改这些默认值可能会导致意外的性能结果。

  • osd_max_backfills
  • osd_recovery_max_active
  • osd_recovery_max_active_hdd
  • osd_recovery_max_active_ssd

以下选项显示 mClock 默认值与当前默认值相同,以最大化前台客户端操作的性能:

osd_max_backfills
原始默认值
1
mClock 默认
1
osd_recovery_max_active
原始默认值
0
mClock 默认
0
osd_recovery_max_active_hdd
原始默认值
3
mClock 默认
3
osd_recovery_max_active_sdd
原始默认值
10
mClock 默认
10
注意

以上 mClock 默认值可以在需要时修改,仅通过启用 osd_mclock_override_recovery_settings (默认设置为 false )来修改。请参阅 修改回填和恢复选项来 修改这些参数。

内置 配置集类型

用户可以从以下 内置 配置集类型中选择:

  • balanced (默认)
  • high_client_ops
  • high_recovery_ops
注意

以下列表中提到的值表示分配给服务类型的 Ceph OSD 的总 IOPS 容量比例。

  • balanced

默认 mClock 配置集被设置为 balanced,因为它代表了在客户端 IO 或恢复 IO 之间有妥协。它为客户端操作和后台恢复操作分配相等的保留或优先级。背景最佳操作会给出较低的保留时间,因此在竞争操作时需要更长的时间才能完成。此配置集满足集群的正常或稳定状态要求,当外部客户端性能要求不重要且仍需要在 OSD 中需要注意的其他后台操作时。

可能存在需要为客户端操作或恢复操作赋予更高的优先级的实例。要满足这些要求,您可以选择 high_client_ops 配置集来优先选择客户端 IO 或 high_recovery_ops 配置集,以优先恢复 IO。下面将进一步讨论这些配置集。

服务类型:client
保留
50%
限制
MAX
Weight
1
服务类型:后台恢复
保留
50%
限制
MAX
Weight
1
服务类型: background best-effort
保留
MIN
限制
90%
Weight

1

  • high_client_ops

与 Ceph OSD 中的后台操作相比,这个配置集通过为客户端操作分配更多保留和限制,从而优化客户端性能。例如,这个配置集可以被启用,以便以较慢的恢复成本为 I/O 密集型应用程序提供所需的性能。以下列表显示配置集设置的资源控制参数:

服务类型:client
保留
60%
限制
MAX
Weight
2
服务类型:后台恢复
保留
40%
限制
MAX
Weight
1
服务类型: background best-effort
保留
MIN
限制
70%
Weight

1

  • high_recovery_ops

与 Ceph OSD 中的外部客户端和其他后台操作相比,此配置集优化了后台恢复性能。

例如,管理员可以临时启用它,以便在非高峰期加速后台恢复。以下列表显示配置集设置的资源控制参数:

服务类型:client
保留
30%
限制
MAX
Weight
1
服务类型:后台恢复
保留
70%
限制
MAX
Weight
2
服务类型: background best-effort
保留
MIN
限制
MAX
Weight
1

其它资源

11.6.2. 更改 mClock 配置集

默认 mClock 配置集设置为 balanced。其它类型 的内置 配置集是 high_client_opshigh_recovery_ops

注意

除非是高级用户,否则不建议使用 自定义配置集

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对 Ceph 监控主机的 root 级别访问权限。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 设置 osd_mclock_profile 选项:

    语法

    ceph config set osd.OSD_ID osd_mclock_profile VALUE

    示例

    [ceph: root@host01 /]# ceph config set osd.0 osd_mclock_profile high_recovery_ops

    这个示例更改了配置集,以便在 osd.0 上更快地恢复。

    注意

    为获得最佳性能,必须使用以下命令在所有 Ceph OSD 上设置配置集:

    语法

    ceph config set osd osd_mclock_profile VALUE

11.6.3. 在 内置配置集和 自定义配置集 间切换

以下步骤描述了从 内置 配置集切换到 自定义配置集,反之亦然。

如果要完全控制所有 mClock 配置选项,您可能希望切换到 自定义配置集。但是,建议您不要使用 自定义配置集,除非您是高级用户。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对 Ceph 监控主机的 root 级别访问权限。

内置 配置集切换到 自定义配置集

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 切换到 自定义配置集

    语法

    ceph config set osd.OSD_ID osd_mclock_profile custom

    示例

    [ceph: root@host01 /]# ceph config set osd.0 osd_mclock_profile custom

    注意

    为获得最佳性能,必须使用以下命令在所有 Ceph OSD 上设置配置集:

    示例

    [ceph: root@host01 /]# ceph config set osd osd_mclock_profile custom

  3. 可选:切换到 自定义配置集 后,修改所需的 mClock 配置选项:

    语法

    ceph config set osd.OSD_ID MCLOCK_CONFIGURATION_OPTION VALUE

    示例

    [ceph: root@host01 /]# ceph config set osd.0 osd_mclock_scheduler_client_res 0.5

    本例将特定 OSD osd.0 的客户端保留 IOPS 比率改为 0.5 (50%)

    重要

    相应地更改其他服务的保留,如后台恢复和背景最佳,以确保保留总和不超过 OSD 的 IOPS 容量的最大比例(1.0)。

自定义配置集 切换到 内置 配置集

  1. 登录到 cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 设置所需的 内置 配置集:

    语法

    ceph config set osd osd_mclock_profile MCLOCK_PROFILE

    示例

    [ceph: root@host01 /]# ceph config set osd osd_mclock_profile high_client_ops

    本例在所有 Ceph OSD 上将内置的配置集设置为 high_client_ops

  3. 确定数据库中现有的自定义 mClock 配置设置:

    示例

    [ceph: root@host01 /]# ceph config dump

  4. 删除之前确定的自定义 mClock 配置设置:

    语法

    ceph config rm osd MCLOCK_CONFIGURATION_OPTION

    示例

    [ceph: root@host01 /]# ceph config rm osd osd_mclock_scheduler_client_res

    本例删除在所有 Ceph OSD 上设置的配置选项 osd_mclock_scheduler_client_res

    从中央配置数据库中删除所有现有的自定义 mClock 配置设置后,会应用与 high_client_ops 相关的配置设置。

  5. 验证 Ceph OSD 上的设置:

    语法

    ceph config show osd.OSD_ID

    示例

    [ceph: root@host01 /]# ceph config show osd.0

11.6.4. 在 mClock 配置集间临时切换

本节包含在 mClock 配置集间临时切换的步骤。

警告

本节适用于高级用户或实验测试。不要在正在运行的存储集群中使用以下命令,因为它可能会造成意外的结果。

注意

使用以下命令对 Ceph OSD 的配置更改是临时的,并在 Ceph OSD 重启时丢失。

重要

使用本节中描述的命令覆盖的配置选项无法使用 ceph config set osd.OSD_ID 命令进一步修改。在重启给定的 Ceph OSD 前,这些更改才会生效。这是有意设计的,根据配置子系统设计。但是,仍可以使用这些命令临时进行进一步的修改。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对 Ceph 监控主机的 root 级别访问权限。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 运行以下命令来覆盖 mClock 设置:

    语法

    ceph tell osd.OSD_ID injectargs '--MCLOCK_CONFIGURATION_OPTION=VALUE'

    示例

    [ceph: root@host01 /]# ceph tell osd.0 injectargs '--osd_mclock_profile=high_recovery_ops'

    本例覆盖 osd.0 上的 osd_mclock_profile 选项。

  3. 可选: 您可以使用上一个 ceph 的替代方案告诉 osd.OSD_ID injectargs 命令:

    语法

    ceph daemon osd.OSD_ID config set MCLOCK_CONFIGURATION_OPTION VALUE

    示例

    [ceph: root@host01 /]# ceph daemon osd.0 config set osd_mclock_profile high_recovery_ops

注意

也可以使用上述命令临时修改 自定义配置集 的单个 QoS 相关配置选项。

11.6.5. 使用 mClock 配置集降级和未替换的对象恢复率

降级对象恢复被归类到后台恢复存储桶中。在所有 mClock 配置集中,与错误放置对象恢复相比,降级对象恢复会获得更高的优先级,因为降级对象会出现数据安全问题。

回填或错误的对象恢复操作被归类到后台 best-effort bucket 中。根据 balancedhigh_client_ops mClock 配置集,后台 best-effort 客户端不受保留的限制(设置为零),但仅限于使用一部分参与的 OSD 容量(如果没有其他竞争服务)。

因此,随着 balancedhigh_client_ops 配置集和其他后台竞争服务活跃,与之前的 WeightedPriorityQueue (WPQ)调度程序相比,回填率应该较慢。

如果需要更高的回填率,请按照以下部分中所述的步骤操作。

提高回填率

在使用 balancedhigh_client_ops 配置集时更快地回填率,请按照以下步骤操作:

  • 在回填期间,切换到 'high_recovery_ops' mClock 配置集。请参阅 更改 mClock 配置集 以达到此目的。回填阶段完成后,将 mClock 配置集切换到之前活跃的配置集。如果使用 'high_recovery_ops' 配置集在回填率中没有显著改进,请继续下一步。
  • 将 mClock 配置集切回到之前活跃的配置集。
  • 将 'osd_max_backfills' 修改为更高的值,例如 3。请参阅 修改回填和恢复选项来 实现这一点。
  • 回填完成后,按照步骤 3 中提到的步骤 3 将 'osd_max_backfills' 重置为默认值 1。
警告

请注意,修改 osd_max_backfills 可能会导致其他操作,例如,客户端操作可能会在回填阶段遇到更高的延迟。因此,建议用户以较小的增量增加 osd_max_backfills,以最大程度降低对集群中其他操作的性能影响。

11.6.6. 修改 回填和恢复 选项

使用 ceph config set 命令修改 backfillsrecovery 选项。

mClock 配置集类型 列出了可以修改的回填或恢复选项。

警告

本节适用于高级用户或实验测试。不要在正在运行的存储集群中使用以下命令,因为它可能会造成意外的结果。

仅为实验测试修改值,或者集群无法处理值,或使用默认设置显示性能不佳。

重要

对 mClock 默认回填或恢复选项的修改受 osd_mclock_override_recovery_settings 选项的限制,该选项默认设置为 false

如果您试图在不将 osd_mclock_override_recovery_settings 设置为 true 的情况下修改任何默认回填或恢复选项,它会将选项重置为 mClock 默认值,并在集群日志中记录警告信息。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对 Ceph 监控主机的 root 级别访问权限。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 在所有 Ceph OSD 上,将 osd_mclock_override_recovery_settings 配置选项设为 true

    示例

    [ceph: root@host01 /]# ceph config set osd osd_mclock_override_recovery_settings true

  3. 设置所需的 回填恢复选项

    语法

    ceph config set osd OPTION VALUE

    示例

    [ceph: root@host01 /]# ceph config set osd osd_max_backfills_ 5

  4. 等待几秒钟,并验证特定 OSD 的配置:

    语法

    ceph config show osd.OSD_ID_ | grep OPTION

    示例

    [ceph: root@host01 /]# ceph config show osd.0 | grep osd_max_backfills

  5. 在所有 OSD 上,将 osd_mclock_override_recovery_settings 配置选项重置为 false

    示例

    [ceph: root@host01 /]# ceph config set osd osd_mclock_override_recovery_settings false

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.