Skip to main content
RunBook Academy

CephLXXXIV · Proxmox Failure ScenariosProxmox Failure Scenarios

Path redundancy with RBD

Intermediate⏱ ~17 mincephrbdip

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

Not yet marked complete on this device.

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

RequirementMechanism
Reaching the monitorsseveral monitor addresses configured
Reaching the OSDsnetwork redundancy — bonding, redundant switching
Surviving a NIC failurea bond with members on different switches
Surviving a switch failureMLAG or equivalent
Surviving an OSD failurereplication; 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 conceptRBD equivalent
Multipath daemonnone needed
Path priority and failover groupsnone
LUN maskingcephx capabilities and pools
Storage processor failoverno storage processors exist
Fabric zoningnetwork segmentation
Active/passive controllersevery OSD is active
Queue depth per pathclient-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

  1. Q1. Why does RBD have no multipath configuration?

  2. Q2. Configuring a single monitor address is acceptable since the monitors form a quorum.

  3. 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.

  4. 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