设置 Ceph OSD 满容量阈值
本主题介绍如何调整 ACP 分布式存储中 Ceph OSD 的容量阈值。您可以直接在 Ceph 中更改阈值,也可以在 CephCluster 自定义资源中声明式管理它们。
Ceph 使用三个阈值来控制随着 OSD 使用率增加时集群的行为:
WARNING
始终保持阈值按升序排列:nearfull < backfillfull < full。将值设置得过于接近 1.0 可能导致集群没有恢复空间。
前提条件
- 您拥有 ACP 集群的 cluster-admin 权限。
rook-ceph命名空间中已部署rook-ceph-tools,或者您被允许临时启动该部署。- 您了解集群为何接近满容量,并且在紧急调整后有添加存储或清理数据的计划。
操作步骤
检查当前集群状态
如果 rook-ceph-tools Pod 未运行,先启动它:
检查集群整体健康状态:
查看当前阈值:
输出示例:
通过 ceph CLI 设置阈值
使用 Ceph 命令直接更改集群生效的阈值。
例如,稍微提高阈值:
使用最小的提升幅度以恢复集群进度。更改值后,应尽快进行容量扩展或数据清理。
如果写入被阻塞且 OSD 处于卡住、挂起或无法恢复状态,先停止应用 I/O,然后仅小幅提高 full 阈值,等待重平衡完成,集群恢复稳定后再恢复阈值。
通过更新 CephCluster CR 设置阈值
如果想覆盖默认设置,可以通过更新 CephCluster CR 来设置 Ceph OSD 满容量阈值。
如果只需更改一个阈值,只补丁该字段。例如:
验证应用的值
验证 Kubernetes 中持久化的设置:
验证 Ceph 中生效的运行时值:
重新检查集群健康和重平衡状态:
当这些字段在 CephCluster 中设置时,该资源即成为阈值的声明式来源。如果 ACP 或 Rook 后续对集群配置进行调和,CephCluster 中的值应被视为预期的基线。
恢复或重新基线阈值
在添加容量、删除数据或完成重平衡后,决定是否保留新阈值。如果较高的值仅作为紧急应对措施,补丁 CephCluster 资源回到标准基线,并确认运行时值也恢复到预期状态。
建议
- 将阈值更改视为临时缓解措施,而非容量规划的替代方案。
- 如果只有少数 OSD 明显比其他更满,检查 OSD 利用率分布。
- 在更改前记录原始阈值,以便集群稳定后恢复。