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
Steps to create a Ceph RBD snapshot:
- Check cluster health before snapshotting the image.
$ 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+cleanDelay 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
- Check which clients have the image open.
$ rbd status rbd/vm-100-disk-0 Watchers: watcher=192.0.2.21:0/4213 client.314159 cookie=18446462598732840961The 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.
- Freeze writes from the client that mounts the image.
$ 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.
- Create the snapshot from the Ceph admin host.
$ 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.
- Unfreeze writes after the snapshot command returns.
$ 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.
- List snapshots on the image and confirm the new name appears.
$ 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.
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.