4.10. OADP 1.3 Data Mover
4.10.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 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
4.10.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 # ...
4.10.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.10.2. 备份和恢复 CSI 快照
您可以使用 OADP 1.3 Data Mover 备份和恢复持久性卷。
4.10.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: false includedNamespaces: - mysql-persistent itemOperationTimeout: 4h0m0s snapshotMoveData: true 1 storageLocation: default ttl: 720h0m0s volumeSnapshotLocations: - dpa-sample-1 # ...
- 1
- 设置为
true
以启用将 CSI 快照移到远程对象存储。
注意如果您使用 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.10.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 快照数据已被成功恢复。