Ceph PG 自动伸缩优化以及升级 Quincy 版本注意点
新钛云服已累计为您分享693篇技术干货
介绍
pg_autoscaler
模块首先在 Nautilus (14.2.x) 版本中引入,是在 Ceph 集群中自动管理归置组的绝佳方式。根据预期的池使用情况,pg_autoscaler
可以根据池使用情况和用户设置的调整来提出建议并调整集群中归置组的数量。--bulk
标志、target_size_ratio
、noautoscale
、bias
、pg_num
、pg_num_max
和pg_num_min
。为了准备最新的 Quincy 版本,我们通过发布标准测试和派生的调整建议和故障排除技巧对这些调整进行了测试,用户可以在升级到 Quincy 时参考这些调整。在这篇博文中,我们总结了自动扩缩器带来的最初挑战,概述了发布标准测试带来的最佳调优实践,并以一些自动扩缩器故障排除技巧结束。--bulk 标志的最初挑战和动机
--bulk
标志。用户现在可以使用--bulk
来标志大容量的存储池。--bulk
通过在池上设置标志,自动缩放器将从一开始就分配更多的 PG。这样,用户不再需要等待自动缩放器检测到更多的使用情况,然后再分配适当数量的 PG。调整建议
--bulk 标志应该用于大型池以获得最佳性能。
--bulk
标志现在可用于指示存储池将很大,并且应该从大量 PG 开始。用户可以在创建新池时和在现有池上设置--bulk
标志。任何不带--bulk
标志创建的池都将保持默认行为,即从最小数量的 PG 开始。--bulk
标志,请使用ceph osd pool create <pool-name> --bulk
。要在现有池上设置或取消设置--bulk
标志,请使用ceph osd pool set <pool-name> bulk <true/false/1/0>
。要获取现有池的--bulk
标志状态,请使用ceph osd pool get <pool-name> bulk
。如果您希望一个池相对于其他池消耗更多的集群容量,请使用 target_size_ratio 设置。
target_size_ratio
设置指定池的目标比率。如果您知道某个池相对于其他池应该具有一定的比率,则此设置特别有用。除非另有说明,否则每个池的目标比率默认应为 0。您给池的目标比率越高,您期望池中的 PG 就越大。osd pool autoscale-status
并查看TARGET RATIO
列。target_size_ratio
可以使用ceph osd pool set <pool_name> target_size_ratio <ratio>
进行调整。 要在创建池期间设置target_size_ratio
,请使用ceph osd pool create --target-size-ratio <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 的数量。
bias
值,请使用osd pool autoscale-status
并查看BIAS
列。要在现有池上设置bias
,请使用ceph osd pool set <pool_name> pg_autoscale_bias <bias>
。如果您提前知道池的使用率,请在创建池之前使用 pg_num 选项。
pg_num
选项。这将帮助您的集群提前计入适当数量的 PG。pg_num
值,请使用ceph osd pool autoscale-status
并查看PG_NUM
列。要指定创建池时设置pg_num
,请使用ceph osd pool create <pool_name> <pg_num>
。要设置池中允许的最小 pg 数,请使用ceph osd pool set <pool-name> pg_num_min <pg_num>
。 要设置池中允许的最大 pg 数,请使用ceph osd pool set <pool-name> pg_num_max <pg_num>
。使用 pg_num_max 值设置池中的最大 PG 数。
--bulk
标志的池)时很有用。--pg-num-max <num>
参数。ceph osd pool create
创建池后,使用ceph osd pool set <pool-name> pg_num_max <num>
进行设置。使用 pg_num_min 值设置池中的最小 PG 数。
--bulk
标志的池)时很有用。--pg-num-min <num>
参数。ceph osd pool create
创建池后,使用ceph osd pool set <pool-name> pg_num_min <num>
进行设置。升级到 Quincy 之前需要了解的事项
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 <pool-name> bulk <true/false/1/0>
更改它们。为什么自动缩放器无法缩放或使用不正确的值缩放?
检查受影响的池的自动缩放器是否打开/关闭。 如果自动缩放器无法在池上缩放,请检查 on
是否适用于该池。您可以使用ceph osd pool autoscale-status
查看。 在AUTOSCALE
列,检查模式是否为on
。如果发现状态是 off
,您可以为受影响的池打开自动缩放器osd pool set <pool-name> pg_autoscale_mode on
。如果自动缩放器on
适用于池,但您希望它为off
,您可以使用osd pool set <pool-name> pg_autoscale_mode off
关闭它。检查 overlapping root。 如果每个池的自动扩缩器模式都正确,则自动扩缩器可能由于集群中的 overlapping root
而无法扩展。检查管理器日志以获取此警告日志:pool <id> contains an overlapping root <id> … skipping scaling
。我们建议使池仅属于一个根以消除警告并确保成功的扩展过程。检查阈值是否影响缩放过程。 检查该 threshold
值是否设置为适当的值(默认为 3.0)。该值是缩放过程是否执行的决定性因素。如果阈值太大(> 5.0),池将需要更多的利用率来触发自动缩放过程。另一方面,如果阈值太低(< 2.0),池可能对缩放过于敏感。要调整池的阈值,请使用 ceph osd pool set threshold <value>
。检查 mon_target_pg_per_osd 是否设置为适当的值。 下一个要检查的调整是 mon_target_pg_per_osd
,它是每个 OSD 的目标 PG 数。默认情况下,该选项应设置为 100。如果您发现每个 OSD 的 PG 数量与预期不符,可以使用命令调整该值ceph config set global mon_target_pg_per_osd <value>
。检查速率设置是否正确。 另一个要检查的调整是 rate
值,它是池的复制大小(复制池)或纠删码值(纠删码池)。该值决定了该池消耗了多少原始存储容量。使用命令验证它是否根据池的副本大小或纠删码配置文件正确设置osd pool autoscale-status
。在该RATE
输出的列,您可以看到如何为每个池设置rate
。您可以使用ceph osd pool set <pool-name> size <value>
调整单个池的速率。检查 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 目标的差异。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>
error
日志级别来检查自动缩放器活动。有关检查和设置自动缩放器日志记录级别的信息。结论
pg_autoscaler
模块是让 Ceph 集群自动管理其归置组的好方法。推荐阅读
推荐视频
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章