第 9 章 在目标卷中重新声明空间
已删除的文件或零数据区块有时会在 Ceph 集群上占用存储空间,从而导致报告可用的存储空间不准确。重新声明空间操作通过对目标卷执行以下操作来删除此类差异:
-
fstrim
- 此操作在处于Filesystem
模式的卷上执行,且仅在执行重新声明空间操作时将其挂载到 pod 时。 -
RBD sparsify
- 当卷没有附加到任何 pod 时,会执行此操作,并回收由 4M 分散的零数据占用的空间。
注意
- 重新声明空间操作仅由 Ceph RBD 卷支持。
- 回收空间操作涉及执行时的性能损失。
对于升级的集群,请在继续操作前执行以下命令。
$ oc patch cm rook-ceph-operator-config -n openshift-storage -p $'data:\n "CSI_ENABLE_CSIADDONS": "true”'
您可以使用以下方法之一重新声明空间:
- 使用注解 PersistentVolumeClaims 启用重新声明空间操作(推荐使用方法启用重新声明空间操作)
- 使用 ReclaimSpaceJob 启用重新声明空间操作
- 使用 ReclaimSpaceCronJob 启用重新声明空间操作
9.1. 使用注解 PersistentVolumeClaim 启用重新声明空间操作
使用此流程来注解 PersistentVolumeClaim
,以便它可以根据给定的调度自动调用重新声明空间操作。
注意
- schedule 值的格式与 Kubernetes CronJob 相同,用于设置重复操作请求的和/或间隔。
-
推荐的调度间隔为
@weekly
。如果调度间隔值为空或无效格式,则默认调度值设置为@weekly
。 -
每个调度的操作之间支持的最小间隔至少为 24 小时。例如,
@daily
(每天的 00:00)或0 3 *
(每天为 3:00)。 -
在非高峰、维护窗口或工作负载输入/输出应低时调度
ReclaimSpace
操作。 -
当修改调度时
,ReclaimSpaceCronJob 会被重新创建。当注解被删除时,它会被自动删除。
流程
获取持久性卷声明(PVC)详情。
$ oc get pvc data-pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE data-pvc Bound pvc-f37b8582-4b04-4676-88dd-e1b95c6abf74 1Gi RWO ocs-storagecluster-ceph-rbd 20h
将注解
reclaimspace.csiaddons.openshift.io/schedule=@monthly
添加到 PVC 以创建reclaimspacecronjob
。$ oc annotate pvc data-pvc "reclaimspace.csiaddons.openshift.io/schedule=@monthly"
persistentvolumeclaim/data-pvc annotated
验证
reclaimspacecronjob
是否已创建,格式为 "< pvc-name>-xxxxxxx"。$ oc get reclaimspacecronjobs.csiaddons.openshift.io
NAME SCHEDULE SUSPEND ACTIVE LASTSCHEDULE AGE data-pvc-1642663516 @monthly 3s
修改计划,使其自动运行此任务。
$ oc annotate pvc data-pvc "reclaimspace.csiaddons.openshift.io/schedule=@weekly" --overwrite=true
persistentvolumeclaim/data-pvc annotated
验证
reclaimspacecronjob
的调度是否已修改。$ oc get reclaimspacecronjobs.csiaddons.openshift.io
NAME SCHEDULE SUSPEND ACTIVE LASTSCHEDULE AGE data-pvc-1642664617 @weekly 3s