目录
问题
平时用k8s进行开发测试时,如果使用了rbd的snapshot,并且清理不及时的话,或者清理方法有问题,可能会遇到以下的情况:
-
VolumeSnapshotContent不多
-
但是Ceph的snapshot很多
最终可能会导致Ceph不可用,比如因为disk空间不够。
背景知识
Ceph rbd快照
Ceph的rbd快照从定义来看,就是一个只读的image。Ceph官方文档建议在创建snapshot的时候把应用的IO停掉,或者先执行fsfreeze,这样得到的就是一个数据一致可用的快照。

由于Ceph image的layering设计,可以支持在一个快照之上快速的创建出一个可以读写的clone。

一个快照的clone从行为上跟一个普通的rbd image一样,可以读写、创建clone等。
VolumeSnapshotContent和rbd快照
通过CSI创建一个PV的VolumeSnapshot之后,会得到一个VolumeSnapshotContent,例如:
[root@sandrider~ ]# kubectl get volumesnapshotcontents.snapshot.storage.k8s.io snapcontent-062c610c-0c73-4963-9909-a5ff5c480234 -o yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotContent
...
...
status:
creationTime: 1656475215498012908
readyToUse: true
restoreSize: 5368709120
snapshotHandle: 0001-0009-rook-ceph-0000000000000001-fb1a79b8-f75f-11ec-925f-bafec6769230
这里的snapshotHandle就指向一个Ceph的rbd device。进入Rook Ceph的toolbox查看某个snapshot image:
sh-4.4$ rbd ls -l replicapool | grep snap | grep fb1a79b8-f75f-11ec-925f-bafec6769230
csi-snap-fb1a79b8-f75f-11ec-925f-bafec6769230
接着可以通过rbd info来查看这个snapshot的信息:
sh-4.4$ rbd info replicapool/csi-snap-fb1a79b8-f75f-11ec-925f-bafec6769230
rbd image 'csi-snap-fb1a79b8-f75f-11ec-925f-bafec6769230':
size 5 GiB in 1280 objects
order 22 (4 MiB objects)
snapshot_count: 1
id: 1f461bdf3d46fc
block_name_prefix: rbd_data.1f461bdf3d46fc
format: 2
features: layering, deep-fla

本文介绍了在Kubernetes中使用Rook Ceph时,如何管理和清理rbd快照的问题。当VolumeSnapshotContent与Ceph快照不匹配,可能导致Ceph空间不足。文章详细阐述了Ceph rbd快照的性质,以及VolumeSnapshotContent与rbd快照的关系,并提供了删除单个和多个rbd snapshot的步骤。
最低0.47元/天 解锁文章
1974

被折叠的 条评论
为什么被折叠?



