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 再次部署一次可用,cephadm
可能会自动尝试在这些驱动器上部署更多 OSD (如果它们与现有 drivegroup 规格匹配)。如果您部署了 OSD,使用 spec 删除,且不想在删除后在驱动器上部署任何新 OSD,请在删除前修改 drivegroup 规格。在部署 OSD 时,如果您使用了 --all-available-devices
选项,请设置 unmanaged: true
以完全阻止它获取新驱动器。对于其他部署,修改规格。如需了解更多详细信息 ,请参阅使用高级服务规格部署 Ceph OSD。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 主机添加到集群中。
- 监控、管理器和 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
替换 OSD:
重要如果存储集群关联了
health_warn
或其他错误,请在替换 OSD 前尝试修复任何错误,以避免数据丢失。语法
ceph orch osd rm OSD_ID --replace [--force]
当存储集群有持续操作时,可以使用
--force
选项。示例
[ceph: root@host01 /]# ceph orch osd rm 0 --replace
检查 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。
验证新部署的 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 Guide 中的 Deploying Ceph OSDs on all available devices 部分。
- 如需更多信息,请参阅 Red Hat Ceph Storage Operations 指南中的在特定设备和主机上部署 CephOSD 部分。