CephLXXXIV · Proxmox Failure ScenariosProxmox Failure Scenarios
Path redundancy with RBD
What you'll learn
- Explain why RBD has no single path to fail over
- Identify what path redundancy RBD does require
- Recognise the SAN assumptions that do not apply
- Configure the redundancy that matters
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
Why this matters in production
Teams arriving from SAN storage look for multipath configuration and do not find it. The reason is architectural rather than an omission.
Why there is no single path
flowchart TD
C[Client] --> O1[OSD 12]
C --> O2[OSD 31]
C --> O3[OSD 47]
C --> O4[OSD 8]
C --> O5[... every OSD holding its data]
A SAN client talks to one or two storage processors, so path redundancy means having a second route to them. An RBD client computes placement with CRUSH and connects directly to every OSD holding its data — there is no controller, no single endpoint, and therefore nothing to fail over between.
# a client's connections
ss -tn | grep -c ':68[0-9][0-9]'
If an OSD becomes unreachable, the client uses the replicas. That is not failover; it is the normal read path.
What RBD does require
| Requirement | Mechanism |
|---|---|
| Reaching the monitors | several monitor addresses configured |
| Reaching the OSDs | network redundancy — bonding, redundant switching |
| Surviving a NIC failure | a bond with members on different switches |
| Surviving a switch failure | MLAG or equivalent |
| Surviving an OSD failure | replication; automatic |
# multiple monitors in the storage configuration
monhost 10.0.2.11,10.0.2.12,10.0.2.13
The monitor list is the closest analogue to multipath: the client tries each until one answers. Configuring a single monitor address is the actual single point of failure that teams should look for.
grep monhost /etc/pve/storage.cfg
SAN assumptions that do not transfer
| SAN concept | RBD equivalent |
|---|---|
| Multipath daemon | none needed |
| Path priority and failover groups | none |
| LUN masking | cephx capabilities and pools |
| Storage processor failover | no storage processors exist |
| Fabric zoning | network segmentation |
| Active/passive controllers | every OSD is active |
| Queue depth per path | client-side concurrency settings |
# there is nothing to configure here
multipath -ll # returns nothing for RBD, correctly
Configuring what matters
# bond with members on different switches
cat /proc/net/bonding/bond0 | grep -E 'Mode|Hash Policy|MII Status'
# all monitors listed
pvesm set ceph-vms --monhost '10.0.2.11,10.0.2.12,10.0.2.13'
# verify the client can reach all monitors
for m in 10.0.2.11 10.0.2.12 10.0.2.13; do
timeout 3 bash -c "cat < /dev/null > /dev/tcp/$m/3300" && echo "$m OK" || echo "$m FAIL"
done
Quiz
Knowledge check · 4 questions
Q1. Why does RBD have no multipath configuration?
Q2. Configuring a single monitor address is acceptable since the monitors form a quorum.
Q3. Review storage redundancy after migrating from SAN.
A team migrating from a SAN to Ceph asks how to configure multipath for their RBD storage. They also note the storage entry lists one monitor address.
Q4. Map three SAN concepts to their Ceph equivalents.
Passing score: 75%. Answers are checked in this browser.
Production discipline
List every monitor address in the client configuration — it is RBD’s only path-like construct and a single address is a genuine single point of failure. Direct SAN path-redundancy thinking toward network bonding and switch redundancy, which is where it actually applies.
Cross-course references
- Kubernetes: service discovery replaces path management in the same way
- Linux: distributed storage removes the controller that multipath exists to route around