6.4. CSI 卷组快照


本文档论述了如何使用带有支持的 Container Storage Interface (CSI) 驱动程序的卷组快照来帮助防止 OpenShift Container Platform 中的数据丢失。建议先熟悉持久性卷

重要

CSI 卷组快照只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅以下链接:

要使用此技术预览功能,您必须使用功能门启用它

6.4.1. CSI 卷组快照概述

快照(snapshot)代表了集群中特定时间点的存储卷的状态 。卷快照可以用来置备新卷。

卷组快照使用标签选择器对多个持久性卷声明进行分组以进行快照。卷组快照代表来自同一时间点获取的多个卷的副本。这对包含多个卷的应用程序很有用。

CSI 驱动程序支持容器存储接口(CSI)卷组快照。OpenShift Data Foundation 支持卷组快照。

卷组快照提供三个新的 API 对象来管理快照:

VolumeGroupSnapshot
请求为多个持久性卷声明创建卷组快照。它包含卷组快照操作的信息,如执行卷组快照时的时间戳,以及是否准备就绪。
VolumeGroupSnapshotContent
由快照控制器为动态创建的 volumeGroupSnapshot 创建。它包含卷组快照的信息,包括卷组快照 ID。此对象代表集群中置备的资源(组快照)。VolumeGroupSnapshotContent 对象绑定到使用一对一映射创建的卷组快照。
VolumeGroupSnapshotClass
由集群管理员创建来描述如何创建卷组快照,包括驱动程序信息、删除策略等。

这三个 API 类型定义为 CustomResourceDefinitions (CRD)。这些 CRD 必须安装到 OpenShift Container Platform 集群中,才能支持卷组快照。

6.4.2. CSI 卷组快照限制

卷组快照有以下限制:

  • 不支持将现有持久性卷声明(PVC)恢复到快照代表的早期状态,它只支持从快照置备新卷。
  • 除了存储系统提供的外,不会保证应用程序一致性(如崩溃一致性)。有关应用程序一致性的更多信息,请参阅 Quiesce 和 Unquiesce Hook

6.4.3. 创建卷组快照类

在创建卷组快照前,集群管理员需要创建一个 VolumeGroup 5-4。

这个对象描述了如何创建卷组快照,包括驱动程序信息、删除策略等。

先决条件

  • 使用管理员特权登录到正在运行的 OpenShift Container Platform 集群。
  • 使用功能门启用此功能。有关如何使用功能门的详情,请参考 使用功能门启用功能集

流程

创建 VolumeGroup5-4

  1. 使用以下示例文件创建 VolumeGroupSnapshotClass YAML 文件:

    卷组快照类 YAML 文件示例

    apiVersion: groupsnapshot.storage.k8s.io/v1beta1
    kind: VolumeGroupSnapshotClass 
    1
    
    metadata:
      name: csi-hostpath-groupsnapclass 
    2
    
    deletionPolicy: Delete
    driver: hostpath.csi.k8s.io
         …...
    Copy to Clipboard Toggle word wrap

    1
    指定 VolumeGroup5-4 对象。
    2
    VolumeGroupSnapshotClass 的名称。
  2. 运行以下命令来创建 'VolumeGroup5-4' 对象:

    $ oc create -f <volume-group-snapshot-class-filename>.yaml
    Copy to Clipboard Toggle word wrap

6.4.4. 创建卷组快照

当您创建 VolumeGroupSnapshot 对象时,OpenShift Container Platform 会创建一个卷组快照。

先决条件

  • 登陆到一个正在运行的 OpenShift Container Platform 集群。
  • 使用功能门启用此功能。有关如何使用功能门的详情,请参考 使用功能门启用功能集
  • 您要为快照组群的持久性卷声明(PVC)使用支持 VolumeGroupSnapshot 对象的 CSI 驱动程序创建。
  • 用于置备存储后端的存储类。
  • 管理员已创建了 VolumeGroupClone 对象。

流程

