rook-ceph namespace — the operator chart and the cluster chart, with the cluster release gated on the operator being ready so the CephCluster resource is never applied before its CRDs and controller exist. The namespace is labelled for privileged pod security automatically; Ceph’s daemons need capabilities a baseline namespace rejects.
Chart versions are pinned, never floating — the version dropdown offers newer releases, but moving off the pinned default is a deliberate click, not something a repository update can do to you. Operator and cluster charts must stay in lockstep.

The disk inventory
The install starts from the per-node disk inventory: every block device on every node with model, size, transport, and a lifecycle state that decides whether it can become an OSD:
A typical node mixes all of it — a small system SSD, a large NVMe data disk, and (on SAN-attached nodes) FC LUNs:
san flag, the LUN’s WWID, and the stable multipath alias with its live path count. A LUN reachable over two FC paths appears as two /dev/sd* devices but one multipath device — every leg of a consumed LUN reports active-osd, so you cannot double-select a LUN through its second path. The same inventory backs the Infrastructure page’s SAN LUN panel.
Installing on local disks
Pick disks per node and set the cluster shape:
Apply wires the namespace, repository, and both HelmReleases; the status panel then tracks the release conditions and, once the cluster forms, live Ceph health.
Disk preparation — the wipe
Rook refuses a disk that carries any prior signature, so disks instale-data are queued for a wipe automatically as part of Apply. The wipe runs as a privileged per-node job that discards the whole device, with a fallback that zeroes the specific offsets where modern Ceph keeps redundant BlueStore label copies — a surface-level wipe is not enough, because backup labels deep in the disk survive it and Ceph still recognizes the old OSD, yielding zero new OSDs on a disk that looks clean. For SAN LUNs the wipe targets the multipath device, once per LUN, never per path.
Force wipe is the explicit override: wipe every selected disk, not just the auto-detected stale ones. Reach for it on a re-onboard where signature detection has nothing to scan yet, or when a previous teardown left disks in a state detection cannot classify. It is destructive by design — that is the point.
SAN LUN OSDs — the san device class
On a SAN-attached supervisor the same wizard consumes FC array LUNs as a second OSD tier in the same Ceph cluster:
- The array carves a few large LUNs per node once (a day-0 array operation); after that the array’s API is never used at runtime — provisioning, snapshots, and clones are Ceph operations.
- Selected SAN LUNs are always addressed by their multipath by-id alias, never a
/dev/sdXname — path names renumber on reboot and would double-consume a dual-path LUN. - SAN OSDs join CRUSH under the
sandevice class, next to the localnvmeOSDs. Enabling Create SAN pool rendersceph-san-blockpoolpinned to that class plus theceph-san-blockStorageClass; the local pool stays pinned to its own class, so neither tier’s data ever migrates onto the other. - The SAN pool’s replica size defaults to 2, not 3: the array’s RAID already protects the disks — Ceph’s replica exists for node, path, and OSD availability, and a third copy of array-grade capacity buys little.
Status — two layers
Release state is the standard component status: both HelmReleases withready, revision, and conditions, plus the full desired configuration round-tripped from the cluster — the wizard rehydrates its form and disk picker from this, so a re-apply only expresses what you changed.
Ceph health is the deeper read, live from the CephCluster and the Ceph daemons:
HEALTH_WARN with named warning codes is a cluster telling you exactly what degraded — here two OSDs down and placement groups running below replica count — while pools can simultaneously be Ready. Warnings name the fault; message carries the operator’s last provisioning error when the cluster is still forming.
Recover rollback
StorageClass parameters are immutable in Kubernetes, which occasionally deadlocks a Helm rollback: the chart controller tries to revert Ceph StorageClasses created by an older release and hitsupdates to parameters are forbidden, forever. Recover rollback is the dedicated unstick:
- It acts only when the cluster release reports that exact rollback condition — against a healthy cluster it is a no-op.
- It deletes only Rook-provisioned StorageClasses (matched by provisioner), never a foreign class.
- It never deletes a class with bound PVCs — those are returned as skipped for you to decide.
- It then nudges the release to re-reconcile, which recreates the classes at the current version.
What commonly goes wrong
Permissions
Related
Storage overview
When Rook-Ceph is the right backend — and when it is not.
Classes & profiles
What
ceph-block and ceph-san-block support, and why VMs want them.Infrastructure & nodes
The SAN LUN panel — WWID grouping, path counts, FC port state.
Platform health overview
The HelmRelease status model both Rook releases report through.