1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OADPバックアップにおけるVolumeSnapshotClassのDeletionPolicyによる挙動の違い

Posted at

はじめに

本記事では、OpenShift上のアプリケーションをOpenShift API for Data Protection (OADP) によりバックアップする際、VolumeSnapshotClassのDeletionPolicyによる挙動の違いを確認します。

目次

  1. 検証環境
  2. 前提条件
  3. DeletionPolicyがRetainの場合の挙動
  4. DeletionPolicyがDeleteの場合の挙動
  5. まとめ
  6. 参考文献

検証環境

以下のように、OpenShiftのアプリケーションを外部のオブジェクトストレージにバックアップできる環境に対して、OADPの機能検証を行います。
本検証では、クラスタを構成する全てのノードをIBM Powerサーバ (ppc64le) のLPARに構築しています。OpenShiftの永続ストレージはIBM Storage Scale、オブジェクトストレージはMinIOを使用しています。

ocp-oadp-env.png

CNSAによりOpenShiftからIBM Storage Scaleを永続ストレージとして使用するための環境構築手順はこちらの記事、OADPによりアプリケーションをオブジェクトストレージにバックアップする環境構築手順はこちらの記事をご参照ください。

前提条件

以下の作業が完了していることを想定しています。

  • OpenShiftクラスタが構築済み
  • ストレージ側のScaleクラスタが構築済み
  • ストレージ側のScaleクラスタにファイルシステムが作成済み
  • ストレージ側のScaleクラスタ内のnsd nodeにScale GUIを構成済み
  • OpenShiftクラスタにCNSAをインストール・構成済み
  • OADPがインストール・構成済み

DeletionPolicyがRetainの場合の挙動

まずは、DeletionPolicyがRetainの設定でバックアップを実行して、snapshotの状態を確認します。

bastion nodeへSSHログインします。

# ssh root@<BASTION_NODE>

VolumeSnapshotClassのDeletionPolicyを現状設定を確認します。(この例では、Retainが設定されている想定です)

# oc get vsclass
NAME                                DRIVER                      DELETIONPOLICY   AGE
ibm-spectrum-scale-snapshot-class   spectrumscale.csi.ibm.com   Retain           6d3h

動作確認用にプロジェクトを作成します。

# oc new-project test1

プロジェクト内にPVCを作成します。(この例では、data1を作成しています)

# oc apply -f pvc_data1.yaml
persistentvolumeclaim/data1 created

プロジェクト内に上記PVを使用するPodを作成します。

# oc apply -f app.yaml
deployment.apps/test1-app created

PVが正常に作成されたことを確認します。

# oc get pvc
NAME    STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
data1   Bound    pvc-2293d977-d743-4082-83e4-0c0486dfd60d   100Gi      RWO            ibm-spectrum-scale-sample   104s

動作確認用に作成したtest1というnamespaceに対して、バックアップを取得します。

cat << EOF > backup_test1.yaml
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: backup-retain-1
  namespace: openshift-adp
spec:
  storageLocation: default
  includedNamespaces:
  - test1
EOF
# oc apply -f backup_test1.yaml
backup.velero.io/backup-retain-1 created

VolumeSnapshotを確認すると、バックアップ取得後に、スナップショットが一旦現れますが、オブジェクトストレージへのバックアップが完了したタイミングで消えました。

# oc get volumesnapshot
NAME                 READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS                       SNAPSHOTCONTENT                                    CREATIONTIME   AGE
velero-data1-nzl9h   true         data1                               100Gi         ibm-spectrum-scale-snapshot-class   snapcontent-52170727-eba9-48a8-8832-09847172e405   4s             5s
# oc get volumesnapshot
No resources found in test1 namespace.
-> バックアップ完了後に自動的に削除されました

MinIOのGUIからbucketの中身を確認すると、backup-retain-1がバックアップされていることが確認できました。
minio-backup-retain-1.png

VolumeSnapshotContentsを確認すると、直前にバックアップしたものが見えました。(RESTORESIZEはPVと同じサイズでした)

