第 7 章 使用卷快照
集群管理员可以使用卷快照来帮助防止使用支持的 MicroShift 逻辑卷管理器存储(LVMS)容器存储(CSI)提供商来防止数据丢失。需要熟悉 持久性卷。
快照 代表集群中特定时间点的存储卷的状态。卷快照也可用于调配新卷。快照创建为只读逻辑卷(LV),位于与原始数据相同的设备上。
集群管理员可以使用 CSI 卷快照完成以下任务:
- 创建现有持久性卷声明(PVC)的快照。
- 将卷快照备份到安全位置。
- 将卷快照恢复为不同的 PVC。
- 删除现有的卷快照。
MicroShift 仅支持逻辑卷管理器存储(LVMS)插件 CSI 驱动程序。
7.1. 关于 LVM 精简卷
要使用创建卷快照或卷克隆等高级存储功能,您必须执行以下操作:
- 配置逻辑卷管理器存储(LVMS)提供者和集群。
- 在 RHEL for Edge 主机上置备逻辑卷管理器(LVM)精简池。
- 将 LVM 精简池附加到卷组。
要创建 Container Storage Interface (CSI)快照,您必须在 RHEL for Edge 主机上配置精简卷。CSI 不支持卷缩小。
在使用精简配置时,监控存储池,并在可用物理空间耗尽时添加更多容量是非常重要的。您可以将存储池配置为在卷组中有可用空间(VG)时自动扩展。请参阅 创建精简配置的逻辑卷。
要使 LVMS 管理精简逻辑卷(LV),必须在 etc/lvmd.yaml
配置文件中指定一个 thin-pool device-class
数组。允许多个精简池设备类。
如果使用设备类配置额外的存储池,则还必须存在其他存储类,才能将存储池公开给用户和工作负载。要在精简池上启用动态置备,集群中必须存在一个 StorageClass
资源。StorageClass
资源在 topolvm.io/
参数指定源 device-class 数组。
device-class
为 thin-pool 指定单个设备类的 lvmd.yaml
文件示例
socket-name: 1 device-classes: 2 - name: thin 3 default: true spare-gb: 0 4 thin-pool: name: thin overprovision-ratio: 1 5 type: thin 6 volume-group: ssd 7
当同时创建多个 PVC 时,竞争条件可防止 LVMS 准确跟踪分配的空间,并为设备类保留存储容量。使用单独的卷组和逻辑卷类来防止存储高度动态工作负载相互影响。
其他资源
- 要在主机上创建精简池,请参阅创建和管理精简置备卷
- 创建精简配置的逻辑卷
- 配置和管理精简配置的卷
- 存储类
- 存储设备类
7.1.1. 存储类
存储类提供选择设备类的工作负载层接口。MicroShift 支持以下存储类参数:
-
csi.storage.k8s.io/fstype
参数选择文件系统类型。支持xfs
和ext4
文件系统类型。 -
topolvm.io/device-class
参数是设备类的名称。如果没有提供设备类,则会假定默认设备类。
多个存储类可以引用同一设备类。您可以为同一后备设备类提供不同的参数集合,如 xfs
和 ext4
变体。
MicroShift 默认存储类资源示例
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" 1 name: topolvm-provisioner parameters: "csi.storage.k8s.io/fstype": "xfs" 2 provisioner: topolvm.io 3 reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer 4 allowVolumeExpansion: 5
- 1
- 默认存储类示例。如果 PVC 没有指定存储类,则会假设这个类。集群中只能有一个默认存储类。不支持为此注解分配值。
- 2
- 指定要在卷中置备的文件系统。选项为 "xfs" 和 "ext4"。
- 3
- 标识哪个置备程序应该管理这个类。
- 4
- 指定是否在客户端 pod 存在或立即置备卷。选项为
WaitForFirstConsumer
和Immediate
。建议使用WaitForFirstConsumer
,以确保只为可以调度的 pod 置备存储。 - 5
- 指定从
StorageClass
置备的 PVC 允许扩展。MicroShift LVMS CSI 插件支持卷扩展,但如果这个值被设置为false
,扩展会被阻断。