Skip to main content
RunBook Academy

CephCXIX · Disaster Recovery ArchitectureDisaster Recovery Architecture

Measuring the restore time you actually have

Intermediate⏱ ~17 minrbdceph

What you'll learn

  • Instrument a restore drill by phase
  • Identify which phase actually dominates
  • Measure under contention rather than in isolation
  • Feed the measurement back into the architecture

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

An RTO nobody has measured is an estimate of the transfer time, and the transfer is rarely the largest term. Drills exist to replace the estimate with a number.

Instrumenting by phase

PhaseTypically assumedFrequently measured
decide to restore045 min
locate and validate the backup5 min40 min
provision the target10 min90 min
transfer the data60 min75 min
application-level recovery15 min110 min
validate and cut over10 min60 min
total1 h 407 h
ts() { date -Is; }
ts; rbd import /backup/vm-104.img rbd/vm-104-drill; ts
rbd -p rbd du vm-104-drill
/usr/bin/time -v rbd import /backup/vm-104.img rbd/vm-104-drill \
  2> /secure/drills/2026-Q3-import.log

Measuring under contention

ceph -s | grep -A2 'io:'
ceph osd pool stats rbd

A restore into an idle lab measures the tool. A restore into a cluster carrying production load measures the design — the same import competes for the same OSDs the surviving workloads are using, and recovery traffic may be running alongside it.

Condition during the drillEffect on the measured transfer
idle clusteroptimistic; the number you will not get
production loadrealistic for a partial failure
production load plus backfillrealistic for the event you are rehearsing
restore target on the same OSDs as the sourcethe two compete directly
# what headroom exists before the drill starts
ceph osd pool stats
ceph -s | grep -E 'recovery|client'

Removing the crutches

Perform the drill without the primary site's DNS, its credential store,
its orchestration, and its runbook. Anything the drill borrows from the
running estate is a dependency it did not test.
# resolve by address, authenticate from the sealed offline copy
curl -sf https://203.0.113.40/healthz
rclone --config /secure/drill/rclone.conf copy offsite:acme-backup/vm-104.img /restore/

What the measurement changes

FindingArchitectural response
decision time dominatespre-authorise restore for named scenarios
provisioning dominateskeep a pre-provisioned target
transfer dominatesadd a local tier or more bandwidth
application recovery dominatesmore frequent consistent points
validation dominateswrite the validation script in advance
ceph df
rbd -p rbd rm vm-104-drill

Rotate the scope: each quarter, drill something that has not been drilled before, and prefer whatever nobody has ever restored.

Quiz

Knowledge check · 4 questions

  1. Q1. Why record each phase of a restore drill separately?

  2. Q2. A restore drill that uses the production site's DNS, credential store and orchestration has not tested the DR design.

  3. Q3. Convert a claimed RTO into a measured one.

    The DR document claims a two-hour RTO for a 4 TiB RBD image. No restore has been performed. The team proposes to validate it by timing an `rbd import` in the lab.

  4. Q4. What should a restore drill deliberately refuse to use?

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

Production discipline

Timestamp every phase and publish them separately; a single total hides which of decision, provisioning, transfer, recovery and validation is the one to fix. Refuse the production estate’s DNS, credentials and orchestration during the drill — anything borrowed is a dependency that was never tested.

Cross-course references

  • Kubernetes: a restore rehearsal on a healthy control plane exercises none of the failure it rehearses
  • Linux: measure each stage; totals conceal the stage that is worth optimising