搜索

10.7. Ceph OSD 容量确定

download PDF

总 IOPS 的 Ceph OSD 容量在 Ceph OSD 初始化期间自动决定。这可以通过运行 Ceph OSD bench 工具,并覆盖 osd_mclock_max_capacity_iops_[hdd, ssd] 选项的默认值,具体取决于设备类型。用户不需要其他操作或输入来设置 Ceph OSD 容量。

从自动化过程缓解非实际 Ceph OSD 容量

在某些情况下,Ceph OSD bench 工具可能会根据驱动器配置和其他环境相关条件显示不切的或有问题的结果。

要降低由于这种不切容量造成的性能影响,定义了几个阈值配置选项,具体取决于 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

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

执行以下自动步骤:

回退到使用默认 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 throttle 参数。
  • 有关 osd_mclock_max_capacity_iops_[hdd, ssd]osd_mclock_iops_capacity_threshold_[hdd, ssd] 选项的更多信息,请参阅 mClock 配置选项

10.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

10.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
    }

10.7.3. 确定正确的 BlueStore 节流值

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

重要

在运行测试前,清除缓存以获取准确的测量。使用以下命令清除每个基准之间的 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. 如果吞吐量与基准不匹配,请通过将 BlueStore 节流选项乘以 2 来提高 BlueStore 节流选项。
  8. 运行 4KiB 随机写入测试,将值与基准吞吐量进行比较,并将 BlueStore 节流选项乘以 2,直到获取的吞吐量非常接近基准值。
注意

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

对于 HDD,与 SSD 相比,BlueStore throttle 值应该较高。

10.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.