替换或移除设备
本文档介绍如何从由 Container Platform 管理的 Rook-Ceph 集群中移除存储设备(磁盘)。根据剩余 OSD 是否有足够容量承载被移除磁盘上的数据,您可能需要先添加替换磁盘。
前提条件
-
所有集群组件均正常运行。
-
存储集群未使用“添加所有空磁盘”选项创建。通过运行以下命令验证,输出必须显示
useAllDevices: false。 -
适用于平台版本 3.8 及以上。
约束与限制
-
在数据重新平衡期间,集群性能可能会暂时下降。除非必要,避免同时操作多个磁盘。
-
如果集群处于
HEALTH_ERR状态,且原因非被移除磁盘导致,请勿继续操作。此时继续操作可能进一步影响数据可靠性。 -
如果被移除的磁盘是某个设备类的最后一块磁盘,则该设备类将不复存在。任何依赖该设备类的存储池或策略将受到影响。操作前请确保没有存储池仅绑定该设备类。
操作步骤
检查集群状态和容量
-
验证集群整体健康状态。
-
确认待移除磁盘对应的 OSD ID 及使用情况。
记录目标 OSD 的 USE 值。然后确认剩余所有 OSD(不含目标)AVAIL 总和大于目标 OSD 的 USE 值,确保剩余 OSD 有足够空闲空间承载移除后的数据。
若剩余容量不足,请继续下一步先添加替换磁盘;否则跳至缩减 Rook Operator。
添加替换磁盘(如有需要)
若剩余 OSD 空间不足,需先添加替换磁盘再移除旧磁盘。此步骤需确保 Rook operator 正在运行。
-
进入 Container Platform。
-
在左侧导航栏点击 存储管理 > 分布式存储 > 设备类。
-
点击 添加设备,选择替换磁盘所在节点,选择新磁盘,并分配到与被移除磁盘相同的设备类。
-
等待新 OSD 创建完成并完成数据重新平衡。可通过以下命令监控进度:
等待输出显示
HEALTH_OK,且无 misplaced 或 recovering 的 PG。
缩减 Rook Operator
缩减 Rook operator,防止其在移除过程中干扰(例如中途重新创建已删除的 OSD 部署)。
标记 OSD 为 Out 并等待数据迁移
-
若 rook-ceph-tools pod 未运行,启用它。
-
进入 tools pod。
-
将 OSD 标记为
out,指示 Ceph 将该 OSD 上所有数据迁移到剩余 OSD。 -
监控重新平衡进度,直到集群恢复
HEALTH_OK,且无 misplaced 或 recovering 的 PG。数据迁移未完成前请勿继续操作。 过早移除 OSD 会导致数据丢失。
移除 OSD
-
编辑 CephCluster 资源,删除对应磁盘条目。
找到
spec.storage.nodes下的磁盘条目并删除,保存退出。 -
删除 OSD 部署。
-
进入 tools pod,永久从集群中移除该 OSD。将
<id>替换为 OSD ID。在 tools pod 内执行:
清理磁盘
若磁盘仍物理连接在节点上,需清除其元数据,防止 Rook 误识别。请在磁盘所在节点上执行以下命令,将 /dev/vdb 替换为实际设备路径。
恢复 Rook Operator
集群健康后,恢复 Rook operator。
验证集群健康
-
确认已移除的 OSD 不再出现在集群中。
-
验证集群已恢复健康状态。
输出应显示
HEALTH_OK,且所有 PG 处于active+clean状态。