# oc get volumesnapshotcontents
NAME                                               READYTOUSE   RESTORESIZE    DELETIONPOLICY   DRIVER                      VOLUMESNAPSHOTCLASS                 VOLUMESNAPSHOT       VOLUMESNAPSHOTNAMESPACE   AGE
snapcontent-52170727-eba9-48a8-8832-09847172e405   true         107374182400   Retain           spectrumscale.csi.ibm.com   ibm-spectrum-scale-snapshot-class   velero-data1-nzl9h   test1                     16s

DeletionPolicyがDeleteの場合の挙動

次に、DeletionPolicyがDeleteの設定でバックアップを実行して、snapshotの状態を確認します。

VolumeSnapshotClassのDeletionPolicyをRetainからDeleteに変更します。

# cat << EOF > snapshot-class.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: ibm-spectrum-scale-snapshot-class
  labels:
    velero.io/csi-volumesnapshot-class: "true"
driver: spectrumscale.csi.ibm.com
deletionPolicy: Delete
EOF
# oc apply -f snapshot-class.yaml
volumesnapshotclass.snapshot.storage.k8s.io/ibm-spectrum-scale-snapshot-class configured

DeletionPolicyがDeleteになったことを確認します。

# oc get vsclass
NAME                                DRIVER                      DELETIONPOLICY   AGE
ibm-spectrum-scale-snapshot-class   spectrumscale.csi.ibm.com   Delete           18s

動作確認用に作成したtest1というnamespaceに対して、バックアップを取得します。

# cat << EOF > backup_test1.yaml
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: backup-delete-1
  namespace: openshift-adp
spec:
  storageLocation: default
  includedNamespaces:
  - test1
EOF
# oc apply -f backup_test1.yaml
backup.velero.io/backup-delete-1 created

VolumeSnapshotを確認すると、バックアップ取得後に、スナップショットが一旦現れますが、オブジェクトストレージへのバックアップが完了したタイミングで消えました。(これは、DeletionPolicyがRetainの場合と同じ挙動でした)

# oc get volumesnapshot
NAME                 READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS                       SNAPSHOTCONTENT                                    CREATIONTIME   AGE
velero-data1-65wch   true         data1                               100Gi         ibm-spectrum-scale-snapshot-class   snapcontent-6f255d31-8066-4790-84ec-1056ead47e94   5s             5s
# oc get volumesnapshot
No resources found in test1 namespace.
-> バックアップ完了後に自動的に削除されました

MinIOのGUIからbucketの中身を確認すると、backup-delete-1がバックアップされていることが確認できました。
minio-backup-delete-1.png

VolumeSnapshotContentsを確認すると、snapshotは見えますが、Deleteで取得した方 (snapcontent-6f255d31-8066-4790-84ec-1056ead47e94) は、Retainで取得した方とは異なり、RESTORESIZEが0となっていて、namespaceはtest1ではなくなっていました。

# oc get volumesnapshotcontents
NAME                                               READYTOUSE   RESTORESIZE    DELETIONPOLICY   DRIVER                      VOLUMESNAPSHOTCLASS                 VOLUMESNAPSHOT                              VOLUMESNAPSHOTNAMESPACE                   AGE
snapcontent-52170727-eba9-48a8-8832-09847172e405   true         107374182400   Retain           spectrumscale.csi.ibm.com   ibm-spectrum-scale-snapshot-class   velero-data1-nzl9h                          test1                                     4m12s
snapcontent-6f255d31-8066-4790-84ec-1056ead47e94   true         0              Retain           spectrumscale.csi.ibm.com   ibm-spectrum-scale-snapshot-class   name-694ed118-611b-49e4-9341-c62fe7d78f4d   ns-694ed118-611b-49e4-9341-c62fe7d78f4d   29s

まとめ

OpenShift上のアプリケーションをOADPによりバックアップする際に、VolumeSnapshotClassのDeletionPolicyによる挙動の違いを確認しました。DeletionPolicyに依らず、VolumeSnapshotはバックアップ完了とともに自動的に削除されましたが、VolumeSnapshotContentsは保持される・されないという違いが見られました。

参考文献

1
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?