11.7. Ceph OSD 容量确定


总 IOPS 中的 Ceph OSD 容量是在 Ceph OSD 初始化过程中自动决定的。这可以通过运行 Ceph OSD bench 工具并覆盖 osd_mclock_max_capacity_iops_[hdd, ssd] 选项的默认值来实现。没有预期用户的其他操作或输入来设置 Ceph OSD 容量。

从自动化流程缓解不切实际的 Ceph OSD 容量

在某些情况下,Ceph OSD bench 工具可能会显示 unrealistic 或 inflated 结果,具体取决于驱动器配置和其他环境相关条件。

为了缓解这种不切容量导致性能影响,会定义并使用几个阈值配置选项,具体取决于 OSD 设备类型:

  • osd_mclock_iops_capacity_threshold_hdd = 500
  • osd_mclock_iops_capacity_threshold_ssd = 80000

您可以运行以下命令来验证这些参数:

[ceph: root@host01 /]# ceph config show osd.0 osd_mclock_iops_capacity_threshold_hdd
500.000000
[ceph: root@host01 /]# ceph config show osd.0 osd_mclock_iops_capacity_threshold_ssd
80000.000000
注意

如果要手动基准测试 OSD 或手动调整 BlueStore throttle 参数,请参阅 手动基准测试 OSD

您可以运行以下命令来在集群启动后验证 OSD 的容量:

语法

ceph config show osd.N osd_mclock_max_capacity_iops_[hdd, ssd]

示例

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

在上例中,您可以查看底层设备为 SSD 的 Red Hat Ceph Storage 节点上 osd.0 的最大容量。

执行以下自动步骤:

回退到使用默认 OSD 容量

如果 Ceph OSD bench 工具报告了超过上述阈值的测量,则回退机制将恢复到 osd_mclock_max_capacity_iops_hddosd_mclock_max_capacity_iops_ssd 的默认值。阈值配置选项可以根据使用的驱动器类型重新配置。

当测量超过阈值时,会记录集群警告:

示例

3403 Sep 11 11:52:50 dell-r640-039.dsal.lab.eng.rdu2.redhat.com ceph-osd[70342]: log_channel(cluster) log [WRN] : OSD bench result of 49691.213005 IOPS exceeded the threshold limit of 500.000000 IOPS for osd.27. IOPS capacity is unchanged at 315.000000 IOPS. The recommendation is to establish the osd's IOPS capacity using other benchmark tools (e.g. Fio) and then override osd_mclock_max_capacity_iops_[hdd|ssd].

重要

如果默认容量不准确表示 Ceph OSD 容量,则强烈建议您使用首选工具(如 Fio)在驱动器上运行自定义基准,然后覆盖 osd_mclock_max_capacity_iops_[hdd, ssd] 选项,如 指定最大 OSD 容量 中所述。

其它资源

  • 请参阅 手动基准测试 OSD 来手动基准测试 Ceph OSD 或手动调整 BlueStore 节流参数。
  • 有关 osd_mclock_max_capacity_iops_[hdd, ssd]osd_mclock_iops_capacity_threshold_[hdd, ssd] 选项的更多信息,请参阅 The mClock 配置选项

11.7.1. 验证 OSD 的容量

您可以在设置存储集群后验证 Ceph OSD 的容量。

先决条件

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

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 验证 Ceph OSD 的容量:

    语法

    ceph config show osd.OSD_ID osd_mclock_max_capacity_iops_[hdd, ssd]

    示例

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

11.7.2. 手动基准测试 OSD

若要手动对 Ceph OSD 进行基准测试,可以使用任何现有的基准测试工具,如 Fio。无论使用了工具或命令,以下步骤都保持不变。

重要

分片和 BlueStore throttle 参数的数量对 mClock 操作队列有影响。因此,仔细设置这些值非常重要,以便最大程度提高 mclock 调度程序的影响。有关这些值的更多信息,请参阅 影响 mClock 操作队列的因素

注意

只有在您要覆盖 OSD 初始化过程中自动决定的 Ceph OSD 容量时,才需要本节中的步骤。

注意

如果您已经确定了基准数据,并希望手动覆盖 Ceph OSD 的最大 OSD 容量,请跳至 指定最大 OSD 容量 部分。

