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
# ...

1
启用节点代理的标记。
2
上传程序的类型。可能的值为 restickopia。内置 Data Mover 使用 Kopia 作为默认的上传程序机制,无论 uploaderType 字段的值是什么。
3
CSI 插件包含在默认插件列表中。

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。

流程

  1. 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 ),以便备份可以成功完成。

  2. 应用清单:

    $ oc create -f backup.yaml

    在快照创建完成后会创建一个 DataUpload CR。

验证

  • 通过监控 DataUpload CR 的 status.phase 字段来验证快照数据是否已成功传送到远程对象存储。可能的值为 In ProgressCompletedFailedCanceled。对象存储在 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,可从中恢复数据。

流程

  1. Restore CR 创建 YAML 文件,如下例所示:

    Restore CR 示例

    apiVersion: velero.io/v1
    kind: Restore
    metadata:
      name: restore
      namespace: openshift-adp
    spec:
      backupName: <backup>
    # ...

  2. 应用清单:

    $ oc create -f restore.yaml

    恢复启动时会创建一个 DataDownload CR。

验证

  • 您可以通过检查 DataDownload CR 的 status.phase 字段来监控恢复过程的状态。可能的值为 In ProgressCompletedFailedCanceled

    • 要获取所有 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 快照数据已被成功恢复。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.