2.8. CRUSH 可调项概述


Ceph 项目随着许多变化和新功能呈指数级增长。从 Ceph 的第一个商业支持主要版本 v0.48(Argonaut)开始,Ceph 提供了调整 CRUSH 算法的某些参数,即设置不在源代码中。

需要考虑以下几个重要点:

  • 调整 CRUSH 值可能会导致在存储节点之间移动一些 PG。如果 Ceph 集群已经存储了大量大量数据,准备进行一些要移动的数据。
  • ceph-osdceph-mon 守护进程将在收到更新的映射后立即要求新连接的特性位。但是,已连接的客户端有效地获得,如果它们不支持新功能,则它们可能会出错。当您升级 Ceph Storage Cluster 守护进程时,请确定您更新 Ceph 客户端。
  • 如果将 CRUSH 可调项设置为非传统值,之后再更改回旧值,则不需要 ceph-osd 守护进程来支持该功能。但是,OSD 对等过程需要检查和了解旧映射。因此,如果集群之前已使用了非传统 CRUSH 值,则不应运行 ceph-osd 守护进程的旧版本,即使映射的最新版本已切换回使用传统默认值。

2.8.1. CRUSH 调整

在调优 CRUSH 之前,您应该确保所有 Ceph 客户端和所有 Ceph 守护进程都使用相同的版本。如果您最近已升级,请确保您已重启了守护进程并重新连接客户端。

调整 CRUSH 可调项的最简单方法是通过更改到已知配置文件。这些是:

  • legacy :v0.47(pre-Argonaut)和更早版本中的传统行为。
  • argonaut: v0.48(Argonaut)发行版本支持的旧值。
  • bobtail:v0.56(Bobtail)发行版本支持的值。
  • firefly :v0.80(Firefly)发行版本支持的值。
  • hammer:v0.94(Hammer)发行版本支持的值。
  • Jewel : v10.0.2 (Jewel)发行版本支持的值。
  • optimal :当前的最佳值。
  • default :新集群的当前默认值。

您可以使用以下命令在正在运行的集群中选择一个配置集:

语法

# ceph osd crush tunables PROFILE
Copy to Clipboard Toggle word wrap

注意

这可能会导致一些数据移动。

通常,您应该在升级后设置 CRUSH 可调项,或者收到警告。从 v0.74 开始,如果 CRUSH 可调项未设置为其最佳值,Ceph 会发出警告,其最佳值是 v0.73。

您可以通过调整现有集群上的可调项来删除警告。请注意,这将导致一些数据移动(可能有 10%)。这是首选的路由,但应该小心谨慎,数据移动可能会影响性能。您可以使用以下方法启用最佳可调项:

ceph osd crush tunables optimal
Copy to Clipboard Toggle word wrap

如果事情发生不佳(例如,太多负载),也没有造成非常好的过程,或者有客户端兼容性问题(旧的内核 cephfs 或 rbd 客户端,或者预先退回 librados 客户端),您可以切回到以前的配置集:

语法

ceph osd crush tunables PROFILE
Copy to Clipboard Toggle word wrap

例如,要恢复 pre-v0.48(Argonaut)值,请执行:

示例

[ceph: root@host01 /]# ceph osd crush tunables legacy
Copy to Clipboard Toggle word wrap

2.8.2. CRUSH 调整,硬方式

如果确保所有客户端都在运行最新的代码,可以通过提取 CRUSH 映射、修改值并将其注入集群中来调整可调项。

  • 提取最新的 CRUSH map:

    ceph osd getcrushmap -o /tmp/crush
    Copy to Clipboard Toggle word wrap
  • 调整可调项。这些值显示为为我们测试的大型集群和小集群提供最佳行为。您需要额外指定 crushtool--enable-unsafe-tunables 参数,以便它正常工作。请谨慎使用这个选项。

    crushtool -i /tmp/crush --set-choose-local-tries 0 --set-choose-local-fallback-tries 0 --set-choose-total-tries 50 -o /tmp/crush.new
    Copy to Clipboard Toggle word wrap
  • 重新注入修改后的映射:

    ceph osd setcrushmap -i /tmp/crush.new
    Copy to Clipboard Toggle word wrap

2.8.3. CRUSH 传统值

为了方便参考,可以使用以下内容设置 CRUSH 可调项的旧值:

crushtool -i /tmp/crush --set-choose-local-tries 2 --set-choose-local-fallback-tries 5 --set-choose-total-tries 19 --set-chooseleaf-descend-once 0 --set-chooseleaf-vary-r 0 -o /tmp/crush.legacy
Copy to Clipboard Toggle word wrap

同样,需要特殊的 --enable-unsafe-tunables 选项。此外,如上所述,在恢复到旧值后请小心地运行 ceph-osd 守护进程的旧版本,因为功能位没有完全强制执行。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat