6.4. CSI ボリュームグループスナップショット
このドキュメントでは、OpenShift Container Platform でのデータ損失を防ぐために、サポートされている Container Storage Interface (CSI) ドライバーでボリュームグループスナップショットを使用する方法を説明します。永続ボリューム をある程度理解していることが推奨されます。
CSI ボリュームグループスナップショットは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
このテクノロジープレビュー機能を使用するには、フィーチャーゲートを使用して有効にする 必要があります。
6.4.1. CSI ボリュームグループスナップショットの概要 リンクのコピーリンクがクリップボードにコピーされました!
スナップショット は、特定の時点におけるクラスター内のストレージボリュームの状態を表します。ボリュームスナップショットは新規ボリュームのプロビジョニングに使用できます。
ボリュームグループスナップショット は、ラベルセレクターを使用して、スナップショット用に複数の永続ボリューム要求をグループ化します。ボリュームグループスナップショットは、同じ時点で取得された複数のボリュームからのコピーを表します。これは、複数のボリュームが含まれるアプリケーションに役立ちます。
Container Storage Interface (CSI) のボリュームグループスナップショットは、CSI ドライバーによってサポートされている必要があります。OpenShift Data Foundation は、ボリュームグループスナップショットをサポートしています。
ボリュームグループスナップショットは、スナップショットを管理するための 3 つの新しい API オブジェクトを提供します。
VolumeGroupSnapshot
- 複数の永続ボリューム要求のボリュームグループスナップショットの作成を要求します。ボリュームグループスナップショットが作成されたタイムスタンプや、使用できる状態かどうかなど、ボリュームグループスナップショットの操作に関する情報を含んでいます。
VolumeGroupSnapshotContent
-
動的に作成された volumeGroupSnapshot のスナップショットコントローラーによって作成されます。ボリュームグループスナップショット ID を含むボリュームグループスナップショットに関する情報を含んでいます。このオブジェクトは、クラスターにプロビジョニングされたリソース (グループスナップショット) を表します。
VolumeGroupSnapshotContent
オブジェクトは、1 対 1 のマッピングを使用して作成されたボリュームグループスナップショットにバインドされます。 VolumeGroupSnapshotClass
- ドライバー情報、削除ポリシーなど、ボリュームグループスナップショットを作成する方法を記述するために、クラスター管理者によって作成されます。
これら 3 種類の API は、CustomResourceDefinitions
(CRD) として定義されます。CSI ドライバーがボリュームグループスナップショットをサポートできるように、これらの CRD を OpenShift Container Platform クラスターにインストールする必要があります。
6.4.2. CSI ボリュームグループスナップショットの制限 リンクのコピーリンクがクリップボードにコピーされました!
ボリュームグループスナップショットには次の制限があります。
- 既存の永続ボリューム要求 (PVC) を、スナップショットによって表される以前の状態に戻すことはできません。サポートされているのは、スナップショットからの新しいボリュームのプロビジョニングだけです。
- ストレージシステムによって提供されるもの以外のアプリケーションの整合性 (クラッシュ整合性など) の保証は提供されません。アプリケーションの整合性の詳細は、Quiesce and Unquiesce Hooks を参照してください。
6.4.3. ボリュームグループスナップショットクラスの作成 リンクのコピーリンクがクリップボードにコピーされました!
ボリュームグループスナップショットを作成するには、クラスター管理者が VolumeGroupSnapshotClass
を作成する必要があります。
このオブジェクトは、ドライバー情報、削除ポリシーなど、ボリュームグループスナップショットを作成する方法を記述したものです。
前提条件
- 実行中の OpenShift Container Platform クラスターに管理者権限でログインしている。
- フィーチャーゲートを使用してこの機能を有効にした。フィーチャーゲートの使用方法は、フィーチャーゲートを使用した機能セットの有効化 を参照してください。
手順
VolumeGroupSnapshotClass
を作成するには、次の手順を実行します。
次のサンプルファイルを使用して、
VolumeGroupSnapshotClass
YAML ファイルを作成します。ボリュームグループスナップショットクラスの YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、'VolumeGroupSnapshotClass' オブジェクトを作成します。
oc create -f <volume-group-snapshot-class-filename>.yaml
$ oc create -f <volume-group-snapshot-class-filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4.4. ボリュームグループスナップショットの作成 リンクのコピーリンクがクリップボードにコピーされました!
VolumeGroupSnapshot
オブジェクトを作成すると、OpenShift Container Platform によってボリュームグループスナップショットが作成されます。
前提条件
- 実行中の OpenShift Container Platform クラスターにログインしている。
- フィーチャーゲートを使用してこの機能を有効にした。フィーチャーゲートの使用方法は、フィーチャーゲートを使用した機能セットの有効化 を参照してください。
-
スナップショット用にグループ化する永続ボリューム要求 (PVC) が、
VolumeGroupSnapshot
オブジェクトをサポートする CSI ドライバーを使用して作成されている。 - ストレージバックエンドをプロビジョニングするストレージクラス。
-
管理者が
VolumeGroupSnapshotClass
オブジェクトを作成した。
手順
ボリュームグループスナップショットを作成するには、次の手順を実行します。
ボリュームグループスナップショットに含める PVC を検索 (または作成) します。
oc get pvc
$ oc get pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンド出力例
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE pvc-0 Bound pvc-a42d7ea2-e3df-11ed-b5ea-0242ac120002 1Gi RWO 48s pvc-1 Bound pvc-a42d81b8-e3df-11ed-b5ea-0242ac120002 1Gi RWO 48S
NAME STATUS VOLUME CAPACITY ACCESSMODES AGE pvc-0 Bound pvc-a42d7ea2-e3df-11ed-b5ea-0242ac120002 1Gi RWO 48s pvc-1 Bound pvc-a42d81b8-e3df-11ed-b5ea-0242ac120002 1Gi RWO 48S
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では 2 つの PVC を使用します。
PVC にラベルを付けて、スナップショットグループに属するようにします。
次のコマンドを実行して、pvc-0 という PVC にラベルを付けます。
oc label pvc pvc-0 group=myGroup
$ oc label pvc pvc-0 group=myGroup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
persistentvolumeclaim/pvc-0 labeled
persistentvolumeclaim/pvc-0 labeled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、pvc-1 という PVC にラベルを付けます。
oc label pvc pvc-1 group=myGroup
$ oc label pvc pvc-1 group=myGroup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
persistentvolumeclaim/pvc-1 labeled
persistentvolumeclaim/pvc-1 labeled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、PVC "pvc-0" と "pvc-1" がグループ "myGroup" に属するようにラベルを付けます。
ボリュームグループスナップショットを指定する
VolumeGroupSnapshot
オブジェクトを作成します。次のサンプルファイルを使用して、
VolumeGroupSnapshot
オブジェクトの YAML ファイルを作成します。VolumeGroupSnapshot の YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
VolumeGroupSnapshot
オブジェクトを作成します。oc create -f <volume-group-snapshot-filename>.yaml
$ oc create -f <volume-group-snapshot-filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
結果
個別のボリュームスナップショットが、ボリュームグループスナップショットの一部として指定した PVC の数に応じて作成されます。
これらの個別のボリュームスナップショットには、<hash of VolumeGroupSnaphotContentUUID+volumeHandle> という形式で名前が付けられます。
個別のボリュームのスナップショットの例
上記の例では、ボリュームグループスナップショットの一部として 2 つの個別のボリュームスナップショットが作成されます。
snapshot-4dc1c53a29538b36e85003503a4bcac5dbde4cff59e81f1e3bb80b6c18c3fd03 snapshot-fbfe59eff570171765df664280910c3bf1a4d56e233a5364cd8cb0152a35965b
snapshot-4dc1c53a29538b36e85003503a4bcac5dbde4cff59e81f1e3bb80b6c18c3fd03
snapshot-fbfe59eff570171765df664280910c3bf1a4d56e233a5364cd8cb0152a35965b
6.4.5. ボリュームグループスナップショットの復元 リンクのコピーリンクがクリップボードにコピーされました!
VolumeGroupSnapshot
カスタムリソース定義 (CRD) の内容を使用して、既存のボリュームを以前の状態に復元できます。
既存のボリュームを復元するには、VolumeGroupSnapshot
の一部である VolumeSnapshot
オブジェクトから新しい永続ボリューム要求 (PVC) を作成することを要求します。これにより、指定したスナップショットからのデータが入力された新しいボリュームのプロビジョニングがトリガーされます。ボリュームグループスナップショットの一部であるすべてのスナップショットからすべてのボリュームを作成するまで、このプロセスを繰り返します。
前提条件
- 実行中の OpenShift Container Platform クラスターにログインしている。
- ボリュームグループスナップショットをサポートする Container Storage Interface (CSI) ドライバーを使用して PVC を作成した。
- ストレージバックエンドをプロビジョニングするストレージクラス。
- ボリュームグループスナップショットが作成され、使用できる状態である。
手順
ボリュームグループスナップショットから既存のボリュームを以前の状態に復元するには、次の手順を実行します。
次の例に示すように、PVC のボリュームグループスナップショットから
VolumeSnapshot
データソースを指定します。PVC 復元 YAML ファイルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して PVC を作成します。
oc create -f <pvc-restore-filename>.yaml
$ oc create -f <pvc-restore-filename>.yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 前のステップで指定した PVC 復元ファイルの名前。
次のコマンドを実行して、復元された PVC が作成されたことを確認します。
oc get pvc
$ oc get pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最初のステップで指定した名前の新しい PVC が表示されます。
- 必要に応じて、ボリュームグループスナップショットの一部であるすべてのスナップショットからすべてのボリュームを作成するまで、この手順を繰り返します。