Storage
Pools and storage classes
Section titled “Pools and storage classes”| Concept | What it is |
|---|---|
| Pool | One node’s LVM-thin space on one or more disks. It holds instance root disks and volumes. |
| Storage class | What a tenant picks when creating a volume. A class binds one pool name; on a cluster, the pools of that name on every node are its capacity. |
| Default class | The class used when none is named: by volume creates, image imports and the console. |
The install creates the first pool and makes its class the default:
stratum-compute on the OS disks’ free tail, or, with the whole-disk layout, the
first compute data disk. Each data disk chosen in stage 2 is a pool of its own.
stratumctl storage-pools list # pools, state, capacity, disksstratumctl storage-classes liststratumctl nodes disks n-abc123 # the node's disks and which are freeAdd a disk later
Section titled “Add a disk later”stratumctl storage-pools create bulk --disk /dev/disk/by-id/nvme-EXAMPLE_C --create-storage-classstratumctl storage-pools create fast --disk /dev/disk/by-id/nvme-EXAMPLE_D \ --create-storage-class --storage-class-name nvmestratumctl storage-pools extend bulk --disk /dev/disk/by-id/nvme-EXAMPLE_E # grow a poolA disk that holds data is refused; clear it first with
stratumctl nodes disk-wipe <node-id> <disk> --force-wipe. The names
stratum-compute, stratum, stratum-block and data are reserved.
Pool states
Section titled “Pool states”| State | Means | Refused |
|---|---|---|
healthy |
Under 80% used | Nothing |
degraded |
80% or more used | New volumes from 90% |
full |
95% or more used | New volumes, attaching volumes. Only freeing space helps. |
missing |
The disk’s volume group is gone | Everything on the pool, until it is back |
Crossing 80%, 90% or 95% writes an audit event.
MD arrays
Section titled “MD arrays”Data disks can be combined into MD RAID arrays (RAID 1, 10 or 0) in stage 2 of
the install; each array then becomes one pool. See
Stage 2: Storage. Arrays are declared in
/etc/mdadm.conf beside the OS arrays and assemble at boot.
A pool given several disks with --disk spans them without redundancy: one
failed disk loses the pool.
Volumes
Section titled “Volumes”Tenants create volumes in a storage class, attach them to instances, and resize them.
stratumctl volumes create data-1 --size-gib 100 --storage-class nvme --project p-webstratumctl volumes attach vol-abc123 --instance i-abc123 --project p-webVolumes on an LVM-thin pool live on one node’s disks. Classes can carry IOPS and throughput limits:
stratumctl storage-classes create nvme --pool fast --max-iops-limit 20000