替换或移除设备
本文档介绍如何从基于主机的 Rook-Ceph 集群(CephCluster.spec.storage.nodes)中移除存储设备(磁盘)。根据剩余 OSD 是否有足够容量来容纳待移除磁盘中的数据,您可能需要先添加替换磁盘。
如果 OSD 由 Local Storage Block PV(CephCluster.spec.storage.storageClassDeviceSets)提供支持,请改用替换或移除由 PVC 支持的 OSD 设备。不要编辑 spec.storage.nodes。不要擦除仍绑定到 PV 的设备;PV 变为 Available 后,按照该页面中的说明清除遗留的 BlueStore 标签,然后再重复使用。
这些步骤适用于在以内部模式部署中从主机设备创建的 OSD。不要将其用于从 Local Storage Block PersistentVolumes 创建的 OSD。请参阅使用 Local Storage 以内部模式部署。
前提条件
-
所有集群组件均正常运行。
-
存储集群不是通过“添加所有空磁盘”选项创建的。运行以下命令进行验证;输出必须显示
useAllDevices: false。 -
适用于平台版本 3.8 及更高版本。
约束和限制
-
在数据重新平衡期间,集群性能可能会暂时下降。除非绝对必要,否则请避免同时对多个磁盘执行操作。
-
如果集群由于待移除磁盘以外的原因处于
HEALTH_ERR状态,请勿继续操作。在该状态下继续操作可能会进一步削弱数据弹性。 -
如果待移除磁盘是某个特定设备类中的最后一个磁盘,该设备类将不再存在。依赖该设备类的任何存储池或策略都将受到影响。继续操作前,请确保没有存储池专门绑定到该设备类。
操作步骤
检查集群状态和容量
-
验证集群整体运行状况。
-
确定待移除磁盘的 OSD ID 和使用情况。
记下目标 OSD 的 USE 值。然后确认所有剩余 OSD 的 AVAIL 总和(不包括目标 OSD)大于目标 OSD 的 USE 值。这可确保剩余 OSD 有足够的可用空间来容纳移除磁盘后的数据。
如果剩余容量不足,请继续下一步以先添加替换磁盘。否则,请跳转到缩容 Rook operator。
添加替换磁盘(如需要)
如果剩余 OSD 没有足够的可用容量,请在移除旧磁盘前添加替换磁盘。在此步骤期间,Rook operator 必须处于运行状态。
-
进入容器平台。
-
在左侧导航栏中,点击存储管理 > 分布式存储 > 设备类。
-
点击添加设备,选择安装替换磁盘的节点,选择新磁盘,并将其分配到与待移除磁盘相同的设备类。
-
等待创建新的 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状态。