Skip to content

CRD Specification

MeshStor uses two cluster-scoped Custom Resource Definitions. Both are managed by the driver — operators read them for monitoring but do not create or edit them manually.

MeshStorVolume (msvol)

Tracks the desired and actual state of each provisioned volume.

API Group: csi.meshstor.io Scope: Cluster Short name: msvol

Spec Fields

Field Type Description
capacityBytes int64 Requested volume capacity in bytes (aligned to MiB)
numberOfCopies int Number of data replicas. Each copy lives on a different node.
drivesPerCopy int Drives per copy. Values >1 create RAID10.
memberMissingTimeout int Seconds before a missing member is marked faulty and replaced.
formattedAt Time Timestamp when XFS formatting completed. Empty if not yet formatted.
nvmeofNamespaceIDs []int32 NVMe-oF namespace IDs assigned to this volume's partitions. Range: 1–8192.

Status Fields

Field Type Description
phase string Current volume phase (see Volume Phases below)
nodeName string Node where the volume is currently mounted
mdState string MD RAID state: active, clean, degraded, recovering, etc.
totalDevices int64 Total expected member devices in the MD array
activeDevices int64 Currently active member devices
failedDevices int64 Devices marked as faulty by MD
downDevices int64 Devices that are down (unreachable)
syncPercentage string MD rebuild progress (e.g., "45.2%"). Empty when fully synced.
partitions []Partition Per-partition status (see Partition Fields below)

Partition Fields

Each entry in .status.partitions[]:

Field Type Description
nodeID string Kubernetes node name hosting this partition
partitionUUID string GPT partition UUID
nvmeofNamespaceID int32 NVMe-oF namespace ID for this partition
state string Partition state (see Partition States below)
sizeBytes int64 Partition size in bytes
updatedAt Time Timestamp of the last state change

Volume Phases

Phase Description
New Volume CR created, no partitions requested yet
Requested Partitions requested on selected nodes, waiting for creation
Syncing MD RAID array is syncing / rebuilding
Synced All members active and in sync
Expanding Volume is being resized (partitions growing)
Replacing A faulty member is being replaced
Deleting Volume is being torn down

Partition States

State Description
Requested Partition requested but not yet created on the target node
Created Partition exists on disk, not yet added to MD array
Syncing Partition is a member of the MD array and syncing
Synced Partition is a member and fully synced
Faulty Partition is marked faulty in the MD array
Missing Partition was a member but is no longer reachable
Replacing Partition is being replaced by a new one
Deleting Partition is being removed and wiped
Unknown Partition state cannot be determined

kubectl get msvol displays:

NAME   PHASE   MDSTATE   TOTALDEVICES   ACTIVEDEVICES   FAILEDDEVICES   DOWNDEVICES   SYNC   PARTITIONS   AGE

MeshStorNodeDevice (msnd)

Tracks per-node NVMe drive inventory and free space. Updated by each node plugin during reconciliation.

API Group: csi.meshstor.io Scope: Cluster Short name: msnd

Spec Fields

Field Type Description
node string Kubernetes node name
device string Device name (e.g., nvme0n1)
usedAlias string Alias if the device was renamed
model string Drive model (e.g., Samsung SSD 990 PRO 1TB)
serial string Drive serial number
size string Total drive size (human-readable, e.g., 1.0TB)
multiQueue uint16 Number of hardware queues
sectorSize uint16 Sector size in bytes (typically 512 or 4096)

Status Fields

Field Type Description
biggestUsableFreeSpace string Largest contiguous free region (human-readable)
numberOfVolumes uint16 Number of MeshStor volumes using this drive
numberOfUnknownVolumes uint16 Partitions on this drive not associated with any known volume
updatedAt Time Timestamp of the last status update

What's Next