5.23.2. CSI スナップショットのバックアップおよび復元のデータ移動
OADP 1.3 Data Mover を使用して、永続ボリュームのバックアップと復元を実行できます。
5.23.2.1. CSI スナップショットを使用した永続ボリュームのバックアップ リンクのコピーリンクがクリップボードにコピーされました!
OADP Data Mover を使用して、Container Storage Interface (CSI) ボリュームのスナップショットをリモートオブジェクトストアにバックアップできます。
前提条件
-
cluster-adminロールでクラスターにアクセスできる。 - OADP Operator がインストールされている。
-
CSI プラグインを組み込み、
DataProtectionApplicationカスタムリソース (CR) でノードエージェントを有効にしている。 - 別の namespace で実行されている永続ボリュームを持つアプリケーションがある。
-
metadata.labels.velero.io/csi-volumesnapshot-class: "true"のキー/値ペアをVolumeSnapshotClassCR に追加している。
手順
次の例のように、
Backupオブジェクトの YAML ファイルを作成します。kind: Backup apiVersion: velero.io/v1 metadata: name: backup namespace: openshift-adp spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: includedNamespaces: - mysql-persistent itemOperationTimeout: 4h0m0s snapshotMoveData: true storageLocation: default ttl: 720h0m0s volumeSnapshotLocations: - dpa-sample-1 # ...ここでは、以下のようになります。
defaultVolumesToFsBackup-
fs-backupをオプトアウトするボリュームにのみ Data Mover を使用する場合、trueに設定します。ボリュームにデフォルトで Data Mover を使用する場合はfalseに設定します。 snapshotMoveData-
CSI スナップショットのリモートオブジェクトストレージへの移動を有効にするには、
trueに設定します。
マニフェストを適用します。
$ oc create -f backup.yamlスナップショットの作成が完了すると、
DataUploadCR が作成されます。注記XFS ファイルシステムを使用してボリュームをフォーマットし、ボリュームの容量が 100% になっている場合は、
no space left on deviceエラーが発生してバックアップが失敗します。以下に例を示します。Error: relabel failed /var/lib/kubelet/pods/3ac..34/volumes/ \ kubernetes.io~csi/pvc-684..12c/mount: lsetxattr /var/lib/kubelet/ \ pods/3ac..34/volumes/kubernetes.io~csi/pvc-68..2c/mount/data-xfs-103: \ no space left on deviceこのシナリオでは、バックアップが正常に完了するように、ボリュームのサイズを変更するか、
ext4などの別のファイルシステムタイプを使用することを検討してください。
検証
DataUploadCR のstatus.phaseフィールドを監視して、スナップショットデータがリモートオブジェクトストアに正常に転送されたことを確認します。使用される値は、In Progress、Completed、Failed、またはCanceledです。オブジェクトストアは、DataProtectionApplicationCR のbackupLocationsスタンザで設定されます。次のコマンドを実行して、すべての
DataUploadオブジェクトのリストを取得します。$ oc get datauploads -A出力例
NAMESPACE NAME STATUS STARTED BYTES DONE TOTAL BYTES STORAGE LOCATION AGE NODE openshift-adp backup-test-1-sw76b Completed 9m47s 108104082 108104082 dpa-sample-1 9m47s ip-10-0-150-57.us-west-2.compute.internal openshift-adp mongo-block-7dtpf Completed 14m 1073741824 1073741824 dpa-sample-1 14m ip-10-0-150-57.us-west-2.compute.internal次のコマンドを実行して、
DataUploadオブジェクトのstatus.phaseフィールドの値を確認します。$ oc get datauploads <dataupload_name> -o yaml出力例
apiVersion: velero.io/v2alpha1 kind: DataUpload metadata: name: backup-test-1-sw76b namespace: openshift-adp spec: backupStorageLocation: dpa-sample-1 csiSnapshot: snapshotClass: "" storageClass: gp3-csi volumeSnapshot: velero-mysql-fq8sl operationTimeout: 10m0s snapshotType: CSI sourceNamespace: mysql-persistent sourcePVC: mysql status: completionTimestamp: "2023-11-02T16:57:02Z" node: ip-10-0-150-57.us-west-2.compute.internal path: /host_pods/15116bac-cc01-4d9b-8ee7-609c3bef6bde/volumes/kubernetes.io~csi/pvc-eead8167-556b-461a-b3ec-441749e291c4/mount phase: Completed progress: bytesDone: 108104082 totalBytes: 108104082 snapshotID: 8da1c5febf25225f4577ada2aeb9f899 startTimestamp: "2023-11-02T16:56:22Z"ここでは、以下のようになります。
フェーズ: 完了- これは、スナップショットデータがリモートオブジェクトストアに正常に転送されたことを示しています。