6.11. 使用 Ceph Orchestrator 替换 OSD
当磁盘出现故障时,您可以替换物理存储设备并重复使用相同的 OSD ID,以避免重新配置 CRUSH map。
您可以使用 --replace
选项替换集群中的 OSD。
如果要替换单个 OSD,请参阅 在特定设备和主机上部署 Ceph OSD。如果要在所有可用设备上部署 OSD,请参阅 在所有可用设备上部署 Ceph OSD。
此选项使用 ceph orch rm
命令保留 OSD ID。OSD 不会从 CRUSH 层次结构中永久移除,而是分配有 destroyed
标志。此标志用于确定可在下一个 OSD 部署中重复使用的 OSD ID。destroyed
标记用于决定在下一个 OSD 部署中重复使用哪些 OSD ID。
与 rm
命令类似,从集群中替换 OSD 涉及两个步骤:
- 清空集群中的所有放置组(PG)。
- 从集群中移除 PG-free OSD。
如果您使用 OSD 规格进行部署,则被替换磁盘的 OSD ID 会在插入后马上分配给新添加的磁盘。
在移除 OSD 后,如果 OSD 重新可用时部署 OSD,cephadm
可能会在这些驱动器上自动尝试部署更多 OSD (如果它们与现有 drive组规格匹配)。如果您部署了使用 spec 删除的 OSD,且在移除后不想在驱动器上部署任何新 OSD,请在删除前修改 drivegroup 规格。在部署 OSD 时,如果您使用 --all-available-devices
选项,请将 unmanaged: true
设置为停止它完全获取新驱动器。对于其他部署,修改规格。如需了解更多详细信息 ,请参阅使用高级服务规格部署 Ceph OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 监控、管理器和 OSD 守护进程部署在存储集群中。
- 替换移除 OSD 的新 OSD 必须在移除 OSD 的同一主机上创建。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
确保转储并保存 OSD 配置的映射,以备将来参考:
示例
[ceph: root@node /]# ceph osd metadata -f plain | grep device_paths "device_paths": "sde=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:1,sdi=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:1", "device_paths": "sde=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:1,sdf=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:1", "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdg=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2", "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdh=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2", "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdk=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2", "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdl=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3", "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdj=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3", "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdm=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3", [.. output omitted ..]
检查设备和必须从中替换 OSD 的节点:
示例
[ceph: root@host01 /]# ceph osd tree
从
cephadm
受管集群中删除 OSD:重要如果存储集群关联了
health_warn
或其他错误,请在替换 OSD 前尝试修复任何错误,以避免数据丢失。语法
ceph orch osd rm OSD_ID --replace [--force]
当存储集群上有持续操作时,可以使用
--force
选项。示例
[ceph: root@host01 /]# ceph orch osd rm 0 --replace
通过应用以下 OSD 规格来重新创建新 OSD:
示例
service_type: osd service_id: osd placement: hosts: - myhost data_devices: paths: - /path/to/the/device
检查 OSD 替换的状态:
示例
[ceph: root@host01 /]# ceph orch osd rm status
停止编配器以应用任何现有 OSD 规格:
示例
[ceph: root@node /]# ceph orch pause [ceph: root@node /]# ceph orch status Backend: cephadm Available: Yes Paused: Yes
zap 已删除的 OSD 设备:
示例
[ceph: root@node /]# ceph orch device zap node.example.com /dev/sdi --force zap successful for /dev/sdi on node.example.com [ceph: root@node /]# ceph orch device zap node.example.com /dev/sdf --force zap successful for /dev/sdf on node.example.com
从暂停模式恢复 Orcestrator
示例
[ceph: root@node /]# ceph orch resume
检查 OSD 替换的状态:
示例
[ceph: root@node /]# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.77112 root default -3 0.77112 host node 0 hdd 0.09639 osd.0 up 1.00000 1.00000 1 hdd 0.09639 osd.1 up 1.00000 1.00000 2 hdd 0.09639 osd.2 up 1.00000 1.00000 3 hdd 0.09639 osd.3 up 1.00000 1.00000 4 hdd 0.09639 osd.4 up 1.00000 1.00000 5 hdd 0.09639 osd.5 up 1.00000 1.00000 6 hdd 0.09639 osd.6 up 1.00000 1.00000 7 hdd 0.09639 osd.7 up 1.00000 1.00000 [.. output omitted ..]
验证
验证设备的详细信息以及 Ceph OSD 所取代的节点:
示例
[ceph: root@host01 /]# ceph osd tree
您可以看到具有相同 ID 的 OSD,与您在同一主机上运行的 ID 相同。
验证新部署的 OSD 的 db_device 是否为所取代的 db_device:
示例
[ceph: root@host01 /]# ceph osd metadata 0 | grep bluefs_db_devices "bluefs_db_devices": "nvme0n1", [ceph: root@host01 /]# ceph osd metadata 1 | grep bluefs_db_devices "bluefs_db_devices": "nvme0n1",
其它资源
- 如需更多信息,请参阅 Red Hat Ceph Storage Operations 指南中的在所有可用设备部分部署 CephOSD。
- 如需更多信息,请参阅 Red Hat Ceph Storage Operations 指南中的在特定设备和主机上部署 CephOSD 部分。