搜索

6.11. 使用 Ceph Orchestrator 替换 OSD

download PDF

当磁盘出现故障时,您可以替换物理存储设备并重复使用相同的 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。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 确保转储并保存 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 ..]

  3. 检查必须替换 OSD 的设备和节点:

    示例

    [ceph: root@host01 /]# ceph osd tree

  4. 替换 OSD:

    重要

    如果存储集群关联了 health_warn 或其他错误,请在替换 OSD 前尝试修复任何错误,以避免数据丢失。

    语法

    ceph orch osd rm OSD_ID --replace [--force]

    当存储集群有持续操作时,可以使用 --force 选项。

    示例

    [ceph: root@host01 /]# ceph orch osd rm 0 --replace

  5. 检查 OSD 替换的状态:

    示例

    [ceph: root@host01 /]# ceph orch osd rm status

  6. 停止编配器以应用任何现有 OSD 规格:

    示例

    [ceph: root@node /]# ceph orch pause
    [ceph: root@node /]# ceph orch status
    Backend: cephadm
    Available: Yes
    Paused: Yes

  7. 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

  8. 从暂停模式恢复 Orcestrator

    示例

    [ceph: root@node /]# ceph orch resume

  9. 检查 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 logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.