5.2. IBM Power에서 운영 또는 실패한 스토리지 장치 교체


IBM Power의 로컬 스토리지 장치를 사용하여 배포된 OpenShift Data Foundation의 OSD(오브젝트 스토리지 장치)를 교체할 수 있습니다.

참고

하나 이상의 기본 스토리지 장치를 교체해야 할 수 있습니다.

사전 요구 사항

  • 교체 장치는 교체되는 장치와 유사한 인프라 및 리소스로 구성하는 것이 좋습니다.
  • 데이터의 복원력이 있는지 확인합니다.

    • OpenShift 웹 콘솔에서 스토리지 데이터 Foundation 을 클릭합니다.
    • Storage Systems 탭을 클릭한 다음 ocs-storagecluster 를 클릭합니다.
    • 블록 및 파일 대시보드의 상태 카드개요 탭에서 데이터 복원에 녹색 눈금이 있는지 확인합니다.

프로세스

  1. 교체해야 하는 OSD와 OSD가 예약된 OpenShift Container Platform 노드를 식별합니다.

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd -o wide

    출력 예:

    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>

    이 예에서 rook-ceph-osd-0-86bf8cdc8-4nb5t 를 교체해야 하며 worker-0 은 OSD가 예약된 Cryostat 노드입니다.

    참고

    교체할 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

    여기서 osd_id_to_removerook-ceph-osd 접두사 직후 포드 이름의 정수입니다. 이 예에서 배포 이름은 rook-ceph-osd-0 입니다.

    출력 예:

    deployment.extensions/rook-ceph-osd-0 scaled
  3. rook-ceph-osd Pod가 종료되었는지 확인합니다.

    $ oc get -n openshift-storage pods -l ceph-osd-id=${osd_id_to_remove}

    출력 예:

    No resources found in openshift-storage namespace.
    중요

    rook-ceph-osd Pod가 몇 분 이상 종료 상태인 경우 force 옵션을 사용하여 Pod를 삭제합니다.

    $ oc delete -n openshift-storage pod rook-ceph-osd-0-86bf8cdc8-4nb5t --grace-period=0 --force

    출력 예:

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

      출력 예:

      ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-64xjl
          ceph.rook.io/pvc: ocs-deviceset-localblock-0-data-0-64xjl

      이 예에서 PVC(영구 볼륨 클레임) 이름은 ocs-deviceset-localblock-0-data-0-64xjl 입니다.

    2. PVC와 연결된 PV(영구 볼륨)를 식별합니다.

      $ oc get -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix>

      여기서 x, y, pvc-suffix 는 이전 단계에서 식별된 DeviceSet 의 값입니다.

      출력 예:

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

      이 예에서 연결된 PV는 local-pv-8137c873 입니다.

    3. 교체할 장치의 이름을 확인합니다.

      $ oc get pv local-pv-<pv-suffix> -o yaml | grep path

      여기서 pv-suffix 는 이전 단계에서 식별된 PV 이름의 값입니다.

      출력 예:

      path: /mnt/local-storage/localblock/vdc

      이 예에서 장치 이름은 Cryostat 입니다.

    4. 교체할 OSD와 관련된 준비 Pod 를 식별합니다.

      $ oc describe -n openshift-storage pvc ocs-deviceset-<x>-<y>-<pvc-suffix> | grep Used

      여기서 x, y, pvc-suffix 는 이전 단계에서 식별된 DeviceSet 의 값입니다.

      출력 예:

      Used By:    rook-ceph-osd-prepare-ocs-deviceset-localblock-0-data-0-64knzkc

      이 예에서 prepare-pod 이름은 rook-ceph-osd-prepare-ocs-deviceset-localblock-0-data-0-64kkc 입니다.

    5. 이전 ocs-osd-removal 작업을 삭제합니다.

      $ oc delete -n openshift-storage job ocs-osd-removal-job

      출력 예:

      job.batch "ocs-osd-removal-job" deleted
      참고

      다음 단계로 이동하기 전에 위의 명령은 Completed 상태에 도달해야 합니다. 이 작업은 10분 이상 걸릴 수 있습니다.

    6. openshift-storage 프로젝트로 변경합니다.

      $ oc project openshift-storage
    7. 클러스터에서 이전 OSD를 제거합니다.

      $ oc process -n openshift-storage ocs-osd-removal -p FAILED_OSD_IDS=${osd_id_to_remove} FORCE_OSD_REMOVAL=false |oc create -n openshift-storage -f -

      OSD가 3개만 있는 클러스터의 FORCE_OSD_REMOVAL 값을 "true"로 변경해야 합니다. OSD를 제거한 후 데이터의 세 개의 복제본을 모두 복원할 수 있는 공간이 부족한 클러스터입니다.

      주의

      이 단계로 OSD가 클러스터에서 완전히 제거됩니다. osd_id_to_remove 의 올바른 값이 제공되었는지 확인합니다.

  5. ocs-osd-removal-job Pod의 상태를 확인하여 OSD가 성공적으로 제거되었는지 확인합니다.

    상태가 Completed 이면 OSD 제거 작업이 성공했는지 확인합니다.

    $ oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
  6. OSD 제거가 완료되었는지 확인합니다.

    $ oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1 | egrep -i 'completed removal'

    출력 예:

    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    중요

    ocs-osd-removal-job 이 실패하고 Pod가 예상 Completed 상태에 없는 경우 Pod 로그를 확인하여 추가 디버깅을 확인합니다.

    예를 들면 다음과 같습니다.

    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
  7. 설치 시 암호화를 활성화한 경우 해당 OpenShift Data Foundation 노드에서 제거된 OSD에서 dm -crypt 관리 장치-매퍼 매핑을 제거합니다.

    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’

      출력 예:

      2021-05-12 14:31:34.666000 I | cephosd: removing the OSD PVC "ocs-deviceset-xxxx-xxx-xxx-xxx"
    2. 이전에 식별된 각 노드에 대해 다음을 수행합니다.

      1. 스토리지 노드의 호스트에 디버그 Pod 및 chroot 를 생성합니다.

        $ oc debug node/<node name>
        <node name>

        노드의 이름입니다.

        $ chroot /host
      2. 이전 단계에서 식별된 PVC 이름을 기반으로 관련 장치 이름을 찾습니다.

        $ dmsetup ls| grep <pvc name>
        <pvc name>

        PVC의 이름입니다.

        출력 예:

        ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
      3. 매핑된 장치를 제거합니다.

        $ cryptsetup luksClose --debug --verbose ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt
        중요

        권한이 부족하여 위의 명령이 중단되면 다음 명령을 실행합니다.

        • Ctrl+Z 를 눌러 위 명령을 종료합니다.
        • 중단된 프로세스의 PID를 찾습니다.

          $ ps -ef | grep crypt
        • kill 명령을 사용하여 프로세스를 종료합니다.

          $ kill -9 <PID>
          <PID>
          프로세스 ID입니다.
        • 장치 이름이 제거되었는지 확인합니다.

          $ dmsetup ls
  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
  9. PV를 삭제합니다.

    $ oc delete pv <pv-name>
    <pv-name>
    PV의 이름입니다.
  10. 이전 장치를 교체하고 새 장치를 사용하여 새 OpenShift Container Platform PV를 생성합니다.

    1. 교체할 장치를 사용하여 OpenShift Container Platform 노드에 로그인합니다. 이 예에서 OpenShift Container Platform 노드는 worker-0 입니다.

      $ oc debug node/worker-0

      출력 예:

      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
    2. 이전에 식별된 장치 이름 Cryostat 를 사용하여 대체할 /dev/disk 를 기록합니다.

      # ls -alh /mnt/local-storage/localblock

      출력 예:

      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
    3. LocalVolume CR의 이름을 찾아 대체할 장치 /dev/disk 를 제거하거나 주석 처리합니다.

      $ oc get -n openshift-local-storage localvolume

      출력 예:

      NAME          AGE
      localblock   25h
      # oc edit -n openshift-local-storage localvolume localblock

      출력 예:

      [...]
          storageClassDevices:
          - devicePaths:
         #   - /dev/vdc
            storageClassName: localblock
            volumeMode: Block
      [...]

      CR을 편집한 후 변경 사항을 저장해야 합니다.

  11. 교체할 장치를 사용하여 OpenShift Container Platform 노드에 로그인하고 이전 심볼릭 링크를 삭제합니다.

    $ oc debug node/worker-0

    출력 예:

    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
    1. 교체할 장치 이름의 이전 심볼릭 링크를 식별합니다. 이 예에서 장치 이름은 Cryostat 입니다.

      # ls -alh /mnt/local-storage/localblock

      출력 예:

      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
    2. 심볼릭 링크를 제거합니다.

      # rm /mnt/local-storage/localblock/vdc
    3. 심볼릭 링크가 제거되었는지 확인합니다.

      # ls -alh /mnt/local-storage/localblock

      출력 예:

      total 0
      drwxr-xr-x. 2 root root 6 Nov 18 17:11 .
      drwxr-xr-x. 3 root root 24 Nov 18 15:23 ..
  12. 이전 장치를 새 장치로 교체합니다.
  13. 올바른 OpenShift Cotainer Platform 노드에 다시 로그인하고 새 드라이브의 장치 이름을 확인합니다. 동일한 장치를 재설정하지 않는 한 장치 이름을 변경해야 합니다.

    # lsblk

    출력 예:

    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

    이 예에서 새 장치 이름은 vdd 입니다.

  14. /dev/disk 를 사용할 수 있게 되면 LocalVolume CR에 새 디스크 항목을 추가할 수 있습니다.

    1. LocalVolume CR을 편집하고 새 /dev/disk 를 추가합니다.

      이 예에서 새 장치는 /dev/vdd 입니다.

      # oc edit -n openshift-local-storage localvolume localblock

      출력 예:

      [...]
          storageClassDevices:
          - devicePaths:
          #  - /dev/vdc
            - /dev/vdd
            storageClassName: localblock
            volumeMode: Block
      [...]

      CR을 편집한 후 변경 사항을 저장해야 합니다.

  15. 사용 가능한 상태에 새 PV가 있는지, 올바른 크기의 새 PV가 있는지 확인합니다.

    $ oc get pv | grep 256Gi

    출력 예:

    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
  16. 새 장치에 대한 새 OSD를 만듭니다.

    새 OSD를 배포합니다. Operator 조정을 강제 적용하려면 rook-ceph-operator 를 다시 시작해야 합니다.

    1. rook-ceph-operator 의 이름을 확인합니다.

      $ oc get -n openshift-storage pod -l app=rook-ceph-operator

      출력 예:

      NAME                                  READY   STATUS    RESTARTS   AGE
      rook-ceph-operator-85f6494db4-sg62v   1/1     Running   0          1d20h
    2. rook-ceph-operator 를 삭제합니다.

      $ oc delete -n openshift-storage pod rook-ceph-operator-85f6494db4-sg62v

      출력 예:

      pod "rook-ceph-operator-85f6494db4-sg62v" deleted

      이 예에서 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

      출력 예:

      NAME                                  READY   STATUS    RESTARTS   AGE
      rook-ceph-operator-85f6494db4-wx9xx   1/1     Running   0          50s

      Operator를 다시 시작한 후 새 OSD를 생성하는 데 몇 분이 걸릴 수 있습니다.

  17. ocs-osd-removal 작업을 삭제합니다.

    $ oc delete -n openshift-storage job ocs-osd-removal-job

    출력 예:

    job.batch "ocs-osd-removal-job" deleted
