Add a Ceph Cluster¶
Onboard an existing Ceph cluster as a storage backend for VM disks (RBD), so multiple compute nodes can read/write the same volumes for live migration and HA.
Prerequisites¶
- A healthy Ceph cluster (
ceph -sreportsHEALTH_OK). - Network reachability from every compute node to MON IPs on 3300/tcp + 6789/tcp and OSD IPs on 6800-7300/tcp.
- A Ceph user with read/write access to the pool you'll use — typically
client.libvirt.
# On a Ceph MON, create an MFCloud-scoped user:
ceph auth get-or-create client.libvirt \
mon 'profile rbd' \
osd 'profile rbd pool=mfcloud' \
mgr 'profile rbd pool=mfcloud'
# Capture the key — you'll paste it into the UI:
ceph auth get-key client.libvirt
Quick steps¶
- Settings → Ceph Clusters → + Add Cluster.
- Fill in:
- Cluster Name — friendly label (e.g.
ceph-primary). - Monitor IP(s) — comma-separated list of MON addresses.
- Pool — the RBD pool name (
mfcloudin the example above). - Client User —
libvirt(noclient.prefix in the field). - Admin Key — the key from
ceph auth get-keyabove. - Save & Test. MFCloud will:
- Store the key in the
ceph_clusterstable. - Generate a libvirt secret on every Active node with
virsh secret-define/virsh secret-set-value. - Probe MON reachability and refuse the row if it can't connect.
Once Ceph appears in the Storage picker on the Create VM modal, the cluster is wired.
Pool sizing reference¶
| Pool size | OSDs needed | Use case |
|---|---|---|
size=2 |
2+ | Lab / cost-sensitive (data loss possible on dual failure). |
size=3 |
3+ | Production default — survives one OSD failure with no degraded reads. |
EC 4+2 |
6+ | Cold-ish data, ~33 % storage overhead vs size=3's 200 %. |
Set with:
Removing a cluster¶
Settings → Ceph Clusters → row → Remove. The libvirt secret is undefined on every node and the row is dropped. VM disks that live on this Ceph pool are not deleted — rbd ls -p mfcloud will still show them and you can recover by re-adding the same cluster.