StorageClasses
The class list shows every StorageClass on the supervisor — the ones Celum’s backends created and any third-party classes provisioned outside the wizard — with the facts a picker needs:
Every storage-class picker in the product — monitoring PVCs, VM disks, image imports, tenant-cluster defaults — reads this one list, sorted default-first. When a wizard step needs a class and you did not pick one, the cluster default wins.
Exactly one class should carry the default annotation. Two defaults make claim placement provisioner-dependent; zero means every claim must name its class explicitly. The backends never set the default flag without being asked.
CDI StorageProfiles
CDI mirrors each StorageClass with a StorageProfile and fills in what the class’s CSI driver supports. The profile is what CDI consults when a DataVolume — a VM disk, an imported image — leaves access mode or volume mode unspecified:claimPropertySets is the authoritative capability list: each entry is an access-mode set with its volume mode, and CDI defaults unspecified DataVolume fields from the first matching set. The derived flags (supportsRWX, supportsBlock, …) are the same information pre-scanned, and rwxVolumeMode names the volume mode that comes with ReadWriteMany on this class — Block on RBD-backed classes, Filesystem on file-backed ones.
cloneStrategy decides how a clone of an existing volume — every VM created from a golden image — is executed:
The constraint column is the trap: both fast strategies refuse a cross-volume-mode pair. A Filesystem-mode source cloned to a Block-mode target silently falls through to
copy no matter what the profile says.
Which class for VMs and images
1
Golden images: RWX + Block on an RBD class
Import Image Library goldens as ReadWriteMany on a class like
ceph-block — the profile above shows RWX arrives as Block mode. A Block golden cloned to a Block VM disk takes the csi-clone path: seconds instead of the minute-plus host copy, roughly a 20× difference in practice.2
Live-migratable VMs: RWX disks — and only that
Live migration requires the disk readable from two nodes at once: ReadWriteMany. RWO pins the VM to its node.Block is not part of the requirement.
evictionStrategy: LiveMigrate is stamped on ReadWriteMany alone, in every VM builder; volume mode is an independent decision that follows what the class supports, and an RWX Filesystem class yields a VM this platform marks migratable. On RBD, RWX happens to arrive as Block — that is a property of RBD, not a condition of migration.Result: the two choices affect different things. RWX decides whether the VM can move; Block decides how fast it clones.3
Keep source and target modes aligned
The fast clone path survives only while golden and disk share a volume mode and class. Cross-pool clones within one provisioner (e.g.
ceph-block → ceph-san-block) stay on csi-clone, so goldens do not need per-class copies.4
File-backed classes for file workloads
NFS-style classes support RWX in Filesystem mode — fine for shared data, but VM disks on them clone via
copy, and a profile without Block support cannot back a Block claim at all.Result: a VM on such a class is slow to create and still migratable, since RWX is what migration needs. Trading clone speed for a file-backed class is a defensible choice; giving up migration is not what it costs.An empty profiles list means CDI is not installed on this supervisor — profiles are CDI’s view of the classes, so the Virtualization step has to come first.
The test-PVC diagnostic
The profile says what CDI believes the class supports; the test PVC asks the CSI driver directly. It creates a raw claim — deliberately bypassing CDI and its profile defaulting — with the class, access mode, volume mode, and size you pick, waits up to 30 seconds for it to bind, reports what actually landed, and deletes it. Two readings:- The raw claim binds with the requested modes → the driver is fine. If a VM disk on the same class still lands downgraded (RWX requested, RWO bound), the change happened above the CSI layer — profile defaulting is overriding intent, and the profile’s
claimPropertySetsis where to look. - The raw claim stays Pending → the driver, class parameters, or backend genuinely cannot satisfy the combination; the response carries the claim’s events with the provisioner’s own reason.
Permissions
Related
VM storage & disks
The consumer side — what the class choice does to a VM.
PVCs & snapshots
The claims these classes actually hold, and the Pending checklist.
Rook-Ceph
Where
ceph-block and ceph-san-block come from.NFS & Fibre Channel
The file-backed and array-backed classes.