替换设备


Red Hat OpenShift Container Storage 4.7

安全替换操作或失败的设备的说明

摘要

本文档介绍如何安全地替换 Red Hat OpenShift Container Storage 的存储设备。

使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 的信息

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。请告诉我们如何让它更好。提供反馈:

  • 关于特定内容的简单评论:

    1. 请确定您使用 Multi-page HTML 格式查看文档。另外,确定 Feedback 按钮出现在文档页的右上方。
    2. 用鼠标指针高亮显示您想评论的文本部分。
    3. 点在高亮文本上弹出的 Add Feedback
    4. 按照显示的步骤操作。
  • 要提交更复杂的反馈,请创建一个 Bugzilla ticket:

    1. 进入 Bugzilla 网站。
    2. 在 Component 中选择 Documentation
    3. Description 中输入您要提供的信息。包括文档相关部分的链接。
    4. Submit Bug

前言

根据部署类型,您可以选择以下步骤之一来替换存储设备:

注意

OpenShift Container Storage 不支持异构 OSD 大小。

当您需要替换 AWS 用户置备的基础架构上动态创建的存储集群中的设备时,必须替换存储节点。有关如何替换节点的详情,请参考:

当您需要替换 AWS 安装程序置备的基础架构上动态创建的存储集群中的设备时,必须替换存储节点。有关如何替换节点的详情,请参考:

当一个或多个虚拟机磁盘(VMDK)需要替换在 VMware 基础架构上动态部署的 OpenShift Container Storage 中时,使用此流程。这个过程有助于在新卷上创建新持久性卷声明 (PVC) 并删除旧的对象存储设备 (OSD)。

先决条件

  • 确保数据具有弹性。

    • 在 OpenShift Web 控制台中,导航到 Storage → Overview
    • Status 卡中的 Persistent Storage 下,确认 Data Resiliency 有一个绿色勾号标记。

流程

  1. 确定需要替换的 OSD,以及在其上调度 OSD 的 OpenShift Container Platform 节点。

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide
    Copy to Clipboard Toggle word wrap

    输出示例:

    rook-ceph-osd-0-6d77d6c7c6-m8xj6    0/1    CrashLoopBackOff    0    24h   10.129.0.16   compute-2   <none>           <none>
    rook-ceph-osd-1-85d99fb95f-2svc7    1/1    Running             0    24h   10.128.2.24   compute-0   <none>           <none>
    rook-ceph-osd-2-6c66cdb977-jp542    1/1    Running             0    24h   10.130.0.18   compute-1   <none>           <none>
    Copy to Clipboard Toggle word wrap

    在本例中,rook-ceph-osd-0-6d77d6c7c6-m8xj6 需要替换,compute-2 是调度 OSD 的 OpenShift Container Platform 节点。

    注意

    如果要更换的 OSD 处于健康状态,则 Pod 的状态将为 Running

  2. 缩减 OSD 部署,以替换 OSD。

    每次您要替换 OSD 时,通过将 osd_id_to_remove 参数更新为 OSD ID 来重复这一步。

    $ osd_id_to_remove=0
    $ oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0
    Copy to Clipboard Toggle word wrap

    其中,osd_id_to_remove 是 pod 名称中紧接在 rook-ceph-osd 前缀后面的整数。在本例中,部署名称为 rook-ceph-osd-0

    输出示例:

    deployment.extensions/rook-ceph-osd-0 scaled
    Copy to Clipboard Toggle word wrap
  3. 验证 rook-ceph-osd pod 是否已终止。

    $ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}
    Copy to Clipboard Toggle word wrap

    输出示例:

    No resources found.
    Copy to Clipboard Toggle word wrap
    注意

    如果 rook-ceph-osd pod 处于 terminating 状态,请使用 force 选项删除 pod。

    $ oc delete pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --force --grace-period=0
    Copy to Clipboard Toggle word wrap

    输出示例:

    warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
      pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deleted
    Copy to Clipboard Toggle word wrap
  4. 从集群中移除旧 OSD,以便能够添加新 OSD。

    1. 删除所有旧的 ocs-osd-removal 任务。

      $ oc delete -n openshift-storage job ocs-osd-removal-job
      Copy to Clipboard Toggle word wrap

      输出示例:

      job.batch "ocs-osd-removal-job" deleted
      Copy to Clipboard Toggle word wrap
    2. 更改到 openshift-storage 项目。

      $ oc project openshift-storage
      Copy to Clipboard Toggle word wrap
    3. 从集群中移除旧 OSD。

      $ oc process -n openshift-storage ocs-osd-removal \
      -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -
      Copy to Clipboard Toggle word wrap
      <failed_osd_id>

      rook-ceph-osd 前缀后立即的 pod 名称中的整数。您可以在 命令中添加以逗号分隔的 OSD ID,以删除多个 OSD,如 FAILED_OSD_IDS=0,1,2

      在只有三个 OSD 的集群中,FORCE_OSD_REMOVAL 值必须更改为 true,或者空间不足的集群才能在 OSD 被删除后恢复所有三个数据副本。

      警告

      这一步会导致 OSD 完全从集群中移除。确保提供了 osd_id_to_remove 的正确值。

  5. 通过检查 ocs-osd-removal pod 的状态,验证 OSD 是否已成功移除。状态为 Completed,确认 OSD 移除作业已成功。

    $ oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard Toggle word wrap
    注意

    如果 ocs-osd-removal 失败且 pod 不处于预期的 Completed 状态,请检查 pod 日志以进一步调试。例如:

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1'
    Copy to Clipboard Toggle word wrap
  6. 如果在安装时启用了加密,在从相应 OpenShift Container Storage 节点中删除的 OSD 设备中删除 dm-crypt 关联的 device-mapper 映射。

    1. ocs-osd-removal-job pod 日志中获取所替换 OSD 的 PVC 名称:

      $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1  |egrep -i ‘pvc|deviceset’
      Copy to Clipboard Toggle word wrap

      例如:

      2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"
      Copy to Clipboard Toggle word wrap
    2. 对于第 #1 步中指定的每个节点,请执行以下操作:

      1. 创建 debug pod 和 chroot 到存储节点上的主机。

        $ oc debug node/<node name>
        $ chroot /host
        Copy to Clipboard Toggle word wrap
      2. 根据上一步中标识的 PVC 名称查找相关的设备名称

        sh-4.4# dmsetup ls| grep <pvc name>
        ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
        Copy to Clipboard Toggle word wrap
      3. 删除映射的设备。

        $ cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt
        Copy to Clipboard Toggle word wrap
        注意

        如果上述命令因为权限不足而卡住,请运行以下命令:

        • CTRL+Z 退出上述命令。
        • 查找阻塞的进程的 PID。

          $ ps -ef | grep crypt
          Copy to Clipboard Toggle word wrap
        • 使用 kill 命令终止进程。

          $ kill -9 <PID>
          Copy to Clipboard Toggle word wrap
        • 验证设备名称是否已移除。

          $ dmsetup ls
          Copy to Clipboard Toggle word wrap
  7. 删除 ocs-osd-removal 任务。

    $ oc delete -n openshift-storage job ocs-osd-removal-job
    Copy to Clipboard Toggle word wrap

    输出示例:

    job.batch "ocs-osd-removal-job" deleted
    Copy to Clipboard Toggle word wrap
