文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Ceph PG 自动伸缩优化以及升级 Quincy 版本注意点

2024-12-01 13:48

关注

自动缩放器带有一系列调整选项,包括--bulk​标志、target_size_ratio、noautoscale、bias、pg_num、pg_num_max和pg_num_min。为了准备最新的 Quincy 版本,我们通过发布标准测试和派生的调整建议和故障排除技巧对这些调整进行了测试,用户可以在升级到 Quincy 时参考这些调整。在这篇博文中,我们总结了自动扩缩器带来的最初挑战,概述了发布标准测试带来的最佳调优实践,并以一些自动扩缩器故障排除技巧结束。

--bulk 标志的最初挑战和动机

在 Quincy 之前,一些通过自动化工具安装 Ceph 的用户从一开始就遇到了性能问题。默认情况下,自动缩放器会以最小数量的 PG 开始创建每个池,仅在使用量增加后增加该数量。这种行为主要导致大型池的性能不佳,需要比自动缩放器提供的最小数量更多的 PG。

这种“默认安装”行为导致了 Quincy 引入该--bulk​标志。用户现在可以使用--bulk​来标志大容量的存储池。--bulk通过在池上设置标志,自动缩放器将从一开始就分配更多的 PG。这样,用户不再需要等待自动缩放器检测到更多的使用情况,然后再分配适当数量的 PG。

调整建议

--bulk 标志应该用于大型池以获得最佳性能。

该--bulk​标志现在可用于指示存储池将很大,并且应该从大量 PG 开始。用户可以在创建新池时和在现有池上设置--bulk​标志。任何不带--bulk标志创建的池都将保持默认行为,即从最小数量的 PG 开始。

要在池创建期间设置--bulk​标志,请使用ceph osd pool create --bulk​。要在现有池上设置或取消设置--bulk​标志,请使用ceph osd pool set bulk ​。要获取现有池的--bulk​标志状态,请使用ceph osd pool get bulk。

如果您希望一个池相对于其他池消耗更多的集群容量,请使用 target_size_ratio 设置。

可以使用target_size_ratio设置指定池的目标比率。如果您知道某个池相对于其他池应该具有一定的比率,则此设置特别有用。除非另有说明,否则每个池的目标比率默认应为 0。您给池的目标比率越高,您期望池中的 PG 就越大。

要检查池的目标比率,请使用osd pool autoscale-status​并查看TARGET RATIO​列。target_size_ratio​可以使用ceph osd pool set target_size_ratio ​进行调整。 要在创建池期间设置target_size_ratio​,请使用ceph osd pool create --target-size-ratio

使用 noautoscale 标志全局切换所有池的自动缩放器。

现在可以为所有带有noautoscale​标志的池全局打开和关闭自动缩放器。默认情况下,此标志设置为 false​,并且每个池的默认pg_autoscale​模式(即 )on保持相同。

如果要为每个池打开自动缩放器,请使用ceph osd pool unset noautoscale​。如果要为每个池关闭自动缩放器,请使用ceph osd pool set noautoscale​。要获取 noautoscale​ 标志的当前值,请使用ceph osd pool get noautoscale。

使用bias来帮助自动缩放器准确调整 PG 的数量。

偏差是一个乘数,用于根据有关该池的预期 PG 数量的信息手动调整池的 PG。默认情况下,偏差值应为 1.0,除非另有说明。你给池的偏差越大,你期望池中的 PG 就越大。

要检查池中的bias​值,请使用osd pool autoscale-status​并查看BIAS​列。要在现有池上设置bias​ ,请使用ceph osd pool set pg_autoscale_bias

如果您提前知道池的使用率,请在创建池之前使用 pg_num 选项。

首次创建集群或池时,仅消耗一小部分集群容量。因此,您的系统可能会低估集群或池所需的 PG 数量。如果您提前知道集群或池的使用率,请在创建池之前使用该pg_num选项。这将帮助您的集群提前计入适当数量的 PG。

要检查池的pg_num​值,请使用ceph osd pool autoscale-status​并查看PG_NUM​列。要指定创建池时设置pg_num​,请使用ceph osd pool create ​。要设置池中允许的最小 pg 数,请使用ceph osd pool set pg_num_min ​。 要设置池中允许的最大 pg 数,请使用ceph osd pool set pg_num_max

使用 pg_num_max 值设置池中的最大 PG 数。

可以指定池中的最大 PG 数。这在创建较小的池(例如 .mgr、元池或不带--bulk标志的池)时很有用。

要在创建池时指定最大 PG 计数,请在命令中使用可选--pg-num-max ​参数。ceph osd pool create​创建池后,使用ceph osd pool set pg_num_max 进行设置。

使用 pg_num_min 值设置池中的最小 PG 数。

同样,我们可以指定一个池中的最小 PG 数。当我们想要客户端在执行 IO 时看到的并行量的下限时,这是有利的,即使池大部分是空的。这在创建更大的池(例如设置了--bulk标志的池)时很有用。

要在创建池时指定最小 PG 计数,请在命令中使用可选--pg-num-min ​参数。ceph osd pool create​创建池后,使用ceph osd pool set pg_num_min 进行设置。

升级到 Quincy 之前需要了解的事项

当从没有自动缩放器的 Ceph 版本升级到带有自动缩放器的 Ceph 版本时,自动缩放器将可用于升级后的每个池,并且默认情况下所有的池都是off​。但是,如果您从带有自动扩缩器的 Ceph 版本升级到也包含自动扩缩器的新版本,则所有池都将保留其在升级之前的原始自动扩缩器设置,无论是off、on​还是warn。

