6.3. 验证您是否创建了 CRUSH 规则,并且您的池是否已设置为正确的 CRUSH 规则
- WARNING
-
在现有环境中定义性能层可能会导致 Ceph 集群中的大量数据移动。
ceph-ansible,director 在堆栈更新过程中触发,没有逻辑来检查集群中是否已定义池,以及它是否包含数据。这意味着,在现有环境中定义性能层可能具有危险,因为与池关联的默认 CRUSH 规则更改会导致数据移动。如果您需要添加或删除节点的帮助或建议,请联系红帽支持。
流程
-
以
heat-admin用户身份登录 overcloud Controller 节点。 要验证 OSD 层是否已成功设置,请输入以下命令。将
<controller_hostname> 替换为主机 Controller 节点的名称。$ sudo podman exec -it ceph-mon-<controller_hostname> ceph osd tree- 在生成的树视图中,验证 CLASS 列是否显示您设置的每个 OSD 的正确设备类。
另外,使用以下命令,验证 OSD 是否已正确分配给设备类。将
<controller_hostname> 替换为主机 Controller 节点的名称。$ sudo podman exec -it ceph-mon-<controller_hostname> ceph osd crush tree --show-shadow将生成的层次结构与以下命令的结果进行比较,以确保为每个规则应用相同的值。
-
将
<controller_hostname> 替换为主机 Controller 节点的名称。 将 <rule_name> 替换为您要检查的规则的名称。
$ sudo podman exec <controller_hostname> ceph osd crush rule dump <rule_name>
-
将
根据您部署期间使用的
crush_rules参数,验证您创建的规则名称和 ID 是否正确。将<controller_hostname> 替换为主机 Controller 节点的名称。$ sudo podman exec -it ceph-mon-<controller_hostname> ceph osd crush rule dump | grep -E "rule_(id|name)"验证 Ceph 池是否已绑定到在第 3 步中检索的正确 CRUSH 规则 ID。将
<controller_hostname> 替换为主机 Controller 节点的名称。$ sudo podman exec -it ceph-mon-<controller_hostname> ceph osd dump | grep pool- 对于每个池,请确保规则 ID 与您期望的规则名称匹配。