Ceph RBD snapshots preserve the state of a block image at a specific point in time so a risky change can be tested without losing the previous disk contents. They are useful before package upgrades, application migrations, VM template changes, or any operation where a rollback or clone may be needed.
An RBD snapshot is created from an admin host with rbd snap create and identified as pool/image@snapshot. Ceph stores the snapshot as a read-only checkpoint over the existing image, so creating it is fast, but the snapshot reflects only the write state visible to the cluster at that instant.
RBD does not understand the file system inside the image. Freeze the mounted file system, stop the virtual machine, or use a guest-agent freeze before the snapshot when application-level consistency matters, then unfreeze writes immediately after the snapshot is created.
Related: How to create a Ceph RBD pool
Related: How to map a Ceph RBD image on Linux
Related: How to roll back a Ceph RBD image to a snapshot
$ ceph -s
cluster:
id: 11111111-2222-3333-4444-555555555555
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3
mgr: ceph-node1(active), standbys: ceph-node2
osd: 9 osds: 9 up, 9 in
data:
pools: 4 pools, 96 pgs
objects: 262.15k objects, 1.1 TiB
usage: 3.4 TiB used, 56 TiB / 60 TiB avail
pgs: 96 active+clean
Delay the snapshot when the cluster reports degraded, backfilling, remapped, or stuck PGs. A snapshot records image state, but it does not fix unhealthy placement or incomplete recovery.
Related: How to check Ceph cluster health
$ rbd status rbd/vm-100-disk-0
Watchers:
watcher=192.0.2.21:0/4213 client.314159 cookie=18446462598732840961
The watcher line identifies an active librbd or kernel RBD client. Coordinate the freeze or stop operation on the client that owns the mounted file system, VM disk, or application workload.
$ sudo fsfreeze --freeze /mnt/rbd-data
Run fsfreeze on the client host that has the file system mounted. Skip this step when rbd status shows no watchers, or use the hypervisor's qemu-guest-agent freeze mechanism when the image is attached to a virtual machine.
Keep the freeze window short. Applications that write to the frozen file system can block until it is unfrozen.
$ rbd snap create rbd/vm-100-disk-0@before-upgrade
No output indicates the snapshot was created. The snapshot specification is pool/image@snapshot; use a snapshot name tied to the protected change, such as before-upgrade.
$ sudo fsfreeze --unfreeze /mnt/rbd-data
Restart the paused workload or thaw the virtual machine guest at the equivalent point when fsfreeze was not the freeze mechanism.
$ rbd snap ls rbd/vm-100-disk-0 SNAPID NAME SIZE PROTECTED TIMESTAMP 12 before-upgrade 64 GiB Mon Jun 29 07:12:44 2026
Leave the snapshot unprotected unless it will become a clone parent. rbd snap protect rbd/vm-100-disk-0@before-upgrade prevents deletion until the snapshot is unprotected and any child clones are removed.