创建卷组快照:

  1. 找到(或创建)要在卷组快照中包含的 PVC:

    $ oc get pvc
    Copy to Clipboard Toggle word wrap

    命令输出示例

    NAME        STATUS    VOLUME                                     CAPACITY   ACCESSMODES   AGE
    pvc-0       Bound     pvc-a42d7ea2-e3df-11ed-b5ea-0242ac120002   1Gi        RWO           48s
    pvc-1       Bound     pvc-a42d81b8-e3df-11ed-b5ea-0242ac120002   1Gi        RWO           48S
    Copy to Clipboard Toggle word wrap

    这个示例使用两个 PVC

  2. 将 PVC 标记为属于快照组:

    1. 运行以下命令标记 PVC pvc-0:

      $ oc label pvc pvc-0 group=myGroup
      Copy to Clipboard Toggle word wrap

      输出示例

      persistentvolumeclaim/pvc-0 labeled
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令标记 PVC pvc-1:

      $ oc label pvc pvc-1 group=myGroup
      Copy to Clipboard Toggle word wrap

      输出示例

      persistentvolumeclaim/pvc-1 labeled
      Copy to Clipboard Toggle word wrap

      在本例中,您要将 PVC "pvc-0" 和 "pvc-1" 标记为属于组 "myGroup"。

  3. 创建 VolumeGroupSnapshot 对象以指定您的卷组快照:

    1. 使用以下示例文件创建 VolumeGroupSnapshot 对象 YAML 文件:

      VolumeGroupSnapshot YAML 文件示例

      apiVersion: groupsnapshot.storage.k8s.io/v1beta1
      kind: VolumeGroupSnapshot 
      1
      
      metadata:
        name: <volume-group-snapshot-name> 
      2
      
        namespace: <namespace> 
      3
      
      spec:
        volumeGroupSnapshotClassName: <volume-group-snapshot-class-name> 
      4
      
        source:
          selector:
            matchLabels:
              group: myGroup 
      5
      Copy to Clipboard Toggle word wrap

      1
      VolumeGroupSnapshot 对象请求为多个 PVC 创建卷组快照。
      2
      卷组快照的名称。
      3
      卷组快照的命名空间。
      4
      VolumeGroup5-4 名称。这个对象由管理员创建,描述了如何创建卷组快照。
      5
      用于对快照所需的 PVC 进行分组的标签名称。在本例中,是 "myGroup"。
    2. 运行以下命令来创建 VolumeGroupSnapshot 对象:

      $ oc create -f <volume-group-snapshot-filename>.yaml
      Copy to Clipboard Toggle word wrap

结果

根据将多少 PVC 指定为卷组快照的一部分来创建单个卷快照。

这些单独的卷快照被命名,格式为: <hash of VolumeGroupSnaphotContentUUID+volumeHandle>:

单个卷快照示例

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: snapshot-4dc1c53a29538b36e85003503a4bcac5dbde4cff59e81f1e3bb80b6c18c3fd03
  namespace: default
  ownerReferences:
  - apiVersion: groupsnapshot.storage.k8s.io/v1beta1
    kind: VolumeGroupSnapshot
    name: my-groupsnapshot
    uid: ba2d60c5-5082-4279-80c2-daa85f0af354
  resourceVersion: "124503"
  uid: c0137282-f161-4e86-92c1-c41d36c6d04c
spec:
  source:
    persistentVolumeClaimName:pvc-1
status:
  volumeGroupSnapshotName: volume-group-snapshot-name
Copy to Clipboard Toggle word wrap

在前面的示例中,创建两个单独的卷快照作为卷组快照的一部分。

snapshot-4dc1c53a29538b36e85003503a4bcac5dbde4cff59e81f1e3bb80b6c18c3fd03
snapshot-fbfe59eff570171765df664280910c3bf1a4d56e233a5364cd8cb0152a35965b
Copy to Clipboard Toggle word wrap

6.4.5. 恢复卷组快照

您可以使用 VolumeGroupSnapshot 自定义资源定义(CRD)内容将现有卷恢复到以前的状态。

要恢复现有卷,您可以从 VolumeGroupSnapshot 一部分的 VolumeSnapshot 对象请求一个新的持久性卷声明(PVC)。这会触发置备使用指定快照数据的新卷。重复此过程,直到从属于卷组快照的所有快照创建所有卷。

先决条件

  • 登陆到一个正在运行的 OpenShift Container Platform 集群。
  • 使用支持卷组快照的 Container Storage Interface (CSI) 驱动程序创建 PVC。
  • 用于置备存储后端的存储类。
  • 已创建卷组快照并可使用。

流程

将现有卷从卷组快照恢复到以前的状态:

  1. 从 PVC 的卷组快照中指定 VolumeSnapshot 数据源,如下例所示:

    恢复 PVC YAML 文件示例

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: <pvc-restore-name> 
    1
    
      namespace: <namespace> 
    2
    
    spec:
      storageClassName: csi-hostpath-sc
      dataSource:
        name: snapshot-fbfe59eff570171765df664280910c3bf1a4d56e233a5364cd8cb0152a35965b 
    3
    
        kind: VolumeSnapshot 
    4
    
        apiGroup: snapshot.storage.k8s.io 
    5
    
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    Copy to Clipboard Toggle word wrap

    1
    恢复 PVC 的名称。
    2
    命名空间的名称。
    3
    作为卷组快照一部分的单独卷快照名称,用作源。
    4
    必须设置为 VolumeSnapshot 的值。
    5
    必须设置为 snapshot.storage.k8s.io
  2. 运行以下命令来创建 PVC:

    $ oc create -f <pvc-restore-filename>.yaml 
    1
    Copy to Clipboard Toggle word wrap
    1
    上一步中指定的 PVC 恢复文件的名称。
  3. 运行以下命令验证恢复的 PVC 是否已创建:

    $ oc get pvc
    Copy to Clipboard Toggle word wrap

    此时会出现一个带有您在第一步中指定的名称的新 PVC。

  4. 根据需要重复这个过程,直到从属于卷组快照的所有快照中创建所有卷。

6.4.6. 其他资源

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部