5.4. 替换 OSD 驱动器
Ceph 专为容错设计,这意味着它可以在 降级
状态下运行,而不丢失数据。因此,即使数据存储驱动器失败,Ceph 也能运行。在故障驱动器的上下文中,degraded
状态意味着其他 OSD 上存储的数据的额外副本将自动回填到集群中的其他 OSD。不过,如果发生这种情况,请替换失败的 OSD 驱动器,并手动重新创建 OSD。
当驱动器出现故障时,Ceph 会将该 OSD 报告为 down
:
HEALTH_WARN 1/3 in osds are down osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
HEALTH_WARN 1/3 in osds are down
osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
Ceph 也可以因为网络或权限问题将 OSD 标记为 down
。详情请参阅关闭 OSD。
现代服务器通常使用热插拔驱动器进行部署,以便您可以将失败的驱动器替换为新的驱动器,而无需关闭节点。整个流程包括这些步骤:
- 从 Ceph 集群移除 OSD。详情请参阅 从 Ceph 集群删除 OSD 过程。
- 替换驱动器。详情请查看 替换物理驱动器 部分。
- 将 OSD 添加到集群。详情请参阅 在 Ceph 集群中添加 OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- Ceph 监控节点的根级别访问权限.
-
至少一个 OSD 为
down
。
从 Ceph 集群删除 OSD
登录到 Cephadm shell:
示例
cephadm shell
[root@host01 ~]# cephadm shell
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定哪个 OSD 为
down
。示例
[ceph: root@host01 /]# ceph osd tree | grep -i down ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF 0 hdd 0.00999 osd.0 down 1.00000 1.00000
[ceph: root@host01 /]# ceph osd tree | grep -i down ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF 0 hdd 0.00999 osd.0 down 1.00000 1.00000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 OSD 标记为
out
,供集群重新平衡其数据并将其复制到其他 OSD。语法
ceph osd out OSD_ID.
ceph osd out OSD_ID.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph osd out osd.0 marked out osd.0.
[ceph: root@host01 /]# ceph osd out osd.0 marked out osd.0.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果 OSD 为
down
,Ceph 会在 600 秒后自动将其标记为out
,如果它没有根据mon_osd_down_out_interval
参数从 OSD 接收任何 heartbeat 数据包。发生这种情况时,具有故障 OSD 数据副本的其他 OSD 开始回填,以确保集群中存在所需的副本数。当集群回填时,集群将处于降级
状态。确保故障 OSD 正在回填。
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在迁移完成后,您应该可以看到放置组状态从
active+clean
变为active, some degraded objects
,最终变为active+clean
。停止 OSD:
语法
ceph orch daemon stop OSD_ID
ceph orch daemon stop OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch daemon stop osd.0
[ceph: root@host01 /]# ceph orch daemon stop osd.0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从存储集群中移除 OSD:
语法
ceph orch osd rm OSD_ID --replace
ceph orch osd rm OSD_ID --replace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
[ceph: root@host01 /]# ceph orch osd rm 0 --replace
[ceph: root@host01 /]# ceph orch osd rm 0 --replace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID 会被保留。
替换物理驱动器
有关替换物理驱动器的详情,请查看硬件节点的文档。
- 如果驱动器支持热插拔,请将失败的驱动器替换为新驱动器。
- 如果驱动器不可热插拔并且节点包含多个 OSD,您可能需要关闭整个节点并替换物理驱动器。考虑阻止集群回填。详情请参阅 红帽 Ceph 存储故障排除指南 中的 停止和启动重新平衡 章节。
-
当驱动器显示在
/dev/
目录下时,记下驱动器路径。 - 如果要手动添加 OSD,找到 OSD 驱动器并格式化磁盘。
将 OSD 添加到 Ceph 集群
插入新驱动器后,您可以使用以下选项来部署 OSD:
如果未设置
--unmanaged
参数,Ceph 编排器将自动部署 OSD。示例
[ceph: root@host01 /]# ceph orch apply osd --all-available-devices
[ceph: root@host01 /]# ceph orch apply osd --all-available-devices
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在所有可用设备上部署 OSD,并将
非受管
参数设置为true
。示例
[ceph: root@host01 /]# ceph orch apply osd --all-available-devices --unmanaged=true
[ceph: root@host01 /]# ceph orch apply osd --all-available-devices --unmanaged=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 OSD 部署到特定的设备和主机上。
示例
[ceph: root@host01 /]# ceph orch daemon add osd host02:/dev/sdb
[ceph: root@host01 /]# ceph orch daemon add osd host02:/dev/sdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确保 CRUSH 层次结构准确:
示例
[ceph: root@host01 /]# ceph osd tree
[ceph: root@host01 /]# ceph osd tree
Copy to Clipboard Copied! Toggle word wrap Toggle overflow