4.8. OADP Data Mover
4.8.1. OADP Data Mover 介绍
OADP Data Mover 允许您在故障、意外删除或集群崩溃时从存储中恢复有状态的应用程序。
OADP 1.1 Data Mover 是一个技术预览功能。
OADP 1.2 Data Mover 显著提高了特性和性能,但它现在还仅是一个技术预览功能。
OADP Data Mover 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
- 您可以使用 OADP Data Mover 将 Container Storage Interface (CSI) 卷快照备份到远程对象存储。对于 CSI 快照,请参阅使用数据 Mover。
- 您可以使用 OADP 1.2 Data Mover,为使用 CephFS、CephRBD 或这两者的集群备份和恢复应用程序数据。请参阅使用 OADP 1.2 数据与 Ceph 存储。
- 如果您使用 OADP 1.1 Data Mover,则必须在执行备份后执行数据清理。请参阅使用 OADP 1.1 数据 Mover 备份后清除。
迁移后 hook 可能无法与 OADP 1.3 Data Mover 正常工作。
OADP 1.1 和 OADP 1.2 Data Movers 使用同步进程来备份和恢复应用程序数据。由于进程是同步的,因此用户只能在相关 pod 的持久性卷(PV)由 Data Mover 的持久性卷声明(PVC)发布后执行。
但是,OADP 1.3 Data Movers 使用异步过程。因此,在 Data Mover 的 PVC 发布相关的 PV 前,可能会调用后一个 post-restore hook。如果发生这种情况,pod 会一直处于 Pending
状态,且无法运行 hook。hook 尝试可能会在 pod 发布前超时,从而导致 PartiallyFailed
恢复操作。
4.8.1.1. OADP Data Mover 先决条件
- 您有一个有状态应用程序在单独的命名空间中运行。
- 已使用 Operator Lifecycle Manager (OLM) 安装 OADP Operator。
-
您已创建了适当的
VolumeSnapshotClass
和StorageClass
。 - 已使用 OLM 安装 VolSync operator。
4.8.2. 对 CSI 快照使用 Data Mover
OADP Data Mover 可让客户将 Container Storage Interface (CSI) 卷快照备份到远程对象存储。启用 Data Mover 时,如果出现故障、意外删除或集群崩溃,您可以使用从对象存储中提取的 CSI 卷快照来恢复有状态的应用程序。
Data Mover 解决方案使用 VolSync 的 Restic 选项。
数据 Mover 支持 CSI 卷快照的备份和恢复。
在 OADP 1.2 Data Mover 中,VolumeSnapshotBackups
(VSBs) 和 VolumeSnapshotRestores
(VSR) 使用 VolumeSnapshotMover (VSM) 排队。通过指定 VSB 和 VSR 同时处于 InProgress
的并发数量,可以提高 VSM 的性能。在所有异步插件操作都完成后,备份将标记为完成。
OADP 1.1 Data Mover 是一个技术预览功能。
OADP 1.2 Data Mover 显著提高了特性和性能,但它现在还仅是一个技术预览功能。
OADP Data Mover 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
红帽建议使用 OADP 1.2 Data Mover 来备份和恢复 ODF CephFS 卷,升级或安装 OpenShift Container Platform 版本 4.12 或更高版本以提高性能。OADP Data Mover 可以利用 OpenShift Container Platform 版本 4.12 或更高版本中的 CephFS shouldow 卷,基于我们的测试,这可以提高备份时间的性能。
先决条件
-
已确认
StorageClass
和VolumeSnapshotClass
自定义资源 (CR) 支持 CSI。 您已确认只有一个
VolumeSnapshotClass
CR 具有注解snapshot.storage.kubernetes.io/is-default-class: "true"
。注意在 OpenShift Container Platform 版本 4.12 或更高版本中,验证这是唯一的默认
VolumeSnapshotClass
。-
您已确认
VolumeSnapshotClass
CR 的deletionPolicy
被设置为Retain
。 -
您已确认只有一个
StorageClass
CR 具有注解storageclass.kubernetes.io/is-default-class: "true"
。 -
您已在
VolumeSnapshotClass
CR 中包含标签velero.io/csi-volumesnapshot-class: "true"
。 您已确认
OADP 命名空间
具有注解oc annotate --overwrite namespace/openshift-adp volsync.backube/privileged-movers="true"
。注意在 OADP 1.1 中,上述设置是必须的。
在 OADP 1.2 中,多数情况下不需要
privileged-movers
设置。恢复容器权限应该足以满足 Volsync 副本。在某些用户场景中,可能会有权限错误,privileged-mover
=true
设置应被解析。已使用 Operator Lifecycle Manager (OLM) 安装 VolSync Operator。
注意使用 OADP Data Mover 需要 VolSync Operator。
- 已使用 OLM 安装 OADP operator。
流程
通过创建一个
.yaml
文件来配置 Restic secret,如下所示:apiVersion: v1 kind: Secret metadata: name: <secret_name> namespace: openshift-adp type: Opaque stringData: RESTIC_PASSWORD: <secure_restic_password>
注意默认情况下,Operator 会查找名为
dm-credential
的 secret。如果您使用其他名称,您需要使用dpa.spec.features.dataMover.credentialName
通过 Data Protection Application (DPA) CR 指定名称。创建类似以下示例的 DPA CR。默认插件包括 CSI。
数据保护应用程序 (DPA) CR 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: velero-sample namespace: openshift-adp spec: backupLocations: - velero: config: profile: default region: us-east-1 credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: <bucket-prefix> provider: aws configuration: restic: enable: <true_or_false> velero: itemOperationSyncFrequency: "10s" defaultPlugins: - openshift - aws - csi - vsm 1 features: dataMover: credentialName: restic-secret enable: true maxConcurrentBackupVolumes: "3" 2 maxConcurrentRestoreVolumes: "3" 3 pruneInterval: "14" 4 volumeOptions: 5 sourceVolumeOptions: accessMode: ReadOnlyMany cacheAccessMode: ReadWriteOnce cacheCapacity: 2Gi destinationVolumeOptions: storageClass: other-storageclass-name cacheAccessMode: ReadWriteMany snapshotLocations: - velero: config: profile: default region: us-west-2 provider: aws
OADP Operator 安装两个自定义资源定义 (CRD)、
VolumeSnapshotBackup
和VolumeSnapshotRestore
。VolumeSnapshotBackup
CRD 示例apiVersion: datamover.oadp.openshift.io/v1alpha1 kind: VolumeSnapshotBackup metadata: name: <vsb_name> namespace: <namespace_name> 1 spec: volumeSnapshotContent: name: <snapcontent_name> protectedNamespace: <adp_namespace> 2 resticSecretRef: name: <restic_secret_name>
VolumeSnapshotRestore
CRD 示例apiVersion: datamover.oadp.openshift.io/v1alpha1 kind: VolumeSnapshotRestore metadata: name: <vsr_name> namespace: <namespace_name> 1 spec: protectedNamespace: <protected_ns> 2 resticSecretRef: name: <restic_secret_name> volumeSnapshotMoverBackupRef: sourcePVCData: name: <source_pvc_name> size: <source_pvc_size> resticrepository: <your_restic_repo> volumeSnapshotClassName: <vsclass_name>
您可以执行以下步骤备份卷快照:
创建备份 CR:
apiVersion: velero.io/v1 kind: Backup metadata: name: <backup_name> namespace: <protected_ns> 1 spec: includedNamespaces: - <app_ns> 2 storageLocation: velero-sample-1
等待 10 分钟,并输入以下命令来检查
VolumeSnapshotBackup
CR 状态是否为Completed
:$ oc get vsb -n <app_ns>
$ oc get vsb <vsb_name> -n <app_ns> -o jsonpath="{.status.phase}"
在对象存储中创建快照是在 DPA 中配置。
注意如果
VolumeSnapshotBackup
CR 的状态变为Failed
,请参阅 Velero 日志进行故障排除。
您可以执行以下步骤来恢复卷快照:
-
删除由 Velero CSI 插件创建的 application 命名空间和
VolumeSnapshotContent
。 创建
Restore
CR,并将restorePV
设置为true
。Restore
CR 示例apiVersion: velero.io/v1 kind: Restore metadata: name: <restore_name> namespace: <protected_ns> spec: backupName: <previous_backup_name> restorePVs: true
等待 10 分钟,并通过输入以下命令来检查
VolumeSnapshotRestore
CR 状态是否为Completed
:$ oc get vsr -n <app_ns>
$ oc get vsr <vsr_name> -n <app_ns> -o jsonpath="{.status.phase}"
检查您的应用程序数据和资源是否已恢复。
注意如果
VolumeSnapshotRestore
CR 的状态变成 'Failed',请参阅 Velero 日志进行故障排除。
-
删除由 Velero CSI 插件创建的 application 命名空间和
4.8.3. 使用带有 Ceph 存储的 OADP 1.2 Data Mover
您可以使用 OADP 1.2 Data Mover,为使用 CephFS、CephRBD 或这两者的集群备份和恢复应用程序数据。
OADP 1.2 Data Mover 会利用支持大规模环境的 Ceph 功能。其中之一是 shallow copy 方法,可用于 OpenShift Container Platform 4.12 及更新的版本。此功能支持备份和恢复源持久性卷声明 (PVC) 上找到的 StorageClass
和 AccessMode
资源。
CephFS shallow copy 是一个备份功能。它不是恢复操作的一部分。
4.8.3.1. 在 Ceph 存储中使用 OADP 1.2 Data Mover 的先决条件
以下先决条件适用于在使用 Ceph 存储的集群中通过 OpenShift API for Data Protection (OADP) 1.2 Data Mover 进行数据备份和恢复的操作:
- 已安装 OpenShift Container Platform 4.12 或更高版本。
- 已安装 OADP Operator。
-
您已在命名空间
openshift-adp
中创建了 secretcloud-credentials
。 - 已安装 Red Hat OpenShift Data Foundation。
- 已使用 Operator Lifecycle Manager 安装最新的 VolSync Operator。
4.8.3.2. 定义用于 OADP 1.2 Data Mover 的自定义资源
安装 Red Hat OpenShift Data Foundation 时,它会自动创建默认的 CephFS 和 CephRBD StorageClass
和 VolumeSnapshotClass
自定义资源 (CR)。您必须定义这些 CR 以用于 OpenShift API for Data Protection (OADP) 1.2 Data Mover。
定义 CR 后,您必须对环境进行一些其他更改,然后才能执行备份和恢复操作。
4.8.3.2.1. 定义 CephFS 自定义资源以用于 OADP 1.2 Data Mover
安装 Red Hat OpenShift Data Foundation 时,它会自动创建默认的 CephFS StorageClass
自定义资源 (CR) 和默认的 CephFS VolumeSnapshotClass
CR。您可以定义这些 CR 以用于 OpenShift API for Data Protection (OADP) 1.2 Data Mover。
流程
定义
VolumeSnapshotClass
CR,如下例所示:VolumeSnapshotClass
CR 示例apiVersion: snapshot.storage.k8s.io/v1 deletionPolicy: Retain 1 driver: openshift-storage.cephfs.csi.ceph.com kind: VolumeSnapshotClass metadata: annotations: snapshot.storage.kubernetes.io/is-default-class: true 2 labels: velero.io/csi-volumesnapshot-class: true 3 name: ocs-storagecluster-cephfsplugin-snapclass parameters: clusterID: openshift-storage csi.storage.k8s.io/snapshotter-secret-name: rook-csi-cephfs-provisioner csi.storage.k8s.io/snapshotter-secret-namespace: openshift-storage
定义
StorageClass
CR,如下例所示:StorageClass
CR 示例kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ocs-storagecluster-cephfs annotations: description: Provides RWO and RWX Filesystem volumes storageclass.kubernetes.io/is-default-class: true 1 provisioner: openshift-storage.cephfs.csi.ceph.com parameters: clusterID: openshift-storage csi.storage.k8s.io/controller-expand-secret-name: rook-csi-cephfs-provisioner csi.storage.k8s.io/controller-expand-secret-namespace: openshift-storage csi.storage.k8s.io/node-stage-secret-name: rook-csi-cephfs-node csi.storage.k8s.io/node-stage-secret-namespace: openshift-storage csi.storage.k8s.io/provisioner-secret-name: rook-csi-cephfs-provisioner csi.storage.k8s.io/provisioner-secret-namespace: openshift-storage fsName: ocs-storagecluster-cephfilesystem reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: Immediate
- 1
- 必须设置为
true
。
4.8.3.2.2. 定义 CephRBD 自定义资源以用于 OADP 1.2 Data Mover
安装 Red Hat OpenShift Data Foundation 时,它会自动创建默认的 CephRBD StorageClass
自定义资源 (CR) 和默认的 CephRBD VolumeSnapshotClass
CR。您可以定义这些 CR 以用于 OpenShift API for Data Protection (OADP) 1.2 Data Mover。
流程
定义
VolumeSnapshotClass
CR,如下例所示:VolumeSnapshotClass
CR 示例apiVersion: snapshot.storage.k8s.io/v1 deletionPolicy: Retain 1 driver: openshift-storage.rbd.csi.ceph.com kind: VolumeSnapshotClass metadata: labels: velero.io/csi-volumesnapshot-class: true 2 name: ocs-storagecluster-rbdplugin-snapclass parameters: clusterID: openshift-storage csi.storage.k8s.io/snapshotter-secret-name: rook-csi-rbd-provisioner csi.storage.k8s.io/snapshotter-secret-namespace: openshift-storage
定义
StorageClass
CR,如下例所示:StorageClass
CR 示例kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ocs-storagecluster-ceph-rbd annotations: description: 'Provides RWO Filesystem volumes, and RWO and RWX Block volumes' provisioner: openshift-storage.rbd.csi.ceph.com parameters: csi.storage.k8s.io/fstype: ext4 csi.storage.k8s.io/provisioner-secret-namespace: openshift-storage csi.storage.k8s.io/provisioner-secret-name: rook-csi-rbd-provisioner csi.storage.k8s.io/node-stage-secret-name: rook-csi-rbd-node csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner imageFormat: '2' clusterID: openshift-storage imageFeatures: layering csi.storage.k8s.io/controller-expand-secret-namespace: openshift-storage pool: ocs-storagecluster-cephblockpool csi.storage.k8s.io/node-stage-secret-namespace: openshift-storage reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: Immediate
4.8.3.2.3. 定义用于 OADP 1.2 Data Mover 的额外自定义资源
在重新定义默认 StorageClass
和 CephRBD VolumeSnapshotClass
自定义资源 (CR) 后,您必须创建以下 CR:
-
定义为使用 shallow 复制功能的 CephFS
StorageClass
CR -
Restic
Secret
CR
流程
创建 CephFS
StorageClass
CR,并将backingSnapshot
参数设置为true
,如下例所示:将
backingSnapshot
设置为true
的 CephFSStorageClass
CR 示例kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: ocs-storagecluster-cephfs-shallow annotations: description: Provides RWO and RWX Filesystem volumes storageclass.kubernetes.io/is-default-class: false provisioner: openshift-storage.cephfs.csi.ceph.com parameters: csi.storage.k8s.io/provisioner-secret-namespace: openshift-storage csi.storage.k8s.io/provisioner-secret-name: rook-csi-cephfs-provisioner csi.storage.k8s.io/node-stage-secret-name: rook-csi-cephfs-node csi.storage.k8s.io/controller-expand-secret-name: rook-csi-cephfs-provisioner clusterID: openshift-storage fsName: ocs-storagecluster-cephfilesystem csi.storage.k8s.io/controller-expand-secret-namespace: openshift-storage backingSnapshot: true 1 csi.storage.k8s.io/node-stage-secret-namespace: openshift-storage reclaimPolicy: Delete allowVolumeExpansion: true volumeBindingMode: Immediate
- 1
- 必须设置为
true
。
重要确保 CephFS
VolumeSnapshotClass
和StorageClass
CR 对provisioner
有相同的值。配置 Restic
Secret
CR,如下例所示:Restic
Secret
CR 示例apiVersion: v1 kind: Secret metadata: name: <secret_name> namespace: <namespace> type: Opaque stringData: RESTIC_PASSWORD: <restic_password>
4.8.3.3. 使用 OADP 1.2 Data Mover 和 CephFS 存储备份和恢复数据
您可以通过启用 CephFS 的 shallow copy 功能,使用 OpenShift API for Data Protection (OADP) 1.2 Data Mover 来备份和恢复使用 CephFS 存储的数据。
先决条件
- 有状态应用在单独的命名空间中运行,并将 CephFS 用作置备程序的持久性卷声明 (PVC)。
-
为 CephFS 和 OADP 1.2 Data Mover 定义
StorageClass
和VolumeSnapshotClass
自定义资源 (CR)。 -
openshift-adp
命名空间中有一个 secretcloud-credentials
。
4.8.3.3.1. 创建用于 CephFS 存储的 DPA
在通过 OpenShift API for Data Protection (OADP) 1.2 Data Mover 来备份和存储使用 CephFS 存储的数据时,需要先创建一个 Data Protection Application (DPA) CR。
流程
运行以下命令,验证
VolumeSnapshotClass
CR 的deletionPolicy
字段是否已设置为Retain
:$ oc get volumesnapshotclass -A -o jsonpath='{range .items[*]}{"Name: "}{.metadata.name}{" "}{"Retention Policy: "}{.deletionPolicy}{"\n"}{end}'
运行以下命令,验证
VolumeSnapshotClass
CR 的标签是否已设置为true
:$ oc get volumesnapshotclass -A -o jsonpath='{range .items[*]}{"Name: "}{.metadata.name}{" "}{"labels: "}{.metadata.labels}{"\n"}{end}'
运行以下命令,验证
StorageClass
CR 的storageclass.kubernetes.io/is-default-class
注解是否已设置为true
:$ oc get storageClass -A -o jsonpath='{range .items[*]}{"Name: "}{.metadata.name}{" "}{"annotations: "}{.metadata.annotations}{"\n"}{end}'
创建一个类似以下示例的 Data Protection Application (DPA) CR:
DPA CR 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: velero-sample namespace: openshift-adp spec: backupLocations: - velero: config: profile: default region: us-east-1 credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <my_bucket> prefix: velero provider: aws configuration: restic: enable: false 1 velero: defaultPlugins: - openshift - aws - csi - vsm features: dataMover: credentialName: <restic_secret_name> 2 enable: true 3 volumeOptionsForStorageClasses: ocs-storagecluster-cephfs: sourceVolumeOptions: accessMode: ReadOnlyMany cacheAccessMode: ReadWriteMany cacheStorageClassName: ocs-storagecluster-cephfs storageClassName: ocs-storagecluster-cephfs-shallow
4.8.3.3.2. 使用 OADP 1.2 Data Mover 和 CephFS 存储备份数据
您可以通过启用 CephFS 存储的 shallow copy 功能,使用 OpenShift API for Data Protection (OADP) 1.2 Data Mover 来备份使用 CephFS 存储的数据。
流程
如以下示例所示,创建一个
Backup
CR:Backup
CR 示例apiVersion: velero.io/v1 kind: Backup metadata: name: <backup_name> namespace: <protected_ns> spec: includedNamespaces: - <app_ns> storageLocation: velero-sample-1
通过完成以下步骤来监控
VolumeSnapshotBackup
CR 的进度:要检查所有
VolumeSnapshotBackup
CR 的进度,请运行以下命令:$ oc get vsb -n <app_ns>
要检查特定
VolumeSnapshotBackup
CR 的进度,请运行以下命令:$ oc get vsb <vsb_name> -n <app_ns> -ojsonpath="{.status.phase}`
-
等待几分钟,直到
VolumeSnapshotBackup
CR 的状态为Completed
。 -
验证 Restic
Secret
中至少有一个快照在对象存储中提供。您可以在带有前缀/<OADP_namespace>
的目标BackupStorageLocation
存储供应商中检查这个快照。
4.8.3.3.3. 使用 OADP 1.2 Data Mover 和 CephFS 存储恢复数据
如果备份过程启用了 CephFS 存储的 shallow copy 功能,您可以使用 OpenShift API for Data Protection (OADP) 1.2 Data Mover 来恢复使用 CephFS 存储的数据。修剪复制功能没有在恢复过程中使用。
流程
运行以下命令来删除应用程序命名空间:
$ oc delete vsb -n <app_namespace> --all
运行以下命令,删除在备份过程中创建的
VolumeSnapshotContent
CR:$ oc delete volumesnapshotcontent --all
创建一个
Restore
CR,如下例所示:Restore
CR 示例apiVersion: velero.io/v1 kind: Restore metadata: name: <restore_name> namespace: <protected_ns> spec: backupName: <previous_backup_name>
通过执行以下操作来监控
VolumeSnapshotRestore
CR 的进度:要检查所有
VolumeSnapshotRestore
CR 的进度,请运行以下命令:$ oc get vsr -n <app_ns>
要检查特定
VolumeSnapshotRestore
CR 的进度,请运行以下命令:$ oc get vsr <vsr_name> -n <app_ns> -ojsonpath="{.status.phase}
运行以下命令验证您的应用程序数据是否已恢复:
$ oc get route <route_name> -n <app_ns> -ojsonpath="{.spec.host}"
4.8.3.4. 使用 OADP 1.2 Data Mover 和 split 卷 (CephFS 和 Ceph RBD) 备份和恢复数据
您可以使用 OpenShift API for Data Protection (OADP) 1.2 Data Mover 在具有 分割卷 的环境中备份和恢复数据,即使用 CephFS 和 CephRBD 的环境。
先决条件
- 有状态应用在单独的命名空间中运行,并将 CephFS 用作置备程序的持久性卷声明 (PVC)。
-
为 CephFS 和 OADP 1.2 Data Mover 定义
StorageClass
和VolumeSnapshotClass
自定义资源 (CR)。 -
openshift-adp
命名空间中有一个 secretcloud-credentials
。
4.8.3.4.1. 创建用于分割卷的 DPA
在使用 OpenShift API for Data Protection (OADP) 1.2 Data Mover 来使用分割卷来备份和恢复数据前,您必须创建一个数据保护应用程序 (DPA) CR。
流程
创建一个数据保护应用程序 (DPA) CR,如下例所示:
带有分割卷的环境的 DPA CR 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: velero-sample namespace: openshift-adp spec: backupLocations: - velero: config: profile: default region: us-east-1 credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <my-bucket> prefix: velero provider: aws configuration: restic: enable: false velero: defaultPlugins: - openshift - aws - csi - vsm features: dataMover: credentialName: <restic_secret_name> 1 enable: true volumeOptionsForStorageClasses: 2 ocs-storagecluster-cephfs: sourceVolumeOptions: accessMode: ReadOnlyMany cacheAccessMode: ReadWriteMany cacheStorageClassName: ocs-storagecluster-cephfs storageClassName: ocs-storagecluster-cephfs-shallow ocs-storagecluster-ceph-rbd: sourceVolumeOptions: storageClassName: ocs-storagecluster-ceph-rbd cacheStorageClassName: ocs-storagecluster-ceph-rbd destinationVolumeOptions: storageClassName: ocs-storagecluster-ceph-rbd cacheStorageClassName: ocs-storagecluster-ceph-rbd
4.8.3.4.2. 使用 OADP 1.2 Data Mover 和 split 卷备份数据
您可以使用 OpenShift API 进行数据保护 (OADP) 1.2 Data Mover 在有分割卷的环境中备份数据。
流程
如以下示例所示,创建一个
Backup
CR:Backup
CR 示例apiVersion: velero.io/v1 kind: Backup metadata: name: <backup_name> namespace: <protected_ns> spec: includedNamespaces: - <app_ns> storageLocation: velero-sample-1
通过完成以下步骤来监控
VolumeSnapshotBackup
CR 的进度:要检查所有
VolumeSnapshotBackup
CR 的进度,请运行以下命令:$ oc get vsb -n <app_ns>
要检查特定
VolumeSnapshotBackup
CR 的进度,请运行以下命令:$ oc get vsb <vsb_name> -n <app_ns> -ojsonpath="{.status.phase}`
-
等待几分钟,直到
VolumeSnapshotBackup
CR 的状态为Completed
。 -
验证 Restic
Secret
中至少有一个快照在对象存储中提供。您可以在带有前缀/<OADP_namespace>
的目标BackupStorageLocation
存储供应商中检查这个快照。
4.8.3.4.3. 使用 OADP 1.2 Data Mover 和 split 卷恢复数据
如果备份过程启用了 CephFS 存储的 shallow copy 功能,您可以使用 OpenShift API 进行数据保护 (OADP) 1.2 Data Mover 在带有分割卷的环境中恢复数据。修剪复制功能没有在恢复过程中使用。
流程
运行以下命令来删除应用程序命名空间:
$ oc delete vsb -n <app_namespace> --all
运行以下命令,删除在备份过程中创建的
VolumeSnapshotContent
CR:$ oc delete volumesnapshotcontent --all
创建一个
Restore
CR,如下例所示:Restore
CR 示例apiVersion: velero.io/v1 kind: Restore metadata: name: <restore_name> namespace: <protected_ns> spec: backupName: <previous_backup_name>
通过执行以下操作来监控
VolumeSnapshotRestore
CR 的进度:要检查所有
VolumeSnapshotRestore
CR 的进度,请运行以下命令:$ oc get vsr -n <app_ns>
要检查特定
VolumeSnapshotRestore
CR 的进度,请运行以下命令:$ oc get vsr <vsr_name> -n <app_ns> -ojsonpath="{.status.phase}
运行以下命令验证您的应用程序数据是否已恢复:
$ oc get route <route_name> -n <app_ns> -ojsonpath="{.spec.host}"
4.8.4. 使用 OADP 1.1 Data Mover 进行备份后的清除处理
对于 OADP 1.1 Data Mover,在执行备份后必须执行数据清理。
清理过程会删除以下资源:
- 存储桶中的快照
- 集群资源
- 在由一个调度运行或重复运行的备份过程后的卷快照备份 (VSB)
4.8.4.1. 删除存储桶中的快照
在备份后,数据 Mover 可能会在存储桶中保留一个或多个快照。您可以删除所有快照或删除单个快照。
流程
-
要删除存储桶中的所有快照,请删除在数据保护应用程序(DPA)
.spec.backupLocation.objectStorage.bucket
资源中指定的/<protected_namespace>
文件夹。 删除单个快照:
-
浏览到在 DPA
.spec.backupLocation.objectStorage.bucket
资源中指定的/<protected_namespace>
。 -
删除前缀为
/<volumeSnapshotContent name>-pvc
的适当文件夹,其中<VolumeSnapshotContent_name>
是根据每个 PVC 创建的VolumeSnapshotContent
。
-
浏览到在 DPA
4.8.4.2. 删除集群资源
无论是成功将容器存储接口 (CSI) 卷快照备份到远程对象存储,OADP 1.1 Data Mover 都可能会保留集群资源。
4.8.4.2.1. 在使用 Data Mover 成功备份和恢复后,删除集群资源
您使用 Data Mover 成功备份和恢复后,可以删除保留在您的应用程序命名空间中的 VolumeSnapshotBackup
或 VolumeSnapshotRestore
CR。
流程
在使用 Data Mover 备份后,删除位于应用程序命名空间中、带有应用程序 PVC 的命名空间来备份和恢复的集群资源:
$ oc delete vsb -n <app_namespace> --all
删除在使用 Data Mover 恢复后保留的集群资源:
$ oc delete vsr -n <app_namespace> --all
如果需要,删除使用 Data Mover 备份和恢复后保留的任何
VolumeSnapshotContent
资源:$ oc delete volumesnapshotcontent --all
4.8.4.2.2. 在使用 Data Mover 备份部分成功或失败后删除集群资源
如果使用 Data Mover 进行的备份和恢复操作部分成功或完全失败,您需要清理应用程序命名空间中存在的任何 VolumeSnapshotBackup
(VSB) 或 VolumeSnapshotRestore
自定义资源定义(CRD),并清理这些控制器中创建的任何额外资源。
流程
输入以下命令清理使用 Data Mover 的备份操作后保留的集群资源:
删除应用程序命名空间中的 VSB CRD,带有应用程序 PVC 的命名空间用于备份和恢复:
$ oc delete vsb -n <app_namespace> --all
删除
VolumeSnapshot
CR:$ oc delete volumesnapshot -A --all
删除
VolumeSnapshotContent
CR:$ oc delete volumesnapshotcontent --all
删除受保护的命名空间中的任何 PVC,在其中安装 Operator 的命名空间。
$ oc delete pvc -n <protected_namespace> --all
删除命名空间中的所有
ReplicationSource
资源。$ oc delete replicationsource -n <protected_namespace> --all
输入以下命令,清理使用 Data Mover 进行的恢复操作后保留的集群资源:
删除 VSR CRD:
$ oc delete vsr -n <app-ns> --all
删除
VolumeSnapshot
CR:$ oc delete volumesnapshot -A --all
删除
VolumeSnapshotContent
CR:$ oc delete volumesnapshotcontent --all
删除命名空间中的所有
ReplicationDestination
资源。$ oc delete replicationdestination -n <protected_namespace> --all