数据卷快照¶
在 HwameiStor 中,它允许用户创建数据卷的快照(VolumeSnapshot),且可以基于数据卷快照进行还原、回滚操作。
Note
目前仅支持对非高可用 LVM 类型数据卷创建快照。
为了避免数据不一致,请先暂停或者停止 I/O 然后再打快照。
请按照以下步骤创建 VolumeSnapshotClass 和 VolumeSnapshot 来使用它。
创建新的 VolumeSnapshotClass¶
默认情况下,HwameiStor 在安装过程中不会自动创建这样的 VolumeSnapshotClass,因此您需要手动创建如下 VolumeSnapshotClass。
kind: VolumeSnapshotClass
apiVersion: snapshot.storage.k8s.io/v1
metadata:
name: hwameistor-storage-lvm-snapshot
annotations:
snapshot.storage.kubernetes.io/is-default-class: "true"
parameters:
snapsize: "1073741824" # 指定创建卷快照的大小
driver: lvm.hwameistor.io
deletionPolicy: Delete
Note
如果不指定 snapsize 参数,那么创建的快照大小和源卷的大小一致。
创建 VolumeSnapshotClass 后,您可以使用它来创建 VolumeSnapshot。
使用 VolumeSnapshotClass 创建 VolumeSnapshot¶
示例 VolumeSnapshot 如下:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: snapshot-local-storage-pvc-lvm
spec:
volumeSnapshotClassName: hwameistor-storage-lvm-snapshot
source:
persistentVolumeClaimName: local-storage-pvc-lvm # 指定要创建快照的 PVC
创建 VolumeSnapshot 后,您可以使用如下命令检查 VolumeSnapshot。
$ kubectl get vs
NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE
snapshot-local-storage-pvc-lvm true local-storage-pvc-lvm 1Gi hwameistor-storage-lvm-snapshot snapcontent-0fc17697-68ea-49ce-8e4c-7a791e315110 53y 2m57s
创建 VolumeSnapshot 后,您可以使用如下命令检查 HwameiStor 本地卷快照。
$ kubectl get lvs
NAME CAPACITY SOURCEVOLUME STATE MERGING INVALID AGE
snapcontent-0fc17697-68ea-49ce-8e4c-7a791e315110 1073741824 pvc-967baffd-ce10-4739-b996-87c9ed24e635 Ready 5m31s
- CAPACITY:快照的容量大小
- SOURCEVOLUME:快照的源卷名称
- MERGING:快照是否处于合并状态(一般由 回滚操作 触发)
- INVALID:快照是否失效(一般在 快照容量写满 触发)
- AGE:快照真实创建的时间(不同于 CR 创建的时间,这个时间是底层快照数据卷的创建时间)
创建 VolumeSnapshot 后,您可以对 VolumeSnapshot 进行还原、回滚操作。
对卷快照进行还原操作¶
可以创建 PVC,对卷快照执行还原操作:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-storage-pvc-lvm-restore
spec:
storageClassName: local-storage-hdd-lvm
dataSource:
name: snapshot-local-storage-pvc-lvm
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
对卷快照进行回滚操作¶
Note
对快照进行回滚必须先 停止源卷的 I/O ,比如先停止应用,等待回滚操作完全结束, 并 确认数据一致性 之后再使用回滚后的数据卷。
可以通过创建资源 LocalVolumeSnapshotRestore,对卷快照执行回滚操作:
apiVersion: hwameistor.io/v1alpha1
kind: LocalVolumeSnapshotRestore
metadata:
name: rollback-test
spec:
sourceVolumeSnapshot: snapcontent-0fc17697-68ea-49ce-8e4c-7a791e315110 # 指定要进行回滚操作的本地卷快照
restoreType: "rollback"
对创建的 LocalVolumeSnapshotRestore 进行观察,可以通过状态了解整个回滚的过程。回滚结束后,对应的 LocalVolumeSnapshotRestore 会被删除。
$ kubectl get LocalVolumeSnapshotRestore -w
NAME TARGETVOLUME SOURCESNAPSHOT STATE AGE
restore-test2 pvc-967baffd-ce10-4739-b996-87c9ed24e635 snapcontent-0fc17697-68ea-49ce-8e4c-7a791e315110 Submitted 0s
restore-test2 pvc-967baffd-ce10-4739-b996-87c9ed24e635 snapcontent-81a1f605-c28a-4e60-8c78-a3d504cbf6d9 InProgress 0s
restore-test2 pvc-967baffd-ce10-4739-b996-87c9ed24e635 snapcontent-81a1f605-c28a-4e60-8c78-a3d504cbf6d9 Completed 2s