注意

使用带有数据加密的外部密钥管理系统(KMS)时,可以从 Vault 服务器中删除旧的 OSD 加密密钥,因为它现在是孤立的密钥。

验证步骤

  1. 验证是否有新的 OSD 正在运行。

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd
    Copy to Clipboard Toggle word wrap

    输出示例:

    rook-ceph-osd-0-5f7f4747d4-snshw                                  1/1     Running     0          4m47s
    rook-ceph-osd-1-85d99fb95f-2svc7                                  1/1     Running     0          1d20h
    rook-ceph-osd-2-6c66cdb977-jp542                                  1/1     Running     0          1d20h
    Copy to Clipboard Toggle word wrap
  2. 验证是否创建了处于 Bound 状态的新 PVC。

    $ oc get -n openshift-storage pvc
    Copy to Clipboard Toggle word wrap

    输出示例:

    NAME                      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS    AGE
    ocs-deviceset-0-0-2s6w4   Bound    pvc-7c9bcaf7-de68-40e1-95f9-0b0d7c0ae2fc   512Gi      RWO            thin            5m
    ocs-deviceset-1-0-q8fwh   Bound    pvc-9e7e00cb-6b33-402e-9dc5-b8df4fd9010f   512Gi      RWO            thin            1d20h
    ocs-deviceset-2-0-9v8lq   Bound    pvc-38cdfcee-ea7e-42a5-a6e1-aaa6d4924291   512Gi      RWO            thin            1d20h
    Copy to Clipboard Toggle word wrap
  3. (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。

    1. 识别运行新 OSD pod 的节点。

      $ oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>
      Copy to Clipboard Toggle word wrap

      例如:

      oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
      Copy to Clipboard Toggle word wrap
    2. 对于上一步中确定的每个节点,请执行以下操作:

      1. 创建调试 pod,并为所选主机打开 chroot 环境。

        $ oc debug node/<node name>
        $ chroot /host
        Copy to Clipboard Toggle word wrap
      2. 运行 "lsblk" 并检查 ocs-deviceset 名旁边的 "crypt" 关键字。

        $ lsblk
        Copy to Clipboard Toggle word wrap
  4. 登录 OpenShift Web 控制台并查看存储仪表板。

    图 2.1. 在设备替换后,OpenShift Container Platform 存储仪表板中的 OSD 状态

当一个或多个虚拟机磁盘(VMDK)需要替换在 Red Hat Virtualization 基础架构上部署的 OpenShift Container Storage 中时,使用此流程。这个过程有助于在新卷上创建新持久性卷声明 (PVC) 并删除旧的对象存储设备 (OSD)。

先决条件

  • 确保数据具有弹性。

    • 在 OpenShift Web 控制台中,导航到 Storage → Overview
    • Status 卡中的 Persistent Storage 下,确认 Data Resiliency 有一个绿色勾号标记。

流程

  1. 确定需要替换的 OSD,以及在其上调度 OSD 的 OpenShift Container Platform 节点。

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide
    Copy to Clipboard Toggle word wrap

    输出示例:

    rook-ceph-osd-0-6d77d6c7c6-m8xj6    0/1    CrashLoopBackOff    0    24h   10.129.0.16   compute-2   <none>           <none>
    rook-ceph-osd-1-85d99fb95f-2svc7    1/1    Running             0    24h   10.128.2.24   compute-0   <none>           <none>
    rook-ceph-osd-2-6c66cdb977-jp542    1/1    Running             0    24h   10.130.0.18   compute-1   <none>           <none>
    Copy to Clipboard Toggle word wrap

    在本例中,rook-ceph-osd-0-6d77d6c7c6-m8xj6 需要替换,compute-2 是调度 OSD 的 OpenShift Container Platform 节点。

    注意

    如果要更换的 OSD 处于健康状态,则 Pod 的状态将为 Running

  2. 缩减 OSD 部署,以替换 OSD。

    每次您要替换 OSD 时,通过将 osd_id_to_remove 参数更新为 OSD ID 来重复这一步。

    $ osd_id_to_remove=0
    $ oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0
    Copy to Clipboard Toggle word wrap

    其中,osd_id_to_remove 是 pod 名称中紧接在 rook-ceph-osd 前缀后面的整数。在本例中,部署名称为 rook-ceph-osd-0

    输出示例:

    deployment.extensions/rook-ceph-osd-0 scaled
    Copy to Clipboard Toggle word wrap
  3. 验证 rook-ceph-osd pod 是否已终止。

    $ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}
    Copy to Clipboard Toggle word wrap

    输出示例:

    No resources found.
    Copy to Clipboard Toggle word wrap
    注意

    如果 rook-ceph-osd pod 处于 terminating 状态,请使用 force 选项删除 pod。

    $ oc delete pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --force --grace-period=0
    Copy to Clipboard Toggle word wrap

    输出示例:

    warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
      pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deleted
    Copy to Clipboard Toggle word wrap
  4. 从集群中移除旧 OSD,以便能够添加新 OSD。

    1. 删除所有旧的 ocs-osd-removal 任务。

      $ oc delete -n openshift-storage job ocs-osd-removal-job
      Copy to Clipboard Toggle word wrap

      输出示例:

      job.batch "ocs-osd-removal-job"
      Copy to Clipboard Toggle word wrap
    2. 更改到 openshift-storage 项目。

      $ oc project openshift-storage
      Copy to Clipboard Toggle word wrap
    3. 从集群中移除旧 OSD。

      $ oc process -n openshift-storage ocs-osd-removal \
      -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -
      Copy to Clipboard Toggle word wrap
      <failed_osd_id>

      rook-ceph-osd 前缀后立即的 pod 名称中的整数。您可以在 命令中添加以逗号分隔的 OSD ID,以删除多个 OSD,如 FAILED_OSD_IDS=0,1,2

      在只有三个 OSD 的集群中,FORCE_OSD_REMOVAL 值必须更改为 true,或者空间不足的集群才能在 OSD 被删除后恢复所有三个数据副本。

      警告

      这一步会导致 OSD 完全从集群中移除。确保提供了 osd_id_to_remove 的正确值。

  5. 通过检查 ocs-osd-removal pod 的状态,验证 OSD 是否已成功移除。状态为 Completed,确认 OSD 移除作业已成功。

    $ oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard Toggle word wrap
    注意

    如果 ocs-osd-removal 失败且 pod 不处于预期的 Completed 状态,请检查 pod 日志以进一步调试。例如:

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1'
    Copy to Clipboard Toggle word wrap
  6. 如果在安装时启用了加密,在从相应 OpenShift Container Storage 节点中删除的 OSD 设备中删除 dm-crypt 关联的 device-mapper 映射。

    1. ocs-osd-removal-job pod 日志中获取所替换 OSD 的 PVC 名称:

      $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1  |egrep -i ‘pvc|deviceset’
      Copy to Clipboard Toggle word wrap

      例如:

      2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"
      Copy to Clipboard Toggle word wrap
    2. 对于第 #1 步中指定的每个节点,请执行以下操作:

      1. 创建 debug pod 和 chroot 到存储节点上的主机。

        $ oc debug node/<node name>
        $ chroot /host
        Copy to Clipboard Toggle word wrap
      2. 根据上一步中标识的 PVC 名称查找相关的设备名称

        sh-4.4# dmsetup ls| grep <pvc name>
        ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
        Copy to Clipboard Toggle word wrap
      3. 删除映射的设备。

        $ cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt
        Copy to Clipboard Toggle word wrap
        注意

        如果上述命令因为权限不足而卡住,请运行以下命令:

        • CTRL+Z 退出上述命令。
        • 查找阻塞的进程的 PID。

          $ ps -ef | grep crypt
          Copy to Clipboard Toggle word wrap
        • 使用 kill 命令终止进程。

          $ kill -9 <PID>
          Copy to Clipboard Toggle word wrap
        • 验证设备名称是否已移除。

          $ dmsetup ls
          Copy to Clipboard Toggle word wrap
  7. 删除 ocs-osd-removal 任务。

    $ oc delete -n openshift-storage job ocs-osd-removal-job
    Copy to Clipboard Toggle word wrap

    输出示例:

    job.batch "ocs-osd-removal-job" deleted
    Copy to Clipboard Toggle word wrap
