替换或移除存储节点
本文档介绍如何从由 Container Platform 管理的 Rook-Ceph 集群中移除存储节点。根据剩余 OSD 是否有足够容量承载被移除节点上的数据,您可能需要先添加一个替换节点。
前提条件
-
除了故障节点(如适用)外,所有集群组件均正常运行。
-
开始操作前,记录旧节点拥有的磁盘数量及每个磁盘所属的设备类别。
约束与限制
-
在三节点 Ceph 集群中,丢失一个节点已降低冗余度。请尽快完成操作步骤,以最小化风险窗口。
-
数据重新平衡期间,集群 I/O 性能可能会暂时下降。
-
如果集群处于
HEALTH_ERR状态,且原因不是被移除节点,切勿继续操作。此时继续操作可能进一步影响数据的可靠性。
操作步骤
检查集群状态和容量
-
确认待移除节点上所有运行的 OSD ID 及其磁盘使用情况。
-
验证集群整体健康状态。
-
查看所有 OSD 的容量信息。
将待移除节点上所有 OSD 的 USE 值相加,再确认剩余节点上所有 OSD 的 AVAIL 总和是否大于该值。这样可以确保剩余 OSD 有足够的空闲空间承载移除节点上的数据。
如果剩余容量不足,请继续下一步先添加替换节点。否则跳至调整组件部署配置。
添加替换节点(如有需要)
如果剩余 OSD 空闲容量不足,需先添加替换节点再移除旧节点。
-
进入 Container Platform。
-
使用平台的节点管理功能,将替换机器添加为新的集群节点。
-
节点加入集群后,将其添加为存储节点。导航至 Storage Management > Distributed Storage > Device Classes。
-
点击 Add Device,选择新节点并选择对应磁盘。如果旧节点有多个磁盘且分属不同设备类别,请对每个磁盘/设备类别组合重复此步骤,直至所有磁盘添加完成。
-
等待新 OSD 激活并完成数据重新平衡。可通过以下命令监控进度:
等待集群恢复到
HEALTH_OK状态,且无 misplaced 或 recovering PG 后再继续操作。
调整组件部署配置
Rook 管理的 Ceph 守护进程(MON、MGR、MDS)可能调度在旧节点上。需将旧节点从组件调度中排除,使 operator 将它们重新调度到其他节点。
-
在 Container Platform 中,导航至 Storage Management > Distributed Storage > Storage Components > Component Deployment Configuration。
-
启用节点绑定,仅选择应保留在集群中的节点(排除待移除节点)。
-
等待所有 MON、MGR 和 MDS Pod 在剩余节点上运行后再继续。
标记所有 OSD 为 Out 并等待数据迁移
-
如果 rook-ceph-tools Pod 未运行,启用它。
-
进入 tools Pod。
-
将旧节点上的每个 OSD 标记为
out,指示 Ceph 将数据从这些 OSD 迁移到剩余 OSD。对节点上每个 OSD ID 重复此操作。
-
监控重新平衡进度,直到集群恢复到
HEALTH_OK,且无 misplaced 或 recovering PG。数据迁移完成前请勿继续操作。提前移除 OSD 会导致数据丢失。
移除旧节点的 OSD
-
编辑 CephCluster 资源,删除旧节点条目。
找到
spec.storage.nodes下的旧节点,删除整个节点条目,保存并退出。 -
删除旧节点上每个 OSD 的部署。
对每个 OSD ID 重复此操作。
-
进入 tools Pod,永久从集群中移除每个 OSD。
在 tools Pod 内,对每个 OSD 执行:
验证集群健康状态
-
确认已移除的 OSD 不再出现在集群中。
-
验证集群已恢复健康状态。
输出应显示
HEALTH_OK,且所有 PG 处于active+clean状态。