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
:
使用以下示例文件创建
VolumeGroupSnapshotClass
YAML 文件:卷组快照类 YAML 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 'VolumeGroup5-4' 对象:
oc create -f <volume-group-snapshot-class-filename>.yaml
$ oc create -f <volume-group-snapshot-class-filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4.4. 创建卷组快照 复制链接链接已复制到粘贴板!
当您创建 VolumeGroupSnapshot
对象时,OpenShift Container Platform 会创建一个卷组快照。
先决条件
- 登陆到一个正在运行的 OpenShift Container Platform 集群。
- 使用功能门启用此功能。有关如何使用功能门的详情,请参考 使用功能门启用功能集。
-
您要为快照组群的持久性卷声明(PVC)使用支持
VolumeGroupSnapshot
对象的 CSI 驱动程序创建。 - 用于置备存储后端的存储类。
-
管理员已创建了
VolumeGroupClone
对象。
流程
创建卷组快照:
找到(或创建)要在卷组快照中包含的 PVC:
oc get pvc
$ oc get pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 命令输出示例
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
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 Copied! Toggle word wrap Toggle overflow 这个示例使用两个 PVC
将 PVC 标记为属于快照组:
运行以下命令标记 PVC pvc-0:
oc label pvc pvc-0 group=myGroup
$ oc label pvc pvc-0 group=myGroup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
persistentvolumeclaim/pvc-0 labeled
persistentvolumeclaim/pvc-0 labeled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令标记 PVC pvc-1:
oc label pvc pvc-1 group=myGroup
$ oc label pvc pvc-1 group=myGroup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
persistentvolumeclaim/pvc-1 labeled
persistentvolumeclaim/pvc-1 labeled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,您要将 PVC "pvc-0" 和 "pvc-1" 标记为属于组 "myGroup"。
创建
VolumeGroupSnapshot
对象以指定您的卷组快照:使用以下示例文件创建
VolumeGroupSnapshot
对象 YAML 文件:VolumeGroupSnapshot YAML 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
VolumeGroupSnapshot
对象:oc create -f <volume-group-snapshot-filename>.yaml
$ oc create -f <volume-group-snapshot-filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
结果
根据将多少 PVC 指定为卷组快照的一部分来创建单个卷快照。
这些单独的卷快照被命名,格式为: <hash of VolumeGroupSnaphotContentUUID+volumeHandle>:
单个卷快照示例
在前面的示例中,创建两个单独的卷快照作为卷组快照的一部分。
snapshot-4dc1c53a29538b36e85003503a4bcac5dbde4cff59e81f1e3bb80b6c18c3fd03 snapshot-fbfe59eff570171765df664280910c3bf1a4d56e233a5364cd8cb0152a35965b
snapshot-4dc1c53a29538b36e85003503a4bcac5dbde4cff59e81f1e3bb80b6c18c3fd03
snapshot-fbfe59eff570171765df664280910c3bf1a4d56e233a5364cd8cb0152a35965b
6.4.5. 恢复卷组快照 复制链接链接已复制到粘贴板!
您可以使用 VolumeGroupSnapshot
自定义资源定义(CRD)内容将现有卷恢复到以前的状态。
要恢复现有卷,您可以从 VolumeGroupSnapshot
一部分的 VolumeSnapshot
对象请求一个新的持久性卷声明(PVC)。这会触发置备使用指定快照数据的新卷。重复此过程,直到从属于卷组快照的所有快照创建所有卷。
先决条件
- 登陆到一个正在运行的 OpenShift Container Platform 集群。
- 使用支持卷组快照的 Container Storage Interface (CSI) 驱动程序创建 PVC。
- 用于置备存储后端的存储类。
- 已创建卷组快照并可使用。
流程
将现有卷从卷组快照恢复到以前的状态:
从 PVC 的卷组快照中指定
VolumeSnapshot
数据源,如下例所示:恢复 PVC YAML 文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建 PVC:
oc create -f <pvc-restore-filename>.yaml
$ oc create -f <pvc-restore-filename>.yaml
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 上一步中指定的 PVC 恢复文件的名称。
运行以下命令验证恢复的 PVC 是否已创建:
oc get pvc
$ oc get pvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会出现一个带有您在第一步中指定的名称的新 PVC。
- 根据需要重复这个过程,直到从属于卷组快照的所有快照中创建所有卷。