ODF 能够为块存储和文件系统存储创建快照和克隆。
快照 ODF 安装完成后,Operator 会自动安装和控制默认的快照类,无法删除和修改。
可以为同一个 PVC 创建多个快照,但无法调度定期创建快照。 同时对于快照会有以下的限制:
CephFS,每个 PVC 最多可创建 100 个快照
RBB,每个 PVC 最多可创建 512 个快照
创建快照 快照的创建依赖 CSI 提供的 API,由 CSI 驱动程序提供快照的功能。 查看 CSI 默认提供的存储类和卷快照类:
1 2 3 4 5 6 7 8 9 oc get sc | egrep '^NAME|csi' NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ocs-storagecluster-ceph-rbd openshift-storage.rbd.csi.ceph.com Delete Immediate true 5d19h ocs-storagecluster-cephfs openshift-storage.cephfs.csi.ceph.com Delete Immediate true 5d19h oc get volumesnapshotclasses NAME DRIVER DELETIONPOLICY AGE ocs-storagecluster-cephfsplugin-snapclass openshift-storage.cephfs.csi.ceph.com Delete 5d19h ocs-storagecluster-rbdplugin-snapclass openshift-storage.rbd.csi.ceph.com Delete 5d19h
通过 YAML 资源定义为使用 RBD 类型存储的 app-data PVC 创建一个名为 app-data-snap 的快照:
1 2 3 4 5 6 7 8 apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: app-data-snap spec: volumeSnapshotClassName: ocs-storagecluster-rbdplugin-snapclass  source: persistentVolumeClaimName: app-data
快照不属于任何命名空间。 如果是为 CephFS 类型的存储创建快照,只需修改 volumeSnapshotClassName 为 ocs-storagecluster-cephfsplugin-snapclass 即可。
查看已创建的快照:
1 2 3 oc get volumesnapshot NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE app-data-snap true app-data 1Gi ocs-storagecluster-rbdplugin-snapclass snapcontent-44009b59-83e9-458b-af67-c0a92b2aac45 66s 67s
在 Dashboard 中也可以创建和查看快照:
恢复快照 恢复快照时会创建一个新的 PVC,恢复的 PVC 将独立于快照和父 PVC。
通过 YAML 资源定义从快照中创建一个新的 PVC :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 apiVersion: v1 kind: PersistentVolumeClaim metadata:  name: app-data-restore namespace: app-demo labels: app: app-data-snap spec: accessModes:  - ReadWriteOnce storageClassName: ocs-storagecluster-ceph-rbd  dataSource:  apiGroup: snapshot.storage.k8s.io kind: VolumeSnapshot name: app-data-snap resources: requests: storage: 1Gi
通过 dataSource 参数来指定快照创建新的 PVC。 后续就可以在应用中使用新的 PVC app-data-restore 了。
在 Dashboard 中恢复快照:
克隆 创建克隆的前提是源 PVC 必须处于 Bound 状态,且不得处于使用的状态。
通过在 dataSource 参数中引用源 PVC 来创建 PVC 的克隆:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 apiVersion: v1 kind: PersistentVolumeClaim metadata:  name: app-data-clone namespace: app-demo labels: app: postgresql-data-clone spec: accessModes:  - ReadWriteOnce storageClassName: ocs-storagecluster-ceph-rbd  dataSource:  kind: PersistentVolumeClaim name: app-data resources: requests: storage: 1Gi
在 Dashboard 中创建克隆:
评论· · · · · ·