第5章 OpenShift Data Foundation のアンインストール


5.1. 内部接続デバイスモードの OpenShift Data Foundation のアンインストール

このセクションの手順に従って OpenShift Data Foundation をアンインストールします。

アノテーションのアンインストール

Storage Cluster のアノテーションは、アンインストールプロセスの動作を変更するために使用されます。アンインストールの動作を定義するために、ストレージクラスターに以下の 2 つのアノテーションが導入されました。

  • uninstall.ocs.openshift.io/cleanup-policy: delete
  • uninstall.ocs.openshift.io/mode: graceful

以下の表は、これらのアノテーションで使用できる各種値に関する情報を示しています。

Expand
表5.1 uninstall.ocs.openshift.io でアノテーションの説明をアンインストールする
アノテーションデフォルト動作

cleanup-policy

delete

はい

Rook は物理ドライブおよび DataDirHostPath をクリーンアップします。

cleanup-policy

Retain

いいえ

Rook は物理ドライブおよび DataDirHostPath をクリーンアップ しません

モード

graceful

はい

Rook および NooBaa は、管理者/ユーザーが Persistent Volume Claim (PVC) および Object Bucket Claim (OBC) を削除するまで、アンインストールプロセスを 一時停止 します。

モード

forced

いいえ

Rook および NooBaa は、Rook および NooBaa を使用してプロビジョニングされた PVC/OBC がそれぞれ存在している場合でもアンインストールを続行します。

アノテーションの値を編集して、クリーンアップポリシーまたはアンインストールモードを変更します。

$ oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/cleanup-policy="retain" --overwrite
Copy to Clipboard Toggle word wrap
$ oc -n openshift-storage annotate storagecluster ocs-storagecluster uninstall.ocs.openshift.io/mode="forced" --overwrite
Copy to Clipboard Toggle word wrap

両方のコマンドで予期される出力:

storagecluster.ocs.openshift.io/ocs-storagecluster annotated
Copy to Clipboard Toggle word wrap

前提条件

  • OpenShift Data Foundation クラスターの状態が正常である。リソースまたはノードの不足により一部の Pod が正常に終了されないと、アンインストールプロセスに失敗する可能性があります。クラスターの状態が正常でない場合は、OpenShift Data Foundation をアンインストールする前に Red Hat カスタマーサポートにお問い合わせください。
  • アプリケーションが OpenShift Data Foundation によって提供されるストレージクラスを使用して永続ボリューム要求 (PVC) またはオブジェクトバケット要求 (OBC) を消費していない。
  • カスタムリソース (カスタムストレージクラス、cephblockpools など) が管理者によって作成された場合、それらを消費したリソースを削除した後に管理者によって削除される必要があります。

