3.5. 自动扩展放置组


池中放置组(PG)的数量对于集群如何对等、分布数据和重平衡操作起非常重要的作业。

自动扩展 PG 数量可以更轻松地管理集群。pg-autoscaling 命令提供扩展 PG 的建议,或者根据集群的使用方式自动扩展 PG。

3.5.1. 放置组自动扩展

auto-scaler 的工作原理

auto-scaler 分析池并根据每个子树进行调整。由于每个池都可以映射到不同的 CRUSH 规则,并且每个规则可以在不同的设备间分布数据,Ceph 都将独立使用每个子树。例如,映射到类 ssd 的 OSD 的池以及映射到类 hdd 的 OSD 的池,各自具有取决于这些对应设备类型的最优 PG 数量。

3.5.2. 放置组分割和合并

分割

Red Hat Ceph Storage 可将现有放置组(PG)分成较小的 PG,这会增加给定池的 PG 总数。分割现有放置组(PG)允许小的 Red Hat Ceph Storage 集群随着存储要求增加而进行扩展。PG 自动扩展功能可以增加 pg_num 值,这会导致现有 PG 在存储集群扩展时分割。如果 PG 自动扩展功能被禁用,您可以手动增加 pg_num 值,这将触发 PG 分割进程开始。例如,将 pg_num 值从 4 增加到 16,将分为四部分。增加 pg_num 值也会增加 pgp_num 值,但 pgp_num 值会以 gradual 速率增加。逐步增加是为了最大程度降低存储集群性能和客户端工作负载的影响,因为迁移对象数据给系统带来显著的负载。默认情况下,Ceph 队列且不超过处于"misplaced"状态的对象数据的 5%。可以使用 target_max_misplaced_ratio 选项调整此默认百分比。

149 Ceph Auto scalling 0321 splitting

合并

Red Hat Ceph Storage 也可以将两个现有的 PG 合并到一个更大的 PG 中,这可以减少 PG 总数。将两个 PG 合并在一起会很有用,特别是当池中对象的相对量逐渐下降时,或者选择初始的 PG 数量太大时。虽然合并 PG 非常有用,但它也是一个复杂的 delicate 进程。在进行合并时,到 PG 的 I/O 会暂停,一次只合并一个 PG,从而最大程度降低对存储集群性能的影响。Ceph 在合并对象数据时很慢,直到达到新的 pg_num 值。

149 Ceph Auto scalling 0321 merging

3.5.3. 设置放置组自动扩展模式

Red Hat Ceph Storage 集群中的每个池都有一个 pg_autoscale_mode 属性,用于可以设置为 off、或 warn

  • off :禁用池的自动扩展。管理员最多可为每个池选择适当的 PG 数。如需更多信息,请参阅 放置组计数 部分。
  • 在 上 :为给定池启用自动调整 PG 数。
  • warn :当 PG 数量需要调整时,请检测健康警报。
注意

在 Red Hat Ceph Storage 5 及更新的版本中,pg_autoscale_mode 默认为 on。升级的存储集群保留现有的 pg_autoscale_mode 设置。对于新创建的池,pg_auto_scale 模式为 on。PG 数量会自动调整,ceph 状态 可能会在 PG 计数调整期间显示 recovering 状态。

自动缩放器使用 bulk 标志来确定哪个池应当以完整补充的 PG 开头,并且仅在池之间的使用量比率不会被缩减。但是,如果池没有 bulk 标记,池以最少的 PG 开头,并且仅在池中有更多使用量时才会开始。

注意

自动扩展程序(autoscaler)会识别任何重叠的根,并防止扩展带有重叠根的池,因为重叠的根可能会导致扩展过程出现问题。

流程

  • 在现有池中启动自动扩展:

    语法

    ceph osd pool set POOL_NAME pg_autoscale_mode on

    示例

    [ceph: root@host01 /]# ceph osd pool set testpool pg_autoscale_mode on

  • 在新创建的池中启用自动扩展:

    语法

    ceph config set global osd_pool_default_pg_autoscale_mode MODE

    示例

    [ceph: root@host01 /]# ceph config set global osd_pool_default_pg_autoscale_mode on

  • 使用 批量标记创建池

    语法

    ceph osd pool create POOL_NAME --bulk

    示例

    [ceph: root@host01 /]#  ceph osd pool create testpool --bulk

  • 为现有池设置或取消设置 批量 标记:

    重要

    该值必须写为 truefalse10。1 等同于 true0 相当于 false。如果使用不同的大写或其它内容编写,则会发出错误。

    以下是使用错误语法编写的命令示例:

    [ceph: root@host01 /]# ceph osd pool set ec_pool_overwrite bulk True
    Error EINVAL: expecting value 'true', 'false', '0', or '1'

    语法

    ceph osd pool set POOL_NAME bulk true/false/1/0

    示例

    [ceph: root@host01 /]#  ceph osd pool set testpool bulk true

  • 获取现有池的 批量 标记:

    语法

    ceph osd pool get POOL_NAME bulk

    示例

    [ceph: root@host01 /]# ceph osd pool get testpool bulk
    bulk: true

3.5.4. 查看放置组扩展建议

您可以查看池,它的相对利用率以及存储集群中 PG 数量的建议更改。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群
  • 所有节点的根级别访问权限。

