RBD回收机制
Ceph RBD默认提供回收站机制trash
,也就是我们可以把块数据放在回收站,在回收站中保持一定的存储周期,当我们后期还需要使用的时候可以在回收站在拿回来。
回收站有两个好处
可以有效的防止误删除操作 (正常情况下数据就会销毁掉了,但是有了回收站,数据是存放在回收站中)
还有一种情况多发生的云存储中,例如服务器忘记续费,过期后默认情况下是直接被释放了,但是有了回收站,数据就会在回收站在为我们保留一段时间。
准备
首先我们查看一下我们的pool:
# ceph osd lspools
1 .mgr
2 kubernetes
我们要操作pool是kubernetes
。
rbd -p kubernetes ls
...
可能返回空,也可能有,但是本例我们创建一个新的10G
名为ceph-trash.img
镜像作为测试:
# rbd create kubernetes/ceph-trash.img --size 10G
创建后,查询:
# rbd -p kubernetes ls
ceph-trash.img
...
rbd文件大小
# rbd info kubernetes/ceph-trash.img
rbd image 'ceph-trash.img':
size 10 GiB in 2560 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: c70b37c970df
block_name_prefix: rbd_data.c70b37c970df
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Fri Dec 29 05:55:10 2023
access_timestamp: Fri Dec 29 05:55:10 2023
modify_timestamp: Fri Dec 29 05:55:10 2023
rbd删除操作
默认情况下,删除rbd镜像文件是直接删除,没有保留到回收站。在回收站中也没有进行保留
第一种: 直接删除,不存放到回收站
# rbd rm kubernetes/ceph-trash.img
Removing image: 100% complete...done.
第二种: 将RBD文件移动到回收站
# rbd trash move kubernetes/ceph-trash.img --expires-at 20231231
trash
表示存放到回收站move
移动操作kubernetes/ceph-trash.img
pool为kubernetes,rbd文件为ceph-trash.img--expires-at
表示释放时间,日期只可以精确到日
移动到回收站后,在正常的资源池已经看不到。但是在回收站中还可以看到
# rbd trash -p kubernetes ls
c70b37c970df ceph-trash.img
rbd回收站找回操作
前面说我们通过trash move
将rbd文件移动到回收站,例如后面我们想把rbd文件找回,可以通过下面的方式进行找回操作
# rbd trash restore -p kubernetes c70b37c970df # 恢复到kubernetes pool中
# rbd trash -p kubernetes ls # 再次查看回收站中的rbd文件
# rbd -p kubernetes ls # 查看pool中的rbd文件已经恢复
ceph-trash.img
...