前言
Ceph RBD 快照:数据备份与恢复的基石
在云原生和虚拟化场景中,数据安全永远是绕不开的话题。Ceph 块设备(RBD)提供的快照功能,正是为数据备份与恢复而生的一种轻量级机制。本文基于 Ceph 官方文档,梳理 RBD 快照的核心概念与常用操作,帮助你在实际运维中用好这一能力。
官网
Snapshots --- Ceph Documentation
快照的增删改查-日常操作
增
1.创建快照
【方式一】
[root@ceph141 ~]# rbd snap create -p pool1 --image rbd1 --snap snap2
【方式二】
[root@ceph141 ~]# rbd snap create pool1/rbd1@snap3
2.保护快照
[root@ceph141 ~]# rbd snap protect pool1/rbd1@snap5

查
1.查看快照
【方式一】
[root@ceph141 ~]# rbd snap ls -p pool1 --image rbd1
SNAPID NAME SIZE PROTECTED TIMESTAMP
3 snap1 2 GiB Mon Oct 19 11:27:07 2026
4 snap2 2 GiB Mon Oct 19 11:33:58 2026
5 snap3 2 GiB Mon Oct 19 11:34:47 2026
【方式二】
[root@ceph141 ~]# rbd snap ls pool1/rbd1
SNAPID NAME SIZE PROTECTED TIMESTAMP
3 snap1 2 GiB Mon Oct 19 11:27:07 2026
4 snap2 2 GiB Mon Oct 19 11:33:58 2026
5 snap3 2 GiB Mon Oct 19 11:34:47 2026
2.查看快照的详细信息(是否被保护)
[root@ceph141 ~]# rbd info pool1/rbd1@snap1
改
1.回滚快照
【方式一】
[root@ceph141 ~]# rbd snap rollback -p pool1 --image rbd1 --snap snap5
【方式二】
[root@ceph141 ~]# rbd snap rollback pool1/rbd1@nap5
删
1.删除快照
[root@ceph141 ~]# rbd snap rm pool1/rbd1@snap2
Removing snap: 100% complete...done.
2.无法删除被保护的快照
未被保护的快照可以删除

3.删除某个rbd的所有快照
[root@ceph141 ~]# rbd snap purge 存储池/rbd镜像
# 删除所有的快照
案例:给rbd创建快照,通过快照还原rbd数据
环境说明
1.测试环境已经安装了ceph集群
不会安装ceph,可以参考之前博客。
使用cephadm部署ceph集群(ceph进阶之路-1.cephadm部署ceph集群)-CSDN博客
2.客户端已经挂在了ceph的rbd镜像。
推荐阅读:
测试
一.客户端环境如下


准备测试数据

二、ceph端给rbd创建快照
[root@ceph141 ~]# rbd snap create pool1/rbd1 --snap snap5
Creating snap: 100% complete...done.
[root@ceph141 ~]#
三、客户端模拟删除数据
[root@jenkins211 ~]# rm -rf /mnt/hosts
四、如何还原数据呢(重点)
1.客户端准备恢复数据前要删除块设备映射
[root@jenkins211 ~]# umount /mnt
[root@jenkins211 ~]# rbd-nbd unmap /dev/nbd0
[root@jenkins211 ~]#
2.服务端开始回滚数据
[root@ceph141 ~]# rbd snap rollback pool1/rbd1@snap5
3.客户端重新映射挂载
[root@jenkins211 ~]# rbd-nbd map pool1/rbd1
[root@jenkins211 ~]# mount /dev/nbd0 /mnt

RBD的块设备的快照数量限制
1.设置快照数量限制
[root@ceph141 ~]# rbd snap limit set pool1/rbd1 --limit 5 #最多5个快照
2.查看快照数量限制
[root@ceph141 ~]# rbd info pool1/rbd1 |egrep "snapshot_count|snapshot_limit"
snapshot_count: 0
snapshot_limit: 5
[root@ceph141 ~]#
当这个rbd快照数量超过5个后,就不能做快照了。
3.清除快照数量限制
[root@ceph141 ~]# rbd snap limit clear pool1/rbd1
[root@ceph141 ~]# rbd info pool1/rbd1 |egrep "snapshot_count|snapshot_limit"
snapshot_count: 0
[root@ceph141 ~]#
本文作者:JasonChen陈杰,转载请标注原文链接,后续会持续更新。