RBD回收机制

半兽人 发表于: 2023-12-29   最后更新时间: 2024-01-18 14:10:45  
{{totalSubscript}} 订阅, 466 游览

RBD回收机制

Ceph RBD默认提供回收站机制trash,也就是我们可以把块数据放在回收站,在回收站中保持一定的存储周期,当我们后期还需要使用的时候可以在回收站在拿回来。

回收站有两个好处

  1. 可以有效的防止误删除操作 (正常情况下数据就会销毁掉了,但是有了回收站,数据是存放在回收站中)

  2. 还有一种情况多发生的云存储中,例如服务器忘记续费,过期后默认情况下是直接被释放了,但是有了回收站,数据就会在回收站在为我们保留一段时间。

准备

首先我们查看一下我们的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
...
更新于 2024-01-18

查看ceph更多相关的文章或提一个关于ceph的问题,也可以与我们一起分享文章