注意

使用带有数据加密的外部密钥管理系统(KMS)时,可以从 Vault 服务器中删除旧的 OSD 加密密钥,因为它现在是孤立的密钥。

验证步骤

  1. 验证是否有新的 OSD 正在运行。

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd
    Copy to Clipboard Toggle word wrap

    输出示例:

    rook-ceph-osd-0-5f7f4747d4-snshw                                  1/1     Running     0          4m47s
    rook-ceph-osd-1-85d99fb95f-2svc7                                  1/1     Running     0          1d20h
    rook-ceph-osd-2-6c66cdb977-jp542                                  1/1     Running     0          1d20h
    Copy to Clipboard Toggle word wrap
  2. 验证是否创建了处于 Bound 状态的新 PVC。

    $ oc get -n openshift-storage pvc
    Copy to Clipboard Toggle word wrap
  3. (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。

    1. 识别运行新 OSD pod 的节点。

      $ oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>
      Copy to Clipboard Toggle word wrap

      例如:

      oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
      Copy to Clipboard Toggle word wrap
    2. 对于上一步中确定的每个节点,请执行以下操作:

      1. 创建调试 pod,并为所选主机打开 chroot 环境。

        $ oc debug node/<node name>
        $ chroot /host
        Copy to Clipboard Toggle word wrap
      2. 运行 "lsblk" 并检查 ocs-deviceset 名旁边的 "crypt" 关键字。

        $ lsblk
        Copy to Clipboard Toggle word wrap
  4. 登录 OpenShift Web 控制台并查看存储仪表板。

    图 3.1. 在设备替换后,OpenShift Container Platform 存储仪表板中的 OSD 状态

当您需要替换 Azure 安装程序置备的基础架构上动态创建的存储集群中的设备时,必须替换存储节点。有关如何替换节点的详情,请参考:

5.1. 替换 Amazon EC2 基础架构上的失败存储设备

当您需要替换 Amazon EC2(存储优化的 I3 基础架构)上的存储设备时,您必须替换存储节点。有关如何替换节点的详情,请参考在 Amazon EC2 基础架构中替换失败的存储节点

您可以使用以下基础架构中的本地存储设备替换 OpenShift Container Storage 中部署的对象存储设备(OSD):

  • 裸机
  • VMware
  • Red Hat Virtualization

当需要替换一个或多个底层存储设备时,请使用这个步骤。

先决条件

  • 红帽建议将替换设备配置为带有类似基础架构和要替换设备的资源。
  • 如果您从以前的版本升级到 OpenShift Container Storage 4.7,且还没有创建一个 LocalVolumeSet 对象来启用自动置备设备,请按照本地存储支持的集群的 Post-update 配置更改中所述的步骤进行。
  • 如果您从以前的版本升级到 OpenShift Container Storage 4.7,且还没有创建 LocalVolumeDiscovery 对象,现在请按照 由本地存储支持的集群的 Post-update 配置更改 中所述的步骤进行。
  • 确保数据具有弹性。

    • 在 OpenShift Web 控制台中,导航到 Storage → Overview
    • Status 卡中的 Persistent Storage 下,确认 Data Resiliency 有一个绿色勾号标记。

流程

  1. 从相关的 worker 节点中删除底层存储设备。
  2. 验证相关的 OSD Pod 已移到 CrashLoopBackOff 状态。

    确定需要替换的 OSD,以及在其上调度 OSD 的 OpenShift Container Platform 节点。

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide
    Copy to Clipboard Toggle word wrap

    输出示例:

    rook-ceph-osd-0-6d77d6c7c6-m8xj6    0/1    CrashLoopBackOff    0    24h   10.129.0.16   compute-2   <none>           <none>
    rook-ceph-osd-1-85d99fb95f-2svc7    1/1    Running             0    24h   10.128.2.24   compute-0   <none>           <none>
    rook-ceph-osd-2-6c66cdb977-jp542    1/1    Running             0    24h   10.130.0.18   compute-1   <none>           <none>
    Copy to Clipboard Toggle word wrap

    在本例中,rook-ceph-osd-0-6d77d6c7c6-m8xj6 需要替换,compute-2 是调度 OSD 的 OpenShift Container Platform 节点。

  3. 缩减 OSD 部署,以替换 OSD。

    $ osd_id_to_remove=0
    $ oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0
    Copy to Clipboard Toggle word wrap

    其中,osd_id_to_remove 是 pod 名称中紧接在 rook-ceph-osd 前缀后面的整数。在本例中,部署名称为 rook-ceph-osd-0

    输出示例:

    deployment.extensions/rook-ceph-osd-0 scaled
    Copy to Clipboard Toggle word wrap
  4. 验证 rook-ceph-osd pod 是否已终止。

    $ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}
    Copy to Clipboard Toggle word wrap

    输出示例:

    No resources found in openshift-storage namespace.
    Copy to Clipboard Toggle word wrap
    注意

    如果 rook-ceph-osd pod 处于 terminating 状态超过几分钟,请使用 force 选项删除 pod。

    $ oc delete -n openshift-storage pod rook-ceph-osd-0-6d77d6c7c6-m8xj6 --grace-period=0 --force
    Copy to Clipboard Toggle word wrap

    输出示例:

    warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
      pod "rook-ceph-osd-0-6d77d6c7c6-m8xj6" force deleted
    Copy to Clipboard Toggle word wrap
  5. 从集群中移除旧 OSD,以便能够添加新 OSD。

    1. 删除所有旧的 ocs-osd-removal 任务。

      $ oc delete -n openshift-storage job ocs-osd-removal-job
      Copy to Clipboard Toggle word wrap

      输出示例:

      job.batch "ocs-osd-removal-job" deleted
      Copy to Clipboard Toggle word wrap
    2. 更改到 openshift-storage 项目。

      $ oc project openshift-storage
      Copy to Clipboard Toggle word wrap
    3. 从集群中移除旧 OSD。

      $ oc process -n openshift-storage ocs-osd-removal \
      -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -
      Copy to Clipboard Toggle word wrap
      <failed_osd_id>

      rook-ceph-osd 前缀后立即的 pod 名称中的整数。您可以在 命令中添加以逗号分隔的 OSD ID,以删除多个 OSD,如 FAILED_OSD_IDS=0,1,2

      在只有三个 OSD 的集群中,FORCE_OSD_REMOVAL 值必须更改为 true,或者空间不足的集群才能在 OSD 被删除后恢复所有三个数据副本。

      警告

      这一步会导致 OSD 完全从集群中移除。确保提供了 osd_id_to_remove 的正确值。

  6. 通过检查 ocs-osd-removal pod 的状态,验证 OSD 是否已成功移除。状态为 Completed,确认 OSD 移除作业已成功。

    $ oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard Toggle word wrap
    注意

    如果 ocs-osd-removal 失败且 pod 不处于预期的 Completed 状态,请检查 pod 日志以进一步调试。例如:

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard Toggle word wrap
  7. 如果在安装时启用了加密,在从相应 OpenShift Container Storage 节点中删除的 OSD 设备中删除 dm-crypt 关联的 device-mapper 映射。

    1. ocs-osd-removal-job pod 日志中获取所替换 OSD 的 PVC 名称:

      $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1  |egrep -i ‘pvc|deviceset’
      Copy to Clipboard Toggle word wrap

      例如:

      2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"
      Copy to Clipboard Toggle word wrap
    2. 对于第 #1 步中指定的每个节点,请执行以下操作:

      1. 创建 debug pod 和 chroot 到存储节点上的主机。

        $ oc debug node/<node name>
        $ chroot /host
        Copy to Clipboard Toggle word wrap
      2. 根据上一步中标识的 PVC 名称查找相关的设备名称

        sh-4.4# dmsetup ls| grep <pvc name>
        ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
        Copy to Clipboard Toggle word wrap
      3. 删除映射的设备。

        $ cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt
        Copy to Clipboard Toggle word wrap
        注意

        如果上述命令因为权限不足而卡住,请运行以下命令:

        • CTRL+Z 退出上述命令。
        • 查找阻塞的进程的 PID。

          $ ps -ef | grep crypt
          Copy to Clipboard Toggle word wrap
        • 使用 kill 命令终止进程。

          $ kill -9 <PID>
          Copy to Clipboard Toggle word wrap
        • 验证设备名称是否已移除。

          $ dmsetup ls
          Copy to Clipboard Toggle word wrap
  8. 查找命令需要删除的持久性卷(PV):

    $ oc get pv -L kubernetes.io/hostname | grep localblock | grep Released
    
    local-pv-d6bf175b           1490Gi       RWO         Delete          Released            openshift-storage/ocs-deviceset-0-data-0-6c5pw      localblock      2d22h       compute-1
    Copy to Clipboard Toggle word wrap
  9. 删除持久卷:

    $ oc delete pv local-pv-d6bf175b
    Copy to Clipboard Toggle word wrap
  10. 向节点物理地添加新设备。
  11. 使用以下命令,跟踪与 deviceInclusionSpec 匹配的设备的持久性卷置备。调配持久卷可能需要几分钟时间。

    $ oc -n openshift-local-storage describe localvolumeset localblock
    Copy to Clipboard Toggle word wrap

    输出示例:

    [...]
    Status:
      Conditions:
        Last Transition Time:          2020-11-17T05:03:32Z
        Message:                       DiskMaker: Available, LocalProvisioner: Available
        Status:                        True
        Type:                          DaemonSetsAvailable
        Last Transition Time:          2020-11-17T05:03:34Z
        Message:                       Operator reconciled successfully.
        Status:                        True
        Type:                          Available
      Observed Generation:             1
      Total Provisioned Device Count: 4
    Events:
    Type    Reason      Age          From                Message
    ----    ------      ----         ----                -------
    Normal  Discovered  2m30s (x4    localvolumeset-     node.example.com -
            NewDevice   over 2m30s)  symlink-controller  found possible
                                                         matching disk,
                                                         waiting 1m to claim
    Normal  FoundMatch  89s (x4      localvolumeset-     node.example.com -
            ingDisk     over 89s)    symlink-controller  symlinking matching
                                                         disk
    Copy to Clipboard Toggle word wrap

    调配了持久卷后,将自动为调配的卷创建新的 OSD Pod。

  12. 删除 ocs-osd-removal 任务。

    $ oc delete -n openshift-storage job ocs-osd-removal-job
    Copy to Clipboard Toggle word wrap

    输出示例:

    job.batch "ocs-osd-removal-job" deleted
    Copy to Clipboard Toggle word wrap
