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 |
Print Columns¶
kubectl get msvol displays:
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¶
- StorageClass Parameters — how to configure volumes at provisioning time
- Monitoring — using these CRs for health tracking