第 9 章 在目标卷中重新声明空间

您可以使用目标卷中的重新声明空间操作访问实际可用空间。当持久性卷上删除文件或数据,且此操作可用于 Ceph RBD 时,重新声明操作时,可以使用可用的存储空间。由于对象仍在 RBD 设备上,而且存储没有发布到 Ceph 集群,这为实际可用存储空间提供了错误的信息。

回收空间操作会在 RBD 设备上触发 rbd sparsify,这会为零镜像扩展回收空间。对于文件系统模式,fstrim 也在块设备上挂载的文件系统上执行。当在文件系统上启用 fstrim 后,您可以使用以下模式创建一个基于 Ceph RBD 的 ReadWriteOnce(RWO)访问 PVC:

  • 卷模式块
  • 卷模式文件系统
注意

对于新安装的集群,默认启用重新声明空间操作。

要为升级的集群启用重新声明空间操作,在 openshift-storage 命名空间中的 rook-ceph-operator-override configmap 中设置 CSI_ENABLE_CSIADDONS: "true "。

$ oc patch cm rook-ceph-operator-config -n openshift-storage -p $'data:\n "CSI_ENABLE_CSIADDONS": "true"'

您可以使用以下三种方法之一重新声明空间:

  • 使用 ReclaimSpaceJob 启用重新声明空间操作
  • 使用 ReclaimSpaceCronJob 启用重新声明空间操作
  • 使用注解 PersistentVolumeClaims 启用重新声明空间操作(红帽建议使用此方法启用重新声明空间操作)

9.1. 使用 ReclaimSpaceJob 启用重新声明空间操作

ReclaimSpaceJob 是一个命名空间自定义资源,旨在在目标卷中调用重新声明空间操作。这是一个时间方法,用于立即启动回收空间操作。您必须重复创建 ReclaimSpaceJob CR,以便在需要时重复回收空间操作。

流程

  1. 创建并应用以下自定义资源以回收空间操作:

    apiVersion: csiaddons.openshift.io/v1alpha1
    kind: ReclaimSpaceJob
    metadata:
      name: sample-1
    spec:
      target:
        persistentVolumeClaim: pvc-1

    以上 yaml 中使用的变量如下:

    • target 表示操作要在其上执行的卷目标。

      • persistentVolumeClaim 包含指示 PersistentVolumeClaim 的名称的字符串。
    • backoffLimit 指定重新声明空间操作失败前的最大重试次数。如果没有指定,则默认值为 6。允许的最大值和最小值为 60 和 0。
    • retryDeadlineSeconds 指定操作可能会与开始时间相关的持续时间。其值必须是正整数,以秒为单位。如果没有指定,则默认为 600 秒。允许的最大值为 1800。
  2. 在完成操作后删除客户资源。