手順

  1. OpenShift Data Foundation を使用しているボリュームスナップショットを削除します。

    1. すべての namespace からボリュームスナップショットをリスト表示します。

      $ oc get volumesnapshot --all-namespaces
      Copy to Clipboard Toggle word wrap
    2. 直前のコマンドの出力から、OpenShift Data Foundation を使用しているボリュームスナップショットを特定し、削除します。

      $ oc delete volumesnapshot <VOLUME-SNAPSHOT-NAME> -n <NAMESPACE>
      Copy to Clipboard Toggle word wrap
      <VOLUME-SNAPSHOT-NAME>
      ボリュームスナップショットの名前です。
      <NAMESPACE>
      プロジェクトの namespace です。
  2. OpenShift Data Foundation を使用している PVC および OBC を削除します。

    デフォルトのアンインストールモード (graceful) では、アンインストーラーは OpenShift Data Foundation を使用するすべての PVC および OBC が削除されるまで待機します。

    PVC を削除せずに Storage Cluster を削除する場合は、アンインストールモードのアノテーションを forced に設定し、この手順を省略できます。これを行うと、孤立した PVC および OBC がシステムに作成されます。

    1. OpenShift Data Foundation を使用して、OpenShift Container Platform モニタリングスタック PVC を削除します。

      OpenShift Data Foundation からのモニタリングスタックの削除 を参照してください。

    2. OpenShift Data Foundation を使用して、OpenShift Container Platform レジストリー PVC を削除します。

      OpenShift Data Foundation からの OpenShift Container Platform レジストリーの削除 を参照してください。

    3. OpenShift Data Foundation を使用して、OpenShift Container Platform ロギング PVC を削除します。

      OpenShift Data Foundation からのクラスターロギング Operator の削除 を参照してください。

    4. OpenShift Data Foundation を使用してプロビジョニングした PVC および OBC を削除します。

      • 以下に、OpenShift Data Foundation を使用してプロビジョニングされる PVC および OBC を特定するサンプルスクリプトを示します。このスクリプトは、OpenShift Data Foundation によって内部で使用される PVC を無視します。

        #!/bin/bash
        
        RBD_PROVISIONER="openshift-storage.rbd.csi.ceph.com"
        CEPHFS_PROVISIONER="openshift-storage.cephfs.csi.ceph.com"
        NOOBAA_PROVISIONER="openshift-storage.noobaa.io/obc"
        RGW_PROVISIONER="openshift-storage.ceph.rook.io/bucket"
        
        NOOBAA_DB_PVC="noobaa-db"
        NOOBAA_BACKINGSTORE_PVC="noobaa-default-backing-store-noobaa-pvc"
        
        # Find all the OCS StorageClasses
        OCS_STORAGECLASSES=$(oc get storageclasses | grep -e "$RBD_PROVISIONER" -e "$CEPHFS_PROVISIONER" -e "$NOOBAA_PROVISIONER" -e "$RGW_PROVISIONER" | awk '{print $1}')
        
        # List PVCs in each of the StorageClasses
        for SC in $OCS_STORAGECLASSES
        do
                echo "======================================================================"
                echo "$SC StorageClass PVCs and OBCs"
                echo "======================================================================"
                oc get pvc  --all-namespaces --no-headers 2>/dev/null | grep $SC | grep -v -e "$NOOBAA_DB_PVC" -e "$NOOBAA_BACKINGSTORE_PVC"
                oc get obc  --all-namespaces --no-headers 2>/dev/null | grep $SC
                echo
        done
        Copy to Clipboard Toggle word wrap
        注記

        クラウドプラットフォームの RGW_PROVISIONER を省略します。

      • OBC を削除します。

        $ oc delete obc <obc-name> -n <project-name>
        Copy to Clipboard Toggle word wrap
        <obc-name>
        OBC の名前です。
        <project-name>
        プロジェクトの名前です。
      • PVC を削除します。

        $ oc delete pvc <pvc-name> -n <project-name>
        Copy to Clipboard Toggle word wrap
        <pvc name>
        PVC の名前です。
        <project-name>

        プロジェクトの名前です。

        注記

        クラスターに作成されているカスタムバッキングストア、バケットクラスなどを削除していることを確認します。

  3. Storage System オブジェクトを削除し、関連付けられたリソースが削除されるのを待機します。

    $ oc delete -n openshift-storage storagesystem --all --wait=true
    Copy to Clipboard Toggle word wrap
  4. uninstall.ocs.openshift.io/cleanup-policydelete (default) に設定されている場合にクリーンアップ Pod の有無を確認し、それらのステータスが Completed していることを確認します。

    $ oc get pods -n openshift-storage | grep -i cleanup
    Copy to Clipboard Toggle word wrap

    出力例:

    NAME                                READY   STATUS      RESTARTS   AGE
    cluster-cleanup-job-<xx>        	0/1     Completed   0          8m35s
    cluster-cleanup-job-<yy>     		0/1     Completed   0          8m35s
    cluster-cleanup-job-<zz>     		0/1     Completed   0          8m35s
    Copy to Clipboard Toggle word wrap
  5. /var/lib/rook ディレクトリーが空であることを確認します。このディレクトリーは、uninstall.ocs.openshift.io/cleanup-policy アノテーションが delete (デフォルト) に設定されている場合にのみ空になります。

    $ for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host  ls -l /var/lib/rook; done
    Copy to Clipboard Toggle word wrap
  6. 暗号化がインストール時に有効にされている場合は、すべての OpenShift Data Foundation ノードの OSD デバイスから dm-crypt で管理される device-mapper マッピングを削除します。

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

      $ oc debug node/<node-name>
      Copy to Clipboard Toggle word wrap
      $ chroot /host
      Copy to Clipboard Toggle word wrap
      <node-name>
      ノードの名前です。
    2. デバイス名を取得し、OpenShift Data Foundation デバイスについてメモします。

      $ dmsetup ls
      Copy to Clipboard Toggle word wrap

      出力例:

      ocs-deviceset-0-data-0-57snx-block-dmcrypt (253:1)
      Copy to Clipboard Toggle word wrap
    3. マップ済みデバイスを削除します。

      $ cryptsetup luksClose --debug --verbose ocs-deviceset-0-data-0-57snx-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
        <PID>
        プロセス ID です。
      • デバイス名が削除されていることを確認します。

        $ dmsetup ls
        Copy to Clipboard Toggle word wrap
  7. namespace を削除し、削除が完了するまで待機します。openshift-storage がアクティブなプロジェクトである場合は、別のプロジェクトに切り替える必要があります。

    以下に例を示します。

    $ oc project default
    Copy to Clipboard Toggle word wrap
    $ oc delete project openshift-storage --wait=true --timeout=5m
    Copy to Clipboard Toggle word wrap

    以下のコマンドが NotFound エラーを返すと、プロジェクトが削除されます。

    $ oc get project openshift-storage
    Copy to Clipboard Toggle word wrap
    注記

    OpenShift Data Foundation のアンインストール時に、namespace が完全に削除されず、Terminating 状態のままである場合は、トラブルシューティングおよびアンインストール時の残りのリソースの削除 の記事に記載の手順を実行して namespace の終了をブロックしているオブジェクトを特定します。

  8. ローカルストレージデバイスを使用して OpenShift Data Foundation をデプロイした場合は、ローカルストレージ Operator 設定を削除します。ローカルストレージ Operator の設定の削除 を参照してください。
  9. ストレージノードのラベルを解除します。

    $ oc label nodes  --all cluster.ocs.openshift.io/openshift-storage-
    Copy to Clipboard Toggle word wrap
    $ oc label nodes  --all topology.rook.io/rack-
    Copy to Clipboard Toggle word wrap
  10. ノードにテイントのマークが付けられている場合に OpenShift Data Foundation テイントを削除します。

    $ oc adm taint nodes --all node.ocs.openshift.io/storage-
    Copy to Clipboard Toggle word wrap
  11. OpenShift Data Foundation を使用してプロビジョニングした永続ボリューム (PV) がすべて削除されていることを確認します。Released 状態のままの PV がある場合は、これを削除します。

    $ oc get pv
    Copy to Clipboard Toggle word wrap
    $ oc delete pv <pv-name>
    Copy to Clipboard Toggle word wrap
    pv_name
    Pod の名前です。
  12. CustomResourceDefinitions を削除します。

    $ oc delete crd backingstores.noobaa.io bucketclasses.noobaa.io cephblockpools.ceph.rook.io cephclusters.ceph.rook.io cephfilesystems.ceph.rook.io cephnfses.ceph.rook.io cephobjectstores.ceph.rook.io cephobjectstoreusers.ceph.rook.io noobaas.noobaa.io ocsinitializations.ocs.openshift.io storageclusters.ocs.openshift.io cephclients.ceph.rook.io cephobjectrealms.ceph.rook.io cephobjectzonegroups.ceph.rook.io cephobjectzones.ceph.rook.io cephrbdmirrors.ceph.rook.io storagesystems.odf.openshift.io --wait=true --timeout=5m
    Copy to Clipboard Toggle word wrap
  13. OpenShift Container Platform Web コンソールで、OpenShift Data Foundation が完全にアンインストールされていることを確認するには、以下を実行します。

    1. Storage をクリックします。
    2. OpenShift Data Foundation が Storage に表示されていないことを確認します。

