16.4.6.7. Restore CR に LVM Storage 関連のフィールドがない
- 問題
LVM ストレージはアプリケーションに必要なリソースを復元しますが、アップグレード後に永続ボリュームの内容は保持しません。
ピボット前に次のコマンドを実行して、アプリケーションの永続ボリュームをリスト表示します。
$ oc get pv,pvc,logicalvolumes.topolvm.io -A以下は、ピボット処理前の出力です。
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/pvc-1234 1Gi RWO Retain Bound default/pvc-db lvms-vg1 4h45m NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE default persistentvolumeclaim/pvc-db Bound pvc-1234 1Gi RWO lvms-vg1 4h45m NAMESPACE NAME AGE logicalvolume.topolvm.io/pvc-1234 4h45mピボット後に次のコマンドを実行して、アプリケーションの永続ボリュームをリスト表示します。
$ oc get pv,pvc,logicalvolumes.topolvm.io -Aピボット後の出力は以下のとおりです。
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE persistentvolume/pvc-1234 1Gi RWO Delete Bound default/pvc-db lvms-vg1 19s NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE default persistentvolumeclaim/pvc-db Bound pvc-1234 1Gi RWO lvms-vg1 19s NAMESPACE NAME AGE logicalvolume.topolvm.io/pvc-1234 18s
- 解決方法
この問題は、
logicalvolumeステータスがRestoreCR に保存されないことが原因となっています。このステータスは重要です。なぜなら、Velero はピボット後に保持する必要のあるボリュームを参照するために、このステータスを必要とするからです。次の例に示すように、アプリケーションRestoreCR には以下のフィールドを含める必要があります。apiVersion: velero.io/v1 kind: Restore metadata: name: sample-vote-app namespace: openshift-adp labels: velero.io/storage-location: default annotations: lca.openshift.io/apply-wave: "3" spec: backupName: sample-vote-app restorePVs: <restore_pvs> restoreStatus: includedResources: - logicalvolumesここでは、以下のようになります。
<restore_pvs>-
アプリケーションの永続ボリュームを保持するには、
restorePVsをtrueに設定する必要があります。 restoreStatus- アプリケーションの永続ボリュームを保持するには、このフィールドを以下のように設定する必要があります。