第15章 ストレージデバイスの置き換え


15.1. Red Hat OpenStack Platform のインストーラーでプロビジョニングされるインフラストラクチャーで動作するストレージデバイスまたは障害のあるストレージデバイスの置き換え

以下の手順を使用して、Red Hat OpenStack Platform にデプロイされた OpenShift Data Foundation のストレージデバイスを置き換えます。この手順は、新規ボリュームで新規の永続ボリューム要求 (PVC) を作成し、古いオブジェクトストレージデバイス (OSD) を削除するのに役立ちます。

手順

  1. 置き換える必要がある OSD と、その OSD がスケジュールされている OpenShift Container Platform ノードを特定します。

    Copy to Clipboard Toggle word wrap
    $ 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>

    この例では、rook-ceph-osd-0-6d77d6c7c6-m8xj6 を置き換える必要があり、compute-2 は OSD がスケジュールされる OpenShift Container platform ノードです。

    注記

    置き換える OSD が正常である場合、Pod のステータスは Running になります。

  2. 置き換えられる OSD の OSD デプロイメントをスケールダウンします。

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

    ここで、osd_id_to_remove は Pod 名の rook-ceph-osd 接頭辞の直後にくる整数です。この例では、デプロイメント名は rook-ceph-osd-0 です。

    出力例:

    Copy to Clipboard Toggle word wrap
    deployment.extensions/rook-ceph-osd-0 scaled
  3. rook-ceph-osd Pod が停止していることを確認します。

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

    出力例:

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

    rook-ceph-osd Pod が terminating 状態にある場合は、force オプションを使用して Pod を削除します。

    Copy to Clipboard Toggle word wrap
    $ 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
  4. 障害の発生した OSD に関連付けられた永続ボリュームが失敗する場合、失敗した永続ボリュームの詳細を取得し、以下のコマンドを使用してそれらを削除します。

    Copy to Clipboard Toggle word wrap
    $ oc get pv
    $ oc delete pv <failed-pv-name>
  5. 新規 OSD を追加できるようにクラスターから古い OSD を削除します。

    1. 古い ocs-osd-removal ジョブを削除します。

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

      出力例:

      Copy to Clipboard Toggle word wrap
      job.batch "ocs-osd-removal-0" deleted
    2. openshift-storage プロジェクトを変更します。

      Copy to Clipboard Toggle word wrap
      $ oc project openshift-storage
    3. クラスターから以前の OSD を削除します。

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

      コマンドでコンマ区切りの OSD ID を追加して、複数の OSD を削除できます。(例: FAILED_OSD_IDS=0,1,2)

      3 つの OSD しかないクラスター、または OSD が削除された後にデータの 3 つのレプリカすべてを復元するのに十分なスペースがないクラスターでは、FORCE_OSD_REMOVAL 値を “true” に変更する必要があります。

      警告

      この手順により、OSD はクラスターから完全に削除されます。osd_id_to_remove の正しい値が指定されていることを確認します。

  6. ocs-osd-removal-job Pod のステータスをチェックして、OSD が正常に削除されたことを確認します。

    Completed のステータスで、OSD の削除ジョブが正常に完了したことを確認します。

    Copy to Clipboard Toggle word wrap
    # oc get pod -l job-name=ocs-osd-removal-job -n openshift-storage
  7. OSD の取り外しが完了したことを確認します。

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

    出力例:

    Copy to Clipboard Toggle word wrap
    2022-05-10 06:50:04.501511 I | cephosd: completed removal of OSD 0
    重要

    ocs-osd-removal-job が失敗し、Pod が予想される Completed の状態にない場合、追加のデバッグのために Pod ログを確認します。

    以下に例を示します。

    Copy to Clipboard Toggle word wrap
    # oc logs -l job-name=ocs-osd-removal-job -n openshift-storage --tail=-1
  8. 暗号化がインストール時に有効にされている場合は、それぞれの OpenShift Data Foundation ノードから削除された OSD デバイスから dm-crypt で管理される device-mapper マッピングを削除します。

    1. ocs-osd-removal-job Pod のログから、置き換えられた OSD の PVC 名を取得します。

      Copy to Clipboard Toggle word wrap
      $ 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"
    2. 手順 #1 で特定されたノードごとに、以下を実行します。

      1. debug Pod を作成し、ストレージノードのホストに対して chroot を作成します。

        Copy to Clipboard Toggle word wrap
        $ oc debug node/<node name>
        $ chroot /host
      2. 直前の手順で特定された PVC 名に基づいて関連するデバイス名を検索します。

        Copy to Clipboard Toggle word wrap
        sh-4.4# dmsetup ls| grep <pvc name>
        ocs-deviceset-xxx-xxx-xxx-xxx-block-dmcrypt (253:0)
      3. マップ済みデバイスを削除します。

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

        権限が十分にないため、コマンドがスタックした場合には、以下のコマンドを実行します。

        • CTRL+Z を押して上記のコマンドを終了します。
        • スタックしたプロセスの PID を検索します。

          Copy to Clipboard Toggle word wrap
          $ ps -ef | grep crypt
        • kill コマンドを使用してプロセスを終了します。

          Copy to Clipboard Toggle word wrap
          $ kill -9 <PID>
        • デバイス名が削除されていることを確認します。

          Copy to Clipboard Toggle word wrap
          $ dmsetup ls
  9. ocs-osd-removal ジョブを削除します。

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

    出力例:

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

検証手順

  1. 新しい OSD が実行されていることを確認します。

    Copy to Clipboard Toggle word wrap
    $ 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
  2. Bound 状態の新しい PVC が作成されていることを確認します。

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

    出力例:

    Copy to Clipboard Toggle word wrap
    NAME                           STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
    db-noobaa-db-0                 Bound    pvc-b44ebb5e-3c67-4000-998e-304752deb5a7   50Gi       RWO            ocs-storagecluster-ceph-rbd   6d
    ocs-deviceset-0-data-0-gwb5l   Bound    pvc-bea680cd-7278-463d-a4f6-3eb5d3d0defe   512Gi      RWO            standard                      94s
    ocs-deviceset-1-data-0-w9pjm   Bound    pvc-01aded83-6ef1-42d1-a32e-6ca0964b96d4   512Gi      RWO            standard                      6d
    ocs-deviceset-2-data-0-7bxcq   Bound    pvc-5d07cd6c-23cb-468c-89c1-72d07040e308   512Gi      RWO            standard                      6d
  3. (オプション) クラスターでクラスター全体の暗号化が有効な場合は、新規 OSD デバイスが暗号化されていることを確認します。

    1. 新規 OSD Pod が実行しているノードを特定します。

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

      これは OSD Pod の名前です。

      以下に例を示します。

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

      出力例:

      Copy to Clipboard Toggle word wrap
      NODE
      compute-1
    2. 直前の手順で特定されたノードごとに、以下を実行します。

      1. デバッグ Pod を作成し、選択したホストの chroot 環境を開きます。

        Copy to Clipboard Toggle word wrap
        $ oc debug node/<node name>
        $ chroot /host
      2. “lsblk” を実行し、ocs-deviceset 名の横にある “crypt” キーワードを確認します。

        Copy to Clipboard Toggle word wrap
        $ lsblk
  4. OpenShift Web コンソールにログインし、ストレージダッシュボードを表示します。

    図15.1 デバイスの置き換え後の OpenShift Container Platform ストレージダッシュボードの OSD ステータス

    正常な OSD を表示する RHOCP ストレージダッシュボード。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.