流程

  • 您可以使用以下方法查看每个池、其相对利用率以及对 PG 数量的建议更改:

    [ceph: root@host01 /]# ceph osd pool autoscale-status

    输出类似如下:

    POOL                     SIZE  TARGET SIZE  RATE  RAW CAPACITY   RATIO  TARGET RATIO  EFFECTIVE RATIO  BIAS  PG_NUM  NEW PG_NUM  AUTOSCALE  BULK
    device_health_metrics      0                 3.0        374.9G  0.0000                                  1.0       1              on         False
    cephfs.cephfs.meta     24632                 3.0        374.9G  0.0000                                  4.0      32              on         False
    cephfs.cephfs.data         0                 3.0        374.9G  0.0000                                  1.0      32              on         False
    .rgw.root               1323                 3.0        374.9G  0.0000                                  1.0      32              on         False
    default.rgw.log         3702                 3.0        374.9G  0.0000                                  1.0      32              on         False
    default.rgw.control        0                 3.0        374.9G  0.0000                                  1.0      32              on         False
    default.rgw.meta         382                 3.0        374.9G  0.0000                                  4.0       8              on         False

SIZE 是池中存储的数据量。

TARGET SIZE 存在(如果存在)是管理员指定的数据量,管理员期望最终存储在这个池中。系统在计算时会使用这两个值中的较大的值。

RATE 是池的倍数,用于确定池使用的原始存储容量量。例如,一个 3 副本池的比率为 3.0,而 k=4,m=2 纠删代码池的比例为 1.5

RAW CAPACITY 是 OSD 上负责存储池数据的原始存储容量总量。

RATIO 是池消耗的总容量的比率,即 ratio = size = rate / raw capacity。

TARGET RATIO (如果存在)是管理员指定的存储比率,是与带有目标比率的其他池相对应的期望池的消耗。如果指定了目标大小字节和比率,则比率将具有优先权。TARGET RATIO 的默认值为 0, 除非在创建池时指定。您在一个池中提供的 --target_ratio 越多,您期望池的 PG 越大。

EFFECTIVE RATIO 是在以两种方式调整后的目标比率:1。减去设置了目标大小的池使用的任何容量。2. 在带有目标比率设置的池之间规范化目标比率,以便它们一起处理剩余空间。例如,带有 目标比率 1.0 的 4 个池 将有效 比率为 0.25。系统使用的较大的实际比率,以及计算的有效比率。

BIAS 被视为一个倍数,根据之前有关特定池应有的 PG 量的信息,手动调整池的 PG。默认情况下,如果 1.0,其值是在创建池时指定的值。您在一个池中提供的 --bias 越多,您期望池的 PG 越大。

PG_NUM 是池的当前 PG 数量,或者当 pg_num 更改正在进行时池正在工作的当前 PG 数量。NEW PG_NUM (如果存在)是推荐的 PG 数量(pg_num)。它始终是 2 的指数,它只有在建议的值与因当前值的不同大于 3 倍时才存在。

AUTOSCALE,是池 pg_autoscale_mode,可以为 on, off, 或 warn

BULK 用于确定哪个池应以 PG 的完整补充开头。BULK 仅在使用量在池中的使用比率不平衡时进行缩减。如果池没有此标志,池以最少的 PG 开始,且仅在池中有更多使用量时才使用。

BULK 的值为 true, false, 1, 或 0, 其中 1 等同于 true0 等同于 false。默认值为 false

BULK 值可以在池创建过程中或之后设置 。

有关使用 bulk 标记的更多信息,请参阅 创建池 和设置放置组自动扩展模式

3.5.5. 设置放置组自动扩展

允许集群根据集群使用量自动扩展 PG,是扩展 PG 的最简单方法。Red Hat Ceph Storage 使用整个系统的可用存储和 PG 的目标数量,比较每个池中存储的数据数量,并相应地应用 PG。该命令仅更改其当前 PG 数 (pg_num) 大于计算出的或建议的 PG 数的 3 倍的池。

每个 OSD 的目标 PG 数量基于 mon_target_pg_per_osd 可配置。默认值为 100

流程

  • 调整 mon_target_pg_per_osd

    语法

    ceph config set global mon_target_pg_per_osd number

    例如:

    [ceph: root@host01 /]# ceph config set global mon_target_pg_per_osd 150

3.5.6. 更新 noautoscale 标记

如果要同时为所有池启用或禁用自动扩展器,您可以使用 noautoscale 全局标志。当某些 OSD 被退回或集群处于维护状态时,这个全局标志很有用。您可以在任何活动前设置标志,并在活动完成后取消设置它。

默认情况下,noautoscale 标志被设置为 off。当设置此标志时,所有池都有 pg_autoscale_modeoff,所有池都禁用了自动扩展器。

先决条件

  • 正在运行的 Red Hat Ceph Storage 集群
  • 所有节点的根级别访问权限。

流程

  1. 获取 noautoscale 标志的值:

    示例

    [ceph: root@host01 /]# ceph osd pool get noautoscale

  2. 在任何活动前设置 noautoscale 标志:

    示例

    [ceph: root@host01 /]# ceph osd pool set noautoscale

  3. 在完成活动时取消设置 noautoscale 标志:

    示例

    [ceph: root@host01 /]# ceph osd pool unset noautoscale

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.