注意

使用带有数据加密的外部密钥管理系统(KMS)时,可以从 Vault 服务器中删除旧的 OSD 加密密钥,因为它现在是孤立的密钥。

验证步骤

  1. 验证是否有新的 OSD 正在运行。

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd
    Copy to Clipboard Toggle word wrap

    输出示例:

    rook-ceph-osd-0-5f7f4747d4-snshw    1/1     Running     0          4m47s
    rook-ceph-osd-1-85d99fb95f-2svc7    1/1     Running     0          1d20h
    rook-ceph-osd-2-6c66cdb977-jp542    1/1     Running     0          1d20h
    Copy to Clipboard Toggle word wrap
    注意

    如果新 OSD 在几分钟后没有显示 Running,请重启 rook-ceph-operator pod 来强制协调。

    $ oc delete pod -n openshift-storage -l app=rook-ceph-operator
    Copy to Clipboard Toggle word wrap

    输出示例:

    pod "rook-ceph-operator-6f74fb5bff-2d982" deleted
    Copy to Clipboard Toggle word wrap
  2. 验证是否创建了新 PVC。

    $ oc get -n openshift-storage pvc | grep localblock
    Copy to Clipboard Toggle word wrap

    输出示例:

    ocs-deviceset-0-0-c2mqb   Bound    local-pv-b481410         1490Gi     RWO            localblock                    5m
    ocs-deviceset-1-0-959rp   Bound    local-pv-414755e0        1490Gi     RWO            localblock                    1d20h
    ocs-deviceset-2-0-79j94   Bound    local-pv-3e8964d3        1490Gi     RWO            localblock                    1d20h
    Copy to Clipboard Toggle word wrap
  3. (可选)如果在集群中启用了集群范围的加密,请验证新 OSD 设备是否已加密。

    1. 识别运行新 OSD pod 的节点。

      $ oc get -o=custom-columns=NODE:.spec.nodeName pod/<OSD pod name>
      Copy to Clipboard Toggle word wrap

      例如:

      oc get -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm
      Copy to Clipboard Toggle word wrap
    2. 对于上一步中确定的每个节点,请执行以下操作:

      1. 创建调试 pod,并为所选主机打开 chroot 环境。

        $ oc debug node/<node name>
        $ chroot /host
        Copy to Clipboard Toggle word wrap
      2. 运行 "lsblk" 并检查 ocs-deviceset 名旁边的 "crypt" 关键字。

        $ lsblk
        Copy to Clipboard Toggle word wrap
  4. 登录 OpenShift Web 控制台,再检查存储控制面板上的 OSD 状态。

    图 5.1. 在设备替换后,OpenShift Container Platform 存储仪表板中的 OSD 状态