先决条件

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

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 对 Ceph OSD 进行基准测试:

    语法

    ceph tell osd.OSD_ID bench [TOTAL_BYTES] [BYTES_PER_WRITE] [OBJ_SIZE] [NUM_OBJS]

    其中:

    • TOTAL_BYTES: 要写入的字节数。
    • BYTES_PER_WRITE :每个写入的块大小。
    • OBJ_SIZE :每个对象的字节.
    • NUM_OBJS: 要写入的对象数量。

    示例

    [ceph: root@host01 /]# ceph tell osd.0 bench 12288000 4096 4194304 100
    {
        "bytes_written": 12288000,
        "blocksize": 4096,
        "elapsed_sec": 1.3718913019999999,
        "bytes_per_sec": 8956977.8466311768,
        "iops": 2186.7621695876896
    }

11.7.3. 确定正确的 BlueStore 节流值

此可选部分详细介绍了用来确定正确 BlueStore 节流值的步骤。这些步骤使用默认分片。

重要

在运行测试前,请清除缓存以获得准确的测量。使用以下命令清除每个基准运行之间的 OSD 缓存:

语法

ceph tell osd.OSD_ID cache drop

示例

[ceph: root@host01 /]# ceph tell osd.0 cache drop

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对托管您要进行基准测试的 OSD 的 Ceph 监控节点的根级别访问权限。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 在 OSD 上运行简单的 4KiB 随机写入工作负载:

    语法

    ceph tell osd.OSD_ID bench 12288000 4096 4194304 100

    示例

    [ceph: root@host01 /]# ceph tell osd.0 bench 12288000 4096 4194304 100
    {
        "bytes_written": 12288000,
        "blocksize": 4096,
        "elapsed_sec": 1.3718913019999999,
        "bytes_per_sec": 8956977.8466311768,
        "iops": 2186.7621695876896 1
    }

    1
    osd bench 命令的输出中获取的整体吞吐量。这个值是基线吞吐量,当默认的 BlueStore throttle 选项生效时。
  3. 请注意,从上一命令的输出中获取的整体吞吐量,即 IOPS。
  4. 如果要确定环境的 BlueStore 节流值,请将 bluestore_throttle_bytesbluestore_throttle_deferred_bytes 选项设置为 32 KiB,即 32768 Bytes :

    语法

    ceph config set osd.OSD_ID bluestore_throttle_bytes 32768
    ceph config set osd.OSD_ID bluestore_throttle_deferred_bytes 32768

    示例

    [ceph: root@host01 /]# ceph config set osd.0 bluestore_throttle_bytes 32768
    [ceph: root@host01 /]# ceph config set osd.0 bluestore_throttle_deferred_bytes 32768

    否则,您可以跳至下一部分 指定最大 OSD 容量

  5. 使用 OSD bench 命令之前,运行 4KiB 随机写入测试:

    示例

    [ceph: root@host01 /]# ceph tell osd.0 bench 12288000 4096 4194304 100

  6. 注意输出的整体吞吐量,并将值与之前记录的基准吞吐量进行比较。
  7. 如果吞吐量与基准不匹配,请通过 2 乘以 2 来增加 BlueStore throttle 选项。
  8. 运行 4KiB 随机写入测试,将值与基准吞吐量进行比较,并通过乘以 2 来增加 BlueStore 节流选项,直到获取的吞吐量接近基准值。
注意

例如,在对具有 NVMe SSD 的机器进行基准测试期间,BlueStore 节流和延迟字节数都有一个 256 KiB 值,这决定了最大化 mClock 的影响。对于 HDD,对应的值为 40 MiB,其中整个吞吐量大致等于基准吞吐量。

对于 HDD,与 SSD 相比,BlueStore 节流的值应该较高。

11.7.4. 指定最大 OSD 容量

您可以在 OSD 初始化过程中自动设置最大 Ceph OSD 容量。

这些步骤是可选的。如果默认容量不准确代表 Ceph OSD 容量,请执行以下步骤。

注意

确保您首先确定基准数据,如 手动基准测试 OSD 所述。

先决条件

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

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 为 OSD 设置 osd_mclock_max_capacity_iops_[hdd, ssd] 选项:

    语法

    ceph config set osd.OSD_ID osd_mclock_max_capacity_iops_[hdd,ssd] VALUE

    示例

    [ceph: root@host01 /]# ceph config set osd.0 osd_mclock_max_capacity_iops_hdd 350

    本例将 osd.0(其底层设备类型为 HDD)的最大容量设置为 350 IOPS。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.