참고

데이터 암호화와 함께 외부 키 관리 시스템(KMS)을 사용하는 경우 이전 OSD 암호화 키를 Vault 서버에서 제거할 수 있습니다.

검증 단계

  1. 새 OSD가 실행 중인지 확인합니다.

    $ oc get -n openshift-storage pods -l app=rook-ceph-osd

    출력 예:

    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
  2. 새 PVC가 생성되었는지 확인합니다.

    $ oc get -n openshift-storage pvc | grep localblock

    출력 예:

    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
  3. 선택 사항: 클러스터에서 클러스터 전체 암호화가 활성화된 경우 새 OSD 장치가 암호화되었는지 확인합니다.

    1. 새 OSD pod가 실행 중인 노드를 식별합니다.

      $ oc get -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/<OSD-pod-name>
      <OSD-pod-name>

      OSD 포드의 이름입니다.

      예를 들면 다음과 같습니다.

      $ oc get -n openshift-storage -o=custom-columns=NODE:.spec.nodeName pod/rook-ceph-osd-0-544db49d7f-qrgqm

      출력 예:

      NODE
      compute-1
    2. 이전에 식별된 각 노드에 대해 다음을 수행합니다.

      1. 디버그 Pod를 생성하고 선택한 호스트에 대해 chroot 환경을 엽니다.

        $ oc debug node/<node name>
        <node name>

        노드의 이름입니다.

        $ chroot /host
      2. ocs-deviceset 이름 옆에 crypt 키워드가 있는지 확인합니다.

        $ lsblk
  4. OpenShift 웹 콘솔에 로그인하고 Storage 섹션의 OpenShift Data Foundation 대시보드에서 상태 카드를 확인합니다.
참고

복구 중인 데이터 볼륨에 따라 전체 데이터 복구 시간이 더 오래 걸릴 수 있습니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동