要在池上使用--bulk标志,用户需要升级到 Ceph >= 16.2.8 的版本。

最后,启用日志记录以诊断 pg_autoscaler​ 模块的所有问题很重要。与所有管理器模块一样,pg_autoscaler​ 有一个log_level​选项来指定其 Python 日志记录级别。我们建议您使用warning​来捕获有关升级过程的信息。要获取 pg_autoscaler​ 模块的当前日志级别,请使用ceph config get mgr mgr/pg_autoscaler/log_level​。要将 pg_autoscaler​ 日志级别设置为warning​,请使用ceph config set mgr mgr/pg-autoscaler/log_level warning​。其他选项是info、debug、critical和error。

故障排除提示

如果自动缩放器未按预期方向缩放怎么办?

检查是否为每个池正确配置了bulk​值,使用ceph osd pool autoscale-status​。 如果BULK​为“false​”,则自动缩放器从最小数量的 PG 开始。如果BULK​设置为“true​”,则自动缩放器从大的数量 PG 开始。如果您在状态输出中看到的任何批量值与预期不符,您可以使用ceph osd pool set bulk 更改它们。

为什么自动缩放器无法缩放或使用不正确的值缩放?

检查受影响的池的自动缩放器是否打开/关闭。

如果自动缩放器无法在池上缩放,请检查​on​是否适用于该池。您可以使用ceph osd pool autoscale-status​查看。 在AUTOSCALE​列,检查模式是否为on。如果发现状态是​off​,您可以为受影响的池打开自动缩放器osd pool set pg_autoscale_mode on​。

如果自动缩放器on​适用于池,但您希望它为off​,您可以使用osd pool set pg_autoscale_mode off关闭它。

检查 overlapping root。

如果每个池的自动扩缩器模式都正确,则自动扩缩器可能由于集群中的​overlapping root​而无法扩展。检查管理器日志以获取此警告日志:pool contains an overlapping root … skipping scaling。我们建议使池仅属于一个根以消除警告并确保成功的扩展过程。

检查阈值是否影响缩放过程。

检查该​threshold​值是否设置为适当的值(默认为 3.0)。该值是缩放过程是否执行的决定性因素。如果阈值太大(> 5.0),池将需要更多的利用率来触发自动缩放过程。另一方面,如果阈值太低(< 2.0),池可能对缩放过于敏感。要调整池的阈值,请使用​ceph osd pool set threshold

检查 mon_target_pg_per_osd 是否设置为适当的值。

下一个要检查的调整是​mon_target_pg_per_osd​,它是每个 OSD 的目标 PG 数。默认情况下,该选项应设置为 100。如果您发现每个 OSD 的 PG 数量与预期不符,可以使用命令调整该值ceph config set global mon_target_pg_per_osd

检查速率设置是否正确。

另一个要检查的调整是​rate​值,它是池的复制大小(复制池)或纠删码值(纠删码池)。该值决定了该池消耗了多少原始存储容量。使用命令验证它是否根据池的副本大小或纠删码配置文件正确设置osd pool autoscale-status​。在该RATE​输出的列,您可以看到如何为每个池设置rate​。您可以使用ceph osd pool set size 调整单个池的速率。

检查 bias 是否设置正确。

正如Tuning Recommendations (​https://ceph.io/en/news/blog/2022/autoscaler_tuning/#use-the-bias-value-to-help-the-autoscaler-accurately-adjust-the-number-of-pgs.​) 中所解释的,您给池的bias​越大,您期望池具有的 PG 就越大。因此,您应该检查是否bias为受影响的池设置了适当的值。

检查 target_size_ratio 是否设置正确。

同样,​target_size_ratio是另一种调整,您在池中提供的越多,您期望池中的 PG 就越大,因此,您应该确保该值适合受影响的池。

我怎么知道自动缩放器在做什么?

从高级视图中,您可以使用命令观察自动缩放器的活动ceph progress。此命令的输出显示当前正在扩展其 PG 的池以及扩展了多少。

此外,您可以通过执行ceph osd pool autoscale-status​并查看每个池的NEW PG_NUM列,从而得出您与 PG 目标的差异。

有关自动缩放器的最详细视图,请访问管理器日志并查找以下 INFO 级别日志输出:

Pool <pool_name> root_id <root_id> using <capacity> of space, bias <bias>
pg target <pg_target> quantized to <pg_target_nearest_power_of_two> (current <current_pg>)
effective_target_ratio <target_size_ratio> <total_target_ratio> <total_target_bytes> <capacity>

应该使用什么级别的日志记录来检查自动缩放器活动?

需要 Python 日志记录中的error日志级别来检查自动缩放器活动。有关检查和设置自动缩放器日志记录级别的信息。

结论

正确调整 pg_autoscaler 模块是让 Ceph 集群自动管理其归置组的好方法。

我们希望这些自动缩放器调优建议和故障排除技巧能够在所有用户升级到最新版本的 Quincy 时改善他们的开箱即用体验。

有关更多信息,请参阅归置组 (https://docs.ceph.com/en/latest/rados/operations/placement-groups/) 文档,其中包含有关自动缩放器行为的更多详细信息。

*原文: https://ceph.io/en/news/blog/2022/autoscaler_tuning/​

来源:新钛云服内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