4.11. OADP 1.3 Data Mover
4.11.1. 关于 OADP 1.3 Data Mover
OADP 1.3 包含一个内置的 Data Mover,您可以使用它将 Container Storage Interface (CSI) 卷快照移到远程对象存储。如果发生故障、意外删除或损坏,内置的 Data Mover 可让您从远程对象存储中恢复有状态的应用程序。它使用 Kopia 作为上传程序机制来读取快照数据并写入统一存储库。
OADP 支持以下 CSI 快照:
- Red Hat OpenShift Data Foundation
- 使用支持 Kubernetes 卷快照 API 的 Container Storage Interface(CSI)驱动程序的任何其他云存储供应商
OADP 内置 Data Mover(在 OADP 1.3 中作为技术预览引进)现在完全支持容器化和虚拟机工作负载。
4.11.1.1. 启用内置 Data Mover
要启用内置 Data Mover,您必须在 DataProtectionApplication
自定义资源 (CR) 中包含 CSI 插件并启用节点代理。节点代理是一个 Kubernetes daemonset,用于托管数据移动模块。这包括 Data Mover 控制器、上传程序和存储库。
DataProtectionApplication
清单示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: dpa-sample spec: configuration: nodeAgent: enable: true 1 uploaderType: kopia 2 velero: defaultPlugins: - openshift - aws - csi 3 defaultSnapshotMoveData: true defaultVolumesToFSBackup: 4 featureFlags: - EnableCSI # ...
4.11.1.2. 内置数据管理控制器和自定义资源定义 (CRD)
内置的 Data Mover 功能引入了三个新的 API 对象,被定义为 CRD,用于管理备份和恢复:
-
DataDownload
: 代表卷快照的数据下载。CSI 插件为每个要恢复的卷创建一个DataDownload
对象。DataDownload
CR 包含有关目标卷的信息、指定的 Data Mover、当前数据下载的进度、指定的备份存储库以及进程完成后当前数据下载的结果。 -
DataUpload
:代表卷快照的数据上传。CSI 插件为每个 CSI 快照创建一个DataUpload
对象。DataUpload
CR 包含有关指定快照的信息、指定的 Data Mover、指定的备份存储库、当前数据上传的进度,以及进程完成后当前数据上传的结果。 -
BackupRepository
: 代表和管理备份存储库的生命周期。当请求第一个 CSI 快照备份或恢复命名空间时,OADP 会为每个命名空间创建一个备份存储库。
4.11.2. 备份和恢复 CSI 快照数据移动
您可以使用 OADP 1.3 Data Mover 备份和恢复持久性卷。
4.11.2.1. 使用 CSI 快照备份持久性卷
您可以使用 OADP Data Mover 将 Container Storage Interface (CSI) 卷快照备份到远程对象存储。
先决条件
-
您可以使用
cluster-admin
角色访问集群。 - 已安装 OADP Operator。
-
您已在
DataProtectionApplication
自定义资源(CR) 中包含了 CSI 插件并启用了节点代理。 - 您有一个应用程序,其持久性卷在单独的命名空间中运行。
-
您已将
metadata.labels.velero.io/csi-volumesnapshot-class: "true"
键值对添加到VolumeSnapshotClass
CR。
流程
为
Backup
对象创建一个 YAML 文件,如下例所示:Backup
CR 示例kind: Backup apiVersion: velero.io/v1 metadata: name: backup namespace: openshift-adp spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: 1 includedNamespaces: - mysql-persistent itemOperationTimeout: 4h0m0s snapshotMoveData: true 2 storageLocation: default ttl: 720h0m0s volumeSnapshotLocations: - dpa-sample-1 # ...
注意如果您使用 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
),以便备份可以成功完成。应用清单:
$ oc create -f backup.yaml
在快照创建完成后会创建一个
DataUpload
CR。
验证
通过监控
DataUpload
CR 的status.phase
字段来验证快照数据是否已成功传送到远程对象存储。可能的值为In Progress
、Completed
、Failed
或Canceled
。对象存储在DataProtectionApplication
CR 的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 1 progress: bytesDone: 108104082 totalBytes: 108104082 snapshotID: 8da1c5febf25225f4577ada2aeb9f899 startTimestamp: "2023-11-02T16:56:22Z"
- 1
- 代表快照数据成功传输到远程对象存储。
4.11.2.2. 恢复 CSI 卷快照
您可以通过创建一个 Restore
CR 来恢复卷快照。
您不能使用 OAPD 1.3 内置数据 Mover 从 OADP 1.2 恢复 Volsync 备份。在升级到 OADP 1.3 之前,建议使用 Restic 对所有工作负载进行文件系统备份。
先决条件
-
您可以使用
cluster-admin
角色访问集群。 -
您有一个 OADP
Backup
CR,可从中恢复数据。
流程
为
Restore
CR 创建 YAML 文件,如下例所示:Restore
CR 示例apiVersion: velero.io/v1 kind: Restore metadata: name: restore namespace: openshift-adp spec: backupName: <backup> # ...
应用清单:
$ oc create -f restore.yaml
恢复启动时会创建一个
DataDownload
CR。
验证
您可以通过检查
DataDownload
CR 的status.phase
字段来监控恢复过程的状态。可能的值为In Progress
、Completed
、Failed
或Canceled
。要获取所有
DataDownload
对象的列表,请运行以下命令:$ oc get datadownloads -A
输出示例
NAMESPACE NAME STATUS STARTED BYTES DONE TOTAL BYTES STORAGE LOCATION AGE NODE openshift-adp restore-test-1-sk7lg Completed 7m11s 108104082 108104082 dpa-sample-1 7m11s ip-10-0-150-57.us-west-2.compute.internal
输入以下命令检查特定
DataDownload
对象的status.phase
字段的值:$ oc get datadownloads <datadownload_name> -o yaml
输出示例
apiVersion: velero.io/v2alpha1 kind: DataDownload metadata: name: restore-test-1-sk7lg namespace: openshift-adp spec: backupStorageLocation: dpa-sample-1 operationTimeout: 10m0s snapshotID: 8da1c5febf25225f4577ada2aeb9f899 sourceNamespace: mysql-persistent targetVolume: namespace: mysql-persistent pv: "" pvc: mysql status: completionTimestamp: "2023-11-02T17:01:24Z" node: ip-10-0-150-57.us-west-2.compute.internal phase: Completed 1 progress: bytesDone: 108104082 totalBytes: 108104082 startTimestamp: "2023-11-02T17:00:52Z"
- 1
- 表示 CSI 快照数据已被成功恢复。
4.11.2.3. 删除 OADP 1.3 的策略
删除策略决定了从系统中删除数据的规则,指定根据保留周期、数据敏感度和合规要求等因素如何进行删除。它有效地管理数据删除,同时满足法规并保留宝贵的信息。
4.11.2.3.1. 删除 OADP 1.3 的策略指南
查看 OADP 1.3 的以下删除策略指南:
-
在 OADP 1.3.x 中,当使用任何类型的备份和恢复方法时,您可以在
VolumeSnapshotClass
自定义资源(CR)中将deletionPolicy
字段设置为Retain
或Delete
。