注意

根据正在恢复的数据量,完整数据恢复可能需要更长的时间。

您可以使用 IBM Power Systems 上的本地存储设备替换 OpenShift Container Storage 中部署的对象存储设备(OSD)。当需要替换底层存储设备时,请使用这个步骤。

先决条件

  • 确保数据具有弹性。

    • 在 OpenShift Web 控制台中,导航到 Storage → Overview
    • Status 卡中的 Persistent Storage 下,确认 Data Resiliency 有一个绿色勾号标记。

流程

  1. 确定需要替换的 OSD,以及在其上调度 OSD 的 OpenShift Container Platform 节点。

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide
    Copy to Clipboard Toggle word wrap

    输出示例:

    rook-ceph-osd-0-86bf8cdc8-4nb5t   0/1     crashLoopBackOff   0   24h   10.129.2.26     worker-0     <none>       <none>
    rook-ceph-osd-1-7c99657cfb-jdzvz   1/1     Running   0          24h     10.128.2.46     worker-1     <none>       <none>
    rook-ceph-osd-2-5f9f6dfb5b-2mnw9    1/1     Running   0          24h     10.131.0.33    worker-2     <none>       <none>
    Copy to Clipboard Toggle word wrap

    在本例中,需要替换 rook-ceph-osd-0-86bf8cdc8-4nb5tworker-0 是调度 OSD 的 RHOCP 节点。

    注意

    如果要更换的 OSD 处于健康状态,则 Pod 的状态将为 Running

  2. 缩减 OSD 部署,以替换 OSD。

    $ osd_id_to_remove=0
    $ oc scale -n openshift-storage deployment rook-ceph-osd-${osd_id_to_remove} --replicas=0
    Copy to Clipboard Toggle word wrap

    其中,osd_id_to_remove 是 pod 名称中紧接在 rook-ceph-osd 前缀后面的整数。在本例中,部署名称为 rook-ceph-osd-0

    输出示例:

    deployment.apps/rook-ceph-osd-0 scaled
    Copy to Clipboard Toggle word wrap
  3. 验证 rook-ceph-osd pod 是否已终止。

    $ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}
    Copy to Clipboard Toggle word wrap

    输出示例:

    No resources found in openshift-storage namespace.
    Copy to Clipboard Toggle word wrap
    注意

    如果 rook-ceph-osd pod 处于 terminating 状态,请使用 force 选项删除 pod。

    $ oc delete -n openshift-storage pod rook-ceph-osd-0-86bf8cdc8-4nb5t --grace-period=0 --force
    Copy to Clipboard Toggle word wrap

    输出示例:

    warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
      pod "rook-ceph-osd-0-86bf8cdc8-4nb5t" force deleted
    Copy to Clipboard Toggle word wrap
  1. 从集群中移除旧 OSD,以便能够添加新 OSD。

    1. 识别与要替换的 OSD 关联的 DeviceSet

      $ oc get -n openshift-storage -o yaml deployment rook-ceph-osd-${osd_id_to_remove} | grep ceph.rook.io/pvc
      Copy to Clipboard Toggle word wrap

      输出示例:

      ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-64xjl
          ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-64xjl
      Copy to Clipboard Toggle word wrap

      在本例中,PVC 名称为 ocs-deviceset-localblock-0-data-0-64xjl

    2. 删除所有旧的 ocs-osd-removal 任务。

      $ oc delete -n openshift-storage job ocs-osd-removal-job
      Copy to Clipboard Toggle word wrap

      输出示例:

      job.batch "ocs-osd-removal-job" deleted
      Copy to Clipboard Toggle word wrap
    3. 更改到 openshift-storage 项目。

      $ oc project openshift-storage
      Copy to Clipboard Toggle word wrap
    4. 从集群中移除旧的 OSD

      $ oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_id_to_remove} | oc -n openshift-storage create -f -
      Copy to Clipboard Toggle word wrap

      您可以通过在 命令中添加逗号分隔的 OSD ID 来移除多个 OSD。(例如:FAILED_OSD_IDS=0,1,2)

      警告

      这一步会导致 OSD 完全从集群中移除。确保提供了 osd_id_to_remove 的正确值。

  2. 通过检查 ocs-osd-removal pod 的状态,验证 OSD 是否已成功移除。状态为 Completed,确认 OSD 移除作业已成功完成。

    $ oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
    Copy to Clipboard Toggle word wrap
    注意

    如果 ocs-osd-removal 失败且 pod 不处于预期的 Completed 状态,请检查 pod 日志以进一步调试。例如:

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
    Copy to Clipboard Toggle word wrap
  3. 删除与要替换的 OSD 关联的持久卷声明(PVC)资源。

    1. 标识与 PVC 关联的 PV。

      $ oc get -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix>
      Copy to Clipboard Toggle word wrap

      其中,xypvc-suffixDeviceSet 中在第 4(a)步中识别的值。

      输出示例:

      NAME                      STATUS        VOLUME        CAPACITY   ACCESS MODES   STORAGECLASS   AGE
      ocs-deviceset-localblock-0-data-0-64xjl   Bound    local-pv-8137c873    256Gi      RWO     localblock     24h
      Copy to Clipboard Toggle word wrap

      在本例中,关联的 PV 是 local-pv-8137c873

    2. 确定要替换的设备的名称。

      $ oc get pv local-pv-<pv-suffix> -o yaml | grep path
      Copy to Clipboard Toggle word wrap

      其中,pv-suffix 是前面步骤中标识的 PV 名称中的值。

      输出示例:

      path: /mnt/local-storage/localblock/vdc
      Copy to Clipboard Toggle word wrap

      在本例中,设备名称为 vdc

    3. 找到与要被替换的 OSD 关联的 prepare-pod

      $ oc describe -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix> | grep Mounted
      Copy to Clipboard Toggle word wrap

      其中 xypvc-suffix 是前面步骤中标识的 DeviceSet 中的值。

      输出示例:

      Mounted By:    rook-ceph-osd-prepare-ocs-deviceset-localblock-0-data-0-64knzkc
      Copy to Clipboard Toggle word wrap

      在本例中,prepare-pod 名称为 rook-ceph-osd-prepare-ocs-deviceset-localblock-0-data-0-64knzkc

    4. 在删除关联的 PVC 前,删除 osd-prepare pod。

      $ oc delete -n openshift-storage pod rook-ceph-osd-prepare-ocs-deviceset-<x>-<y>-<pvc-suffix>-<pod-suffix>
      Copy to Clipboard Toggle word wrap

      其中,xypvc-suffixpod-suffix 是上一步中标识的 osd-prepare pod 名称中的值。

      输出示例:

      job.batch "ocs-osd-removal-job" deleted
      Copy to Clipboard Toggle word wrap
    5. 更改到 openshift-storage 项目。

      $ oc project openshift-storage
      Copy to Clipboard Toggle word wrap
    6. 从集群中移除旧的 OSD

      $ oc process -n openshift-storage ocs-osd-removal \
      -p FAILED_OSD_IDS=<failed_osd_id> FORCE_OSD_REMOVAL=false | oc create -n openshift-storage -f -
      Copy to Clipboard Toggle word wrap
      <failed_osd_id>

      rook-ceph-osd 前缀后立即的 pod 名称中的整数。您可以在 命令中添加以逗号分隔的 OSD ID,以删除多个 OSD,如 FAILED_OSD_IDS=0,1,2

      在只有三个 OSD 的集群中,FORCE_OSD_REMOVAL 值必须更改为 true,否则在移除 OSD 后恢复所有三个数据副本不足。

      警告

      这一步会导致 OSD 完全从集群中移除。确保提供了 osd_id_to_remove 的正确值。

  4. 通过检查 ocs-osd-removal-job pod 的状态,验证 OSD 是否已成功移除。

    状态为 Completed,确认 OSD 移除作业已成功。

    pod "rook-ceph-osd-prepare-ocs-deviceset-localblock-0-data-0-64knzkc" deleted
    Copy to Clipboard Toggle word wrap
    1. 删除与要替换的 OSD 关联的 PVC。

      $ oc delete -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix>
      Copy to Clipboard Toggle word wrap

      其中 xypvc-suffix 是前面步骤中标识的 DeviceSet 中的值。

      输出示例:

      persistentvolumeclaim "ocs-deviceset-localblock-0-data-0-64xjl" deleted
      Copy to Clipboard Toggle word wrap
  5. 删除与要替换的设备关联的 PV,这已在前面的步骤中识别。在本例中,PV 名称为 local-pv-8137c873

    $ oc delete pv local-pv-8137c873
    Copy to Clipboard Toggle word wrap

    输出示例:

    persistentvolume "local-pv-8137c873" deleted
    Copy to Clipboard Toggle word wrap
  6. 替换旧设备,并使用新设备创建新的 OpenShift Container Platform PV。

    1. 使用要替换的设备登录到 OpenShift Container Platform 节点。在本例中,OpenShift Container Platform 节点是 worker-0

      $ oc debug node/worker-0
      Copy to Clipboard Toggle word wrap

      输出示例:

      Starting pod/worker-0-debug ...
      To use host binaries, run `chroot /host`
      Pod IP: 192.168.88.21
      If you don't see a command prompt, try pressing enter.
      # chroot /host
      Copy to Clipboard Toggle word wrap
    2. 使用前面标识的设备名称 vdc 记录要替换的 /dev/disk

      # ls -alh /mnt/local-storage/localblock
      Copy to Clipboard Toggle word wrap

      输出示例:

      total 0
      drwxr-xr-x. 2 root root 17 Nov  18 15:23 .
      drwxr-xr-x. 3 root root 24 Nov  18 15:23 ..
      lrwxrwxrwx. 1 root root  8 Nov  18 15:23 vdc -> /dev/vdc
      Copy to Clipboard Toggle word wrap
    3. 查找 LocalVolumeSet CR 的名称,并删除或注释掉要替换的设备 /dev/disk

      $ oc get -n openshift-local-storage localvolumeset
      NAME          AGE
      localblock   25h
      Copy to Clipboard Toggle word wrap
  7. 使用要替换的设备登录到 OpenShift Container Platform 节点,并删除旧的 符号链接

    $ oc debug node/worker-0
    Copy to Clipboard Toggle word wrap

    输出示例:

    Starting pod/worker-0-debug ...
    To use host binaries, run `chroot /host`
    Pod IP: 192.168.88.21
    If you don't see a command prompt, try pressing enter.
    # chroot /host
    Copy to Clipboard Toggle word wrap
    1. 确定要替换的设备名称的旧 符号链接。在本例中,设备名称为 vdc

      # ls -alh /mnt/local-storage/localblock
      Copy to Clipboard Toggle word wrap

      输出示例:

      total 0
      drwxr-xr-x. 2 root root 17 Nov  18 15:23 .
      drwxr-xr-x. 3 root root 24 Nov  18 15:23 ..
      lrwxrwxrwx. 1 root root  8 Nov  18 15:23 vdc -> /dev/vdc
      Copy to Clipboard Toggle word wrap
    2. 删除 符号链接

      # rm /mnt/local-storage/localblock/vdc
      Copy to Clipboard Toggle word wrap
    3. 验证是否删除了 symlink

      # ls -alh /mnt/local-storage/localblock
      Copy to Clipboard Toggle word wrap

      输出示例:

      total 0
      drwxr-xr-x. 2 root root 6 Nov 18 17:11 .
      drwxr-xr-x. 3 root root 24 Nov 18 15:23 ..
      Copy to Clipboard Toggle word wrap
      重要

      对于 OpenShift Container Storage 4.5 或更高版本的新部署,LVM 不在使用中,ceph-volume 原始模式则改为在 play 中。因此,不需要额外的验证,您可以继续下一步。

  8. 使用新设备替换该设备。
  9. 重新登录到正确的 OpenShift Cotainer Platform 节点,并确定新驱动器的设备名称。设备名称必须更改,除非您要重新排序同一设备。

    # lsblk
    Copy to Clipboard Toggle word wrap

    输出示例:

    NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    vda                          252:0    0   40G  0 disk
    |-vda1                       252:1    0    4M  0 part
    |-vda2                       252:2    0  384M  0 part /boot
    `-vda4                       252:4    0 39.6G  0 part
      `-coreos-luks-root-nocrypt 253:0    0 39.6G  0 dm   /sysroot
    vdb                          252:16   0  512B  1 disk
    vdd                          252:32   0  256G  0 disk
    Copy to Clipboard Toggle word wrap

    在这个示例中,新设备名称为 vdd

  10. /dev/disk 可用后,localvolumeset 将自动检测到它。
  11. 验证是否有新 PV 处于 Available 状态且大小正确。

    $ oc get pv | grep 256Gi
    Copy to Clipboard Toggle word wrap

    输出示例:

    local-pv-1e31f771   256Gi   RWO    Delete  Bound  openshift-storage/ocs-deviceset-localblock-2-data-0-6xhkf   localblock    24h
    local-pv-ec7f2b80   256Gi   RWO    Delete  Bound  openshift-storage/ocs-deviceset-localblock-1-data-0-hr2fx   localblock    24h
    local-pv-8137c873   256Gi   RWO    Delete  Available                                                          localblock    32m
    Copy to Clipboard Toggle word wrap
  12. 为新设备创建新 OSD。

    1. 通过重启 rook-ceph-operator 来强制 Operator 协调,从而部署新的 OSD。

      1. 识别 rook-ceph-operator 的名称。

        $ oc get -n openshift-storage pod -l app=rook-ceph-operator
        Copy to Clipboard Toggle word wrap

        输出示例:

        NAME                                  READY   STATUS    RESTARTS   AGE
        rook-ceph-operator-85f6494db4-sg62v   1/1     Running   0          1d20h
        Copy to Clipboard Toggle word wrap
      2. 删除 rook-ceph-operator

        $ oc delete -n openshift-storage pod rook-ceph-operator-85f6494db4-sg62v
        Copy to Clipboard Toggle word wrap

        输出示例:

        pod "rook-ceph-operator-85f6494db4-sg62v" deleted
        Copy to Clipboard Toggle word wrap

        在本例中,rook-ceph-operator pod 名称为 rook-ceph-operator-85f6494db4-sg62v

      3. 验证 rook-ceph-operator pod 是否已重启。

        $ oc get -n openshift-storage pod -l app=rook-ceph-operator
        Copy to Clipboard Toggle word wrap

        输出示例:

        NAME                                  READY   STATUS    RESTARTS   AGE
        rook-ceph-operator-85f6494db4-wx9xx   1/1     Running   0          50s
        Copy to Clipboard Toggle word wrap

        在操作器重启后,创建新 OSD 可能需要几分钟时间。

  13. 删除 ocs-osd-removal 任务。

    $ oc delete -n openshift-storage job ocs-osd-removal-job
    Copy to Clipboard Toggle word wrap

    输出示例:

    job.batch "ocs-osd-removal-job" deleted
    Copy to Clipboard Toggle word wrap

