ODF 06:ODF 块和文件存储的快照和克隆

ODF 能够为块存储和文件系统存储创建快照和克隆。

快照

ODF 安装完成后,Operator 会自动安装和控制默认的快照类,无法删除和修改。

可以为同一个 PVC 创建多个快照,但无法调度定期创建快照。
同时对于快照会有以下的限制:

  • CephFS,每个 PVC 最多可创建 100 个快照
  • RBB,每个 PVC 最多可创建 512 个快照

创建快照

快照的创建依赖 CSI 提供的 API,由 CSI 驱动程序提供快照的功能。
查看 CSI 默认提供的存储类和卷快照类:

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 的快照:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: app-data-snap
spec:
  volumeSnapshotClassName: ocs-storagecluster-rbdplugin-snapclass 
  source:
    persistentVolumeClaimName: app-data

快照不属于任何命名空间。
如果是为 CephFS 类型的存储创建快照,只需修改 volumeSnapshotClassNameocs-storagecluster-cephfsplugin-snapclass 即可。

查看已创建的快照:

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 :

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 的克隆:

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 中创建克隆:

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部