5.1.1. ローカルストレージ Operator の設定の削除

ローカルストレージデバイスを使用して OpenShift Data Foundation をデプロイした場合にのみこのセクションの説明を使用します。

注記

OpenShift Data Foundation デプロイメントで localvolume リソースのみを使用する場合は、直接、手順 8 に移動します。

手順

  1. LocalVolumeSet および OpenShift Data Foundation で使用される対応する StorageClassName を特定します。

    $ oc get localvolumesets.local.storage.openshift.io -n openshift-local-storage
    Copy to Clipboard Toggle word wrap
  2. LocalVolumeSet を提供する StorageClass に変数 SC を設定します。

    $ export SC="<StorageClassName>"
    Copy to Clipboard Toggle word wrap
  3. 後にクリーンアップするデバイスをリスト表示し、これをメモします。ディスクのデバイス ID を一覧表示するには、利用可能なストレージデバイスの検索 を参照して、その手順に従います。

    出力例:

    /dev/disk/by-id/scsi-360050763808104bc28000000000000eb
    /dev/disk/by-id/scsi-360050763808104bc28000000000000ef
    /dev/disk/by-id/scsi-360050763808104bc28000000000000f3
    Copy to Clipboard Toggle word wrap
  4. LocalVolumeSet を削除します。

    $ oc delete localvolumesets.local.storage.openshift.io <name-of-volumeset> -n openshift-local-storage
    Copy to Clipboard Toggle word wrap
  5. 指定された StorageClassName のローカルストレージ PV を削除します。

    $ oc get pv | grep $SC | awk '{print $1}'| xargs oc delete pv
    Copy to Clipboard Toggle word wrap
  6. StorageClassName を削除します。

    $ oc delete sc $SC
    Copy to Clipboard Toggle word wrap
  7. LocalVolumeSet によって作成されるシンボリックリンクを削除します。

    [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done
    Copy to Clipboard Toggle word wrap
  8. LocalVolumeDiscovery を削除します。

    $ oc delete localvolumediscovery.local.storage.openshift.io/auto-discover-devices -n openshift-local-storage
    Copy to Clipboard Toggle word wrap
  9. LocalVolume リソースを削除します (ある場合)。

    以下の手順を使用して、現行または直前の OpenShift Data Foundation バージョンで PV のプロビジョニングに使用した LocalVolume リソースを削除します。また、これらのリソースがクラスターの他のテナントで使用されていないことを確認します。

    ローカルボリュームごとに、以下を実行します。

    1. LocalVolume および OpenShift Data Foundation で使用される対応する StorageClassName を特定します。

      $ oc get localvolume.local.storage.openshift.io -n openshift-local-storage
      Copy to Clipboard Toggle word wrap
    2. 変数 LV を LocalVolume の名前に設定し、変数 SC を StorageClass の名前に設定します。

      以下に例を示します。

      $ LV=local-block
      $ SC=localblock
      Copy to Clipboard Toggle word wrap
    3. 後にクリーンアップするデバイスをリスト表示し、これをメモします。

      $ oc get localvolume -n openshift-local-storage $LV -o jsonpath='{ .spec.storageClassDevices[].devicePaths[] }{"\n"}'
      Copy to Clipboard Toggle word wrap

      出力例:

      /dev/sdb
      /dev/sdc
      /dev/sdd
      /dev/sde
      Copy to Clipboard Toggle word wrap
    4. ローカルボリュームリソースを削除します。

      $ oc delete localvolume -n openshift-local-storage --wait=true $LV
      Copy to Clipboard Toggle word wrap
    5. 残りの PV および StorageClass が存在する場合はこれらを削除します。

      $ oc delete pv -l storage.openshift.com/local-volume-owner-name=${LV} --wait --timeout=5m
      $ oc delete storageclass $SC --wait --timeout=5m
      Copy to Clipboard Toggle word wrap
    6. そのリソースのストレージノードからアーティファクトをクリーンアップします。

      $ [[ ! -z $SC ]] && for i in $(oc get node -l cluster.ocs.openshift.io/openshift-storage= -o jsonpath='{ .items[*].metadata.name }'); do oc debug node/${i} -- chroot /host rm -rfv /mnt/local-storage/${SC}/; done
      Copy to Clipboard Toggle word wrap

      出力例:

      Starting pod/node-xxx-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Starting pod/node-yyy-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Starting pod/node-zzz-debug ...
      To use host binaries, run `chroot /host`
      removed '/mnt/local-storage/localblock/nvme2n1'
      removed directory '/mnt/local-storage/localblock'
      
      Removing debug pod ...
      Copy to Clipboard Toggle word wrap
  10. 手順 1 から 8 にリスト表示されている各ローカルボリュームセットまたはローカルボリュームのディスクを消去して、それらを再利用できるようにします。

    1. ストレージノードをリスト表示します。

      oc get nodes -l cluster.ocs.openshift.io/openshift-storage=
      Copy to Clipboard Toggle word wrap

      出力例:

      NAME      STATUS   ROLES    AGE     VERSION
      node-xxx  Ready    worker   4h45m  v1.18.3+6c42de8
      node-yyy  Ready    worker   4h46m  v1.18.3+6c42de8
      node-zzz  Ready    worker   4h45m  v1.18.3+6c42de8
      Copy to Clipboard Toggle word wrap
    2. プロンプトが表示されたらノードコンソールを取得し、 chroot /host コマンドを実行します。

      $ oc debug node/node-xxx
      Starting pod/node-xxx-debug …
      To use host binaries, run `chroot /host`
      Pod IP: w.x.y.z
      If you don't see a command prompt, try pressing enter.
      sh-4.2# chroot /host
      Copy to Clipboard Toggle word wrap
    3. ディスクパスを引用符内の DISKS 変数に保存します。ディスクパスのリストは、ローカルボリュームおよびローカルボリュームセットおよびボリュームのそれぞれについてステップ 3 およびステップ 8.c を参照してください。

      出力例:

      sh-4.4# DISKS="/dev/disk/by-id/scsi-360050763808104bc28000000000000eb /dev/disk/by-id/scsi-360050763808104bc28000000000000ef /dev/disk/by-id/scsi-360050763808104bc28000000000000f3 "
      or
      sh-4.2# DISKS="/dev/sdb /dev/sdc /dev/sdd /dev/sde ".
      Copy to Clipboard Toggle word wrap
    4. すべてのディスクで sgdisk --zap-all を実行します。

      sh-4.4# for disk in $DISKS; do sgdisk --zap-all $disk;done
      Copy to Clipboard Toggle word wrap

      出力例:

      Creating new GPT entries.
      GPT data structures destroyed! You may now partition the disk using fdisk or
      other utilities.
      Creating new GPT entries.
      GPT data structures destroyed! You may now partition the disk using fdisk or
      other utilities.
      Creating new GPT entries.
      GPT data structures destroyed! You may now partition the disk using fdisk or
      other utilities.
      Creating new GPT entries.
      GPT data structures destroyed! You may now partition the disk using fdisk or
      other utilities.
      Copy to Clipboard Toggle word wrap
    5. シェルを終了し、他のノードについて手順を繰り返します。

      sh-4.4# exit
      exit
      sh-4.2# exit
      exit
      Removing debug pod ...
      Copy to Clipboard Toggle word wrap
  11. openshift-local-storage namespace を削除し、削除が完了するまで待機します。openshift-local-storage namespace がアクティブなプロジェクトである場合、別のプロジェクトに切り換える必要があります。

    以下に例を示します。

    $ oc project default
    $ oc delete project openshift-local-storage --wait=true --timeout=5m
    Copy to Clipboard Toggle word wrap

    以下のコマンドが NotFound エラーを返すと、プロジェクトが削除されます。

    $ oc get project openshift-local-storage
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat