第 12 章 替换失败的磁盘
如果 Ceph 集群中有一个磁盘失败,请完成以下步骤以替换它:
- 确定设备名称是否有变化,请参阅 第 12.1 节 “确定是否存在设备名称更改”。
- 确保 OSD 已关闭并销毁,请参阅 第 12.2 节 “确保 OSD 已关闭并销毁”。
- 从系统中删除旧磁盘并安装替换磁盘,请参阅 第 12.3 节 “从系统中删除旧磁盘并安装替换磁盘”。
- 验证磁盘替换是否成功,请参阅 第 12.4 节 “验证磁盘替换是否成功”。
12.1. 确定是否存在设备名称更改 复制链接链接已复制到粘贴板!
在替换磁盘前,请确定替换 OSD 的替换磁盘是否在与您要替换的设备不同的操作系统中。如果替换磁盘具有不同的名称,您必须为 devices 列表更新 Ansible 参数,以便后续运行 ceph-ansible 时(包括 director 运行 ceph-ansible )不会因为更改而失败。有关使用 director 时您必须更改的设备列表示例,请参阅 第 5.3 节 “映射 Ceph Storage 节点磁盘布局”。
如果设备名称有变化,且您使用以下步骤在 ceph-ansible 或 director 之外更新您的系统,则配置管理工具与它们管理的系统不同步,直到您更新系统定义文件且配置在没有错误的情况下被重新分配。
存储设备的持久性命名
sd 驱动程序管理的存储设备可能在重启后可能始终具有相同的名称。例如,通常由 /dev/sdc 标识的磁盘可能命名为 /dev/sdb。即使您希望将一个磁盘作为 /dev/sdc 的替换磁盘,对于替换磁盘 /dev/sdc 在操作系统中也可以显示为 /dev/sdd。要解决这个问题,请使用持久的名称并匹配以下模式: /dev/disk/by-*。如需更多信息,请参阅 Red Hat Enterprise Linux (RHEL) 7 存储管理指南中的 持久性命名。
根据您用于部署 Ceph 的命名方法,您可能需要在替换 OSD 后更新 devices 列表。使用以下命名方法列表来确定是否必须更改设备列表:
- 主号码和次号范围方法
如果您使用
sd并想继续使用它,请在安装新磁盘后检查名称是否已改变。如果名称没有改变,例如,如果与/dev/sdd正确显示相同的名称,则不需要在完成磁盘替换步骤后更改名称。重要不建议此命名方法,因为仍存在名称随时间不一致的风险。如需更多信息,请参阅 RHEL 7 存储管理指南 中的 持久性命名。
by-path方法如果您使用这个方法,且在同一插槽中添加替换磁盘,则路径一致,且不需要更改。
重要虽然这种命名方法最好使用主号和次号范围方法,但要小心谨慎,以确保目标号不会改变。例如,如果主机适配器被移到不同的 PCI 插槽,请使用持久性绑定和更新名称。另外,如果以不同顺序载入驱动程序,或者系统上安装了新的 HBA,则 SCSI 主机号可能会改变,如果 HBA 无法探测。
by-path命名方法在 RHEL7 和 RHEL8 之间也有所不同。如需更多信息,请参阅:- 文章 [在 RHEL8 和 RHEL7 中创建的"路径"链接之间有什么区别?] https://access.redhat.com/solutions/5171991
- RHEL 8 管理文件系统 指南中的 持久性命名属性概述。
by-uuid方法-
如果使用此方法,您可以使用
blkid实用程序将新磁盘设置为与旧磁盘具有相同的 UUID。如需更多信息,请参阅 RHEL 7 存储管理指南 中的 持久性命名。 by-id方法- 如果使用这个方法,您必须更改 devices 列表,因为此标识符是设备的属性,且设备已被替换。
当您向系统添加新磁盘时,如果可以根据 RHEL7 Storage Administrator 指南 修改持久性命名属性,请参阅 Persistent Naming,以便设备名称保持不变,则不需要更新 devices 列表并重新运行 ceph-ansible,或者触发 director 重新运行 ceph-ansible,以重新运行 ceph-ansible,您可以继续执行磁盘替换过程。但是,您可以重新运行 ceph-ansible 以确保更改不会导致任何不一致。