Skip to main content
RunBook Academy

CephCV · Backup StrategyBackup Strategy

Setting RPO and RTO before designing anything

Intermediate⏱ ~18 mincephrbd

What you'll learn

  • Define RPO and RTO precisely
  • Derive them from business impact
  • Design backup to meet them
  • Measure whether they are actually met

Prerequisites

None — start here.

Verified against Ceph Tentacle 20.2.x · Ceph Squid 19.2.x (supported previous) · cephadm matches the verified Ceph release · podman 4.x · csi-rbd and csi-cephfs current · RBD / CephFS / RGW current (matches Ceph release) · Linux kernel 5.15+ (5.10 minimum) · Ubuntu 24.04 LTS (Ceph host baseline) · Debian 12 (Bookworm) (Ceph host baseline) · Rocky Linux / RHEL / AlmaLinux 9.x (Ceph host baseline) · Proxmox VE 9.x (cross-course integration) · Kubernetes 1.31+ (cross-course integration) · 2026-08-18

Not yet marked complete on this device.

Why this matters in production

A backup design without stated targets cannot be evaluated, so it is evaluated after the incident, against targets invented at that moment.

Definitions

RPO — Recovery Point Objective
  How much data loss is acceptable.
  Determined by backup frequency.

RTO — Recovery Time Objective
  How long recovery may take.
  Determined by restore mechanics and data volume.
TargetSet byCost driver
RPObackup or replication frequencywrite amplification, bandwidth
RTOrestore path and data volumebandwidth, parallelism, preparation
They are independent. A daily backup restored in ten minutes has a
24-hour RPO and a 10-minute RTO.

Deriving them from impact

Ask the application owner:
  if we lose the last N of changes, what happens?
  if this is unavailable for N hours, what happens?
Then find where the answer changes materially.
WorkloadTypical RPOTypical RTO
Financial transactionsnear zerominutes
A production databaseminutes to an houran hour
VM root disksa dayhours
A file sharea dayhours
Archival dataa weekdays
A rebuild-from-source environmentnot applicablerebuild time
The last row matters: some data has no RPO because it is reproducible.
Identifying it removes cost from the design.

Designing to meet them

# RPO drives frequency — substitute your own pool and image:
POOL=rbd-vms
IMAGE=vm-disk-01

rbd snap create "$POOL/$IMAGE@$(date +%Y%m%d-%H%M)"   # hourly → 1h RPO
# RBD mirroring gives a much lower RPO
POOL=rbd-vms
IMAGE=vm-disk-01
rbd mirror image enable ${POOL}/${IMAGE} snapshot
rbd mirror snapshot schedule add --pool ${POOL} --image ${IMAGE} 15m
rbd mirror image status ${POOL}/${IMAGE}
RPO targetMechanism
24 hoursnightly export
1 hourhourly snapshot plus incremental export
Minutessnapshot-based mirroring on a schedule
Near zerojournal-based mirroring
# RTO drives the restore path
POOL=rbd-vms

rbd import /backups/image01.raw "$POOL"/image01-restored
RTO targetRequirement
Daysany restore path
Hourssufficient bandwidth; a tested procedure
Under an houra warm copy already on the cluster or the peer
Minutesa live replica, promoted rather than restored
An RTO shorter than the time to move the data means the data must
already be where it is needed.

Measuring

# actual RPO: the age of the newest usable copy
POOL=rbd-vms
IMAGE=vm-disk-01

rbd snap ls "$POOL/$IMAGE" --format json | python3 -c '
import sys,json
s = json.load(sys.stdin)
print("snapshots:", len(s), " newest:", s[-1]["name"] if s else "none")'
# actual RTO: measured, not estimated
POOL=rbd-vms

time rbd import /backups/image01.raw "$POOL"/rto-test
rbd rm "$POOL"/rto-test
An unmeasured RTO is a guess, and it is always optimistic. Measuring it
once per year against a representative dataset is what makes it a
commitment.

Quiz

Knowledge check · 4 questions

  1. Q1. Why is measured RTO always longer than estimated RTO?

  2. Q2. RPO and RTO are determined by the same design decisions.

  3. Q3. Design backup from stated targets.

    A production database has a stated RTO of 15 minutes and holds 8 TiB. The proposed design is a nightly export to a backup server on a 10 Gbit link.

  4. Q4. What kind of data has no meaningful RPO?

Passing score: 75%. Answers are checked in this browser.

Production discipline

State RPO and RTO before designing, and measure RTO by rehearsing the whole sequence rather than estimating the transfer — the transfer is frequently the smaller half. Where the RTO is shorter than the transfer time, the design must place the data in advance rather than move it.

Cross-course references

  • Kubernetes: recovery objectives drive whether you restore or fail over
  • Linux: an unrehearsed recovery time is an estimate, not a commitment