Add a Ceph Cluster¶
MFCloud bootstraps and manages its own hyperconverged Ceph cluster across your compute nodes (via cephadm) — it does not onboard a pre-existing external Ceph cluster. VM disks live on Ceph RBD, so any node in the cluster can read/write the same volume for live migration and HA.
Prerequisites¶
- At least one Active compute node with a spare raw disk to dedicate as an OSD.
- Root SSH access to that node (password auth) — the bootstrap SSHes in directly.
- Network reachability between compute nodes on the Ceph MON/OSD port ranges (see Default Ports).
Bootstrap the cluster¶
- Storage → 🟢 Ceph (or wherever "Hyperconverged Storage" is offered) → Initialize Cluster.
- Fill in:
- Cluster Name — friendly label (defaults to
ceph-cluster-01). - Primary Monitor IP — the compute node
cephadmbootstraps on; becomes the first MON. - Root Password — that node's root SSH password, used once to run the bootstrap.
- Initialize Cluster. This runs in the background —
cephadm bootstrapon the primary node, creates the fleet-wide default RBD pool (vms), and creates aclient.libvirtcephx user scoped to it (mon 'profile rbd',osd 'profile rbd pool=vms').
Wire it up for VM disks¶
Once the cluster is up:
- 🔗 Link KVM to Ceph — generates the
client.libvirtlibvirt secret (virsh secret-define/secret-set-value) on every Active compute node. - Sync Secret — re-pushes that same libvirt secret; run this again any time you enroll a new compute node, since it won't have the secret until this (or Link KVM) runs on it.
- Init HA Storage — finishes wiring the default
vmspool for cross-node HA use.
Once done, Ceph appears in the Storage picker on the Create VM modal.
Adding OSDs (disks)¶
Storage → Ceph OSDs → Ceph tab → Add Ceph Disk (OSD):
- Pick a Compute Node — MFCloud scans it for raw, unpartitioned disks.
- Click a disk in Available Raw Disks to select it (adding it to Ceph permanently wipes existing data on the drive).
- Format & Add to Ceph Cluster.
Additional pools (per-cluster isolation)¶
Every VM authenticates to Ceph as client.libvirt regardless of which pool its disk lives in, so a new pool works out of the box for any VM once created — no separate cephx setup needed. In the same Ceph OSDs → Ceph tab:
- New Pool Name, Replication (default 3), PGs (default 128).
- Create Pool.
- Assign it to a cluster from that cluster's Edit modal (Dedicated Ceph Pool field, see Organize Hosts into Datacenters & Clusters) so VMs placed in that cluster deploy into it instead of the shared
vmspool.
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 %. |