Proxmox VEXIV · Disaster RecoveryDR operations
DR test, exercise, and continuous improvement
What you'll learn
- Distinguish tabletop, simulation, and live DR exercises
- Schedule and budget DR exercises
- Measure DR readiness
- Continuously improve the DR plan
Prerequisites
Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12
Why this matters in production
A DR plan that has not been exercised is a hope, not a plan. This lesson teaches the exercise cadence and the continuous improvement loop.
Exercise types
| Type | Cost | Risk | Value |
|---|---|---|---|
| Tabletop | Low | None | Identifies procedural gaps |
| Simulation (partial) | Medium | Low | Validates specific procedures |
| Live drill (full) | High | High (if real systems) | True confidence |
Tabletop
The team sits around a table. The facilitator presents a scenario. The team walks through the runbook step by step. Identifies gaps, missing information, ambiguities.
Cost: 1-2 hours of team time. No production impact.
Simulation
Some steps are actually performed. Examples:
- Restore a VM from PBS to the DR site.
- Update DNS records (then revert).
- Failover the database (then revert).
Cost: hours to a day. Limited production impact.
Live drill
Full activation of DR. Production traffic redirected to DR for the duration.
Cost: significant. Some risk of disruption. Reserved for the most critical exercises.
What each type can and cannot find
The cadence advice is easy to follow and easy to follow uselessly. Four quarterly tabletops that never touch a system will not find a single one of the failures in the second column.
| Failure | Tabletop | Simulation | Live drill |
|---|---|---|---|
| Nobody knows who declares a disaster | ✔ | ✔ | ✔ |
| The runbook references a wiki hosted at the primary site | ✔ | ✔ | ✔ |
| Recovery order has a missing dependency | ✔ often | ✔ | ✔ |
| Restore credentials have expired | ✘ | ✔ | ✔ |
| The PBS fingerprint in the document is wrong | ✘ | ✔ | ✔ |
| Real restore throughput is half the assumed figure | ✘ | ✔ | ✔ |
| The DR site cannot resolve names without the primary | ✘ | ✔ | ✔ |
| A bridge is missing on the DR nodes | ✘ | ✔ | ✔ |
| Encryption keys are not actually escrowed | ✘ | ✔ | ✔ |
| The application does not work when its dependencies are at DR | ✘ | partly | ✔ |
| DNS cutover takes longer than the TTL suggests | ✘ | ✘ | ✔ |
| Capacity at DR is insufficient under real load | ✘ | ✘ | ✔ |
The column boundary is the point: a tabletop tests the plan; a simulation tests the systems; a live drill tests the assumptions. An organisation doing only tabletops has verified that its document is coherent, which is worth having and is not the same as being able to recover.
The cheapest useful simulation is one restore. Pick a guest, restore it from the offsite datastore to a scratch VMID at the DR site using only DR-side credentials and the escrowed key, time it, and destroy it. It takes an hour and it exercises seven of the rows above.
set -euo pipefail
DRILL=9500
SNAP='pbs-dr:backup/vm/101/2026-08-12T02:00:00Z'
START=$(date +%s)
# Deliberately using DR-side credentials only.
pvesm status --storage pbs-dr
qmrestore "$SNAP" "$DRILL" --storage local-zfs --unique 1
qm set "$DRILL" --net0 "virtio,bridge=vmbr-isolated"
qm start "$DRILL"
# Wait for the guest agent, which proves the OS is actually up.
for _ in $(seq 1 60); do
qm agent "$DRILL" ping >/dev/null 2>&1 && break
sleep 5
done
END=$(date +%s)
printf 'restore-to-responsive: %d seconds\n' "$(( END - START ))"
qm stop "$DRILL"
qm destroy "$DRILL" --purge 1Write that number down. It is the only honest input to the RTO arithmetic in RPO, RTO and dependency modelling, and it is the number the person who wrote your SLA does not have.
Exercise cadence
| Exercise | Cadence | Audience |
|---|---|---|
| Tabletop | Quarterly | All responders |
| Simulation | Monthly or quarterly | Specific teams |
| Live drill | Annually | Full team + leadership |
Measuring DR readiness
Track these metrics:
- RTO actual: how long did recovery actually take?
- RPO actual: how much data was actually lost?
- Tabletop completion rate: % of planned tabletops that happened.
- Runbook freshness: when was the runbook last updated?
- Exercise outcomes: pass/fail counts and gap inventory.
Continuous improvement
After every exercise or incident:
- Document what happened.
- Identify gaps.
- Update the runbook.
- Track remediation (who, when, what).
- Verify in the next exercise.
flowchart LR
A[Exercise] --> B[Document]
B --> C[Identify gaps]
C --> D[Update runbook]
D --> E[Track remediation]
E --> F[Next exercise]
F --> A
Production considerations
Common mistakes
- Treating a single successful drill as proof of readiness.
- Not following up on identified gaps.
- Letting the runbook go stale between exercises.
Key takeaways
- Tabletops quarterly; live drills annually.
- Measure RTO/RPO actuals vs targets.
- Improve continuously.
Knowledge check
Knowledge check · 5 questions
Q1. Which DR exercise type is the cheapest and most frequent?
Q2. A single successful drill proves the DR plan works.
Q3. What should happen after every DR exercise?
Q4. An organisation has run four quarterly tabletops and every one passed. Which class of failure remains entirely unverified?
Q5. Which changes make a DR drill more informative? Select all that apply.
Passing score: 75%. Answers are checked in this browser.