验证步骤

  • 验证新 OSD 是否正在运行,并且创建了一个新的 PVC。

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd
    Copy to Clipboard Toggle word wrap

    输出示例:

    rook-ceph-osd-0-76d8fb97f9-mn8qz   1/1     Running   0          23m
    rook-ceph-osd-1-7c99657cfb-jdzvz   1/1     Running   1          25h
    rook-ceph-osd-2-5f9f6dfb5b-2mnw9   1/1     Running   0          25h
    Copy to Clipboard Toggle word wrap
    $ oc get -n openshift-storage pvc | grep localblock
    Copy to Clipboard Toggle word wrap

    输出示例:

    ocs-deviceset-localblock-0-data-0-q4q6b   Bound    local-pv-8137c873       256Gi     RWO         localblock         10m
    ocs-deviceset-localblock-1-data-0-hr2fx   Bound    local-pv-ec7f2b80       256Gi     RWO         localblock         1d20h
    ocs-deviceset-localblock-2-data-0-6xhkf   Bound    local-pv-1e31f771       256Gi     RWO         localblock         1d20h
    Copy to Clipboard Toggle word wrap
  • 登录 OpenShift Web 控制台并查看存储仪表板。

    图 5.2. 在设备替换后,OpenShift Container Platform 存储仪表板中的 OSD 状态

您可以使用新的 SCSI 磁盘替换 IBM Z 或 LinuxONE 基础架构中的操作或失败存储设备。

IBM Z 或 LinuxONE 支持 SCSI FCP 磁盘逻辑单元(SCSI 磁盘)作为来自外部磁盘存储的持久性存储设备。SCSI 磁盘可使用其 FCP 设备号、两个目标全球端口名称(WWPN1 和 WWPN2)以及逻辑单元号(LUN)来识别。如需更多信息,请参阅 https://www.ibm.com/support/knowledgecenter/SSB27U_6.4.0/com.ibm.zvm.v640.hcpa5/scsiover.html

先决条件

  • 确保数据具有弹性。

    • 在 OpenShift Web 控制台中,导航到 Storage → Overview
    • Status 卡中的 Persistent Storage 下,确认 Data Resiliency 有一个绿色勾号标记。

流程

  1. 使用以下命令列出所有磁盘:

    $ lszdev
    Copy to Clipboard Toggle word wrap

    输出示例:

    TYPE         ID
    zfcp-host    0.0.8204                                        yes  yes
    zfcp-lun     0.0.8204:0x102107630b1b5060:0x4001402900000000 yes  no    sda sg0
    zfcp-lun     0.0.8204:0x500407630c0b50a4:0x3002b03000000000  yes  yes   sdb sg1
    qeth         0.0.bdd0:0.0.bdd1:0.0.bdd2                      yes  no    encbdd0
    generic-ccw  0.0.0009                                        yes  no
    Copy to Clipboard Toggle word wrap

    ID 项中,SCSI 磁盘以 zfcp-lun 表示,格式是 <device-id>:<wwpn>:<lun-id> 。第一个磁盘用于操作系统。如果一个存储设备失败,则可以将其替换为新磁盘。

  2. 删除磁盘。

    在磁盘上运行以下命令,使用要替换的磁盘的 SCSI 磁盘标识符替换 scsi-id

    $ chzdev -d scsi-id
    Copy to Clipboard Toggle word wrap

    例如:以下命令删除设备 ID 为 0.0.8204、WWPN 0x500507630a0b50a4 以及 LUN 0x4002403000000000 的一个磁盘:

    $ chzdev -d 0.0.8204:0x500407630c0b50a4:0x3002b03000000000
    Copy to Clipboard Toggle word wrap
  3. 使用以下命令附加一个新的 SCSI 磁盘:

    $ chzdev -e 0.0.8204:0x500507630b1b50a4:0x4001302a00000000
    Copy to Clipboard Toggle word wrap
    注意

    新磁盘的设备 ID 必须与要替换的磁盘相同。新磁盘通过其 WWPN 和 LUN ID 进行标识。

  4. 列出所有 FCP 设备以验证新磁盘是否已配置。

    $ lszdev zfcp-lun
    TYPE         ID                                              ON   PERS  NAMES
    zfcp-lun     0.0.8204:0x102107630b1b5060:0x4001402900000000 yes  no    sda sg0
    zfcp-lun     0.0.8204:0x500507630b1b50a4:0x4001302a00000000  yes  yes   sdb sg1
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat