diff --git a/docs/kubernetes/installation/k8s-storage-plane.md b/docs/kubernetes/installation/k8s-storage-plane.md index 2ccfec3d..6ec799c9 100644 --- a/docs/kubernetes/installation/k8s-storage-plane.md +++ b/docs/kubernetes/installation/k8s-storage-plane.md @@ -206,8 +206,16 @@ Once the pool is active, the operator automatically creates a StorageClass named `simplyblock---`. In this example, the StorageClass is called `simplyblock-simplyblock-cluster-production-pool`. -The StorageClass is automatically removed when the storage pool is deleted. For full details and customization options -are available at [Simplyblock Operator: Storage Pool](../../reference/operator/reference.md#pool). +`cluster_id` and `pool_name` are set from the pool and cannot be overridden. The remaining StorageClass +parameters are copied from `spec.storageClassParameters`. See +[Storage Class: StorageClass Created by a Pool](../usage/storage-class.md#storageclass-created-by-a-pool) for +the full parameter mapping. + +A StorageClass's parameters cannot be changed after creation, so `spec.storageClassParameters` is immutable +once the pool is created. A new pool is required to provision volumes with different defaults. + +The StorageClass is automatically removed when the storage pool is deleted. Full details and customization +options are available at [Simplyblock Operator: Storage Pool](../../reference/operator/reference.md#pool). ```bash title="Check the StorageClass" kubectl get storageclass simplyblock-simplyblock-production-my-pool diff --git a/docs/kubernetes/usage/storage-class.md b/docs/kubernetes/usage/storage-class.md index 4ec10b39..7d8cc174 100644 --- a/docs/kubernetes/usage/storage-class.md +++ b/docs/kubernetes/usage/storage-class.md @@ -24,6 +24,19 @@ simplyblock control plane to provision a logical volume matching the requested s the complexity of volume creation and ensures that workloads running in Kubernetes receive high-performance, resilient block storage directly backed by simplyblock. +## StorageClass Created by a Pool + +A StorageClass named `simplyblock---` is created automatically by the operator once +a `Pool` resource becomes active, as described in +[Create a Storage Pool](../installation/k8s-storage-plane.md#create-a-storage-pool). `cluster_id` and `pool_name` are +always set from the pool and cannot be overridden. The rest of the parameters are copied from +`Pool.spec.storageClassParameters`. Defaults for each field are listed at +[Simplyblock Operator: Pool](../../reference/operator/reference.md#storageclassparameters). + +Kubernetes does not allow the `parameters` of a StorageClass to be changed after creation, so +`Pool.spec.storageClassParameters` is immutable once the pool is created. There is no supported way to reconfigure +the generated StorageClass afterward. A new pool has to be created to provision volumes with different defaults. + ## Example Usage A typical simplyblock StorageClass contains the name of the storage class, a filesystem type to automatically format @@ -47,8 +60,8 @@ allowVolumeExpansion: true ## StorageClass Parameters -Each cluster has a default schema, but each volume can optionally use an alternative schema. However, the schema must -"fit" into the cluster, meaning `n+k` must be equal to (or better smaller) than the number of nodes in the cluster. +The erasure coding schema (the number of data and parity chunks per stripe) is set once at cluster creation and +applies to all volumes in the cluster. It cannot be configured per volume or through a StorageClass. See the [Erasure Coding Configuration](../../deployment-preparation/erasure-coding-scheme.md) for more details. @@ -78,8 +91,7 @@ If `namespace-volumes` is set to `yes`, the number of namespaces per subsystem h | qos_w_mbytes | int | Defines the maximum write throughput in megabytes reserved for a logical volume of this storage class. A zero (0) means no maximum. | true | 0 | | compression | bool | Defines if the logical volume of this storage class will be stored compressed or not. | true | false | | encryption | bool | Defines if the logical volume of this storage class will be encrypted or not. | true | false | -| distr_ndcs | int | Defines the number of data chunks for the erasure coding scheme. | true | 1 | -| distr_npcs | int | Defines the number of parity chunks for the erasure coding scheme. | true | 1 | +| replicate | bool | Defines if the logical volume of this storage class will be replicated. | true | false | | lvol_priority_class | int | Defines the priority class of a logical volume of this storage class. | true | 0 | | max_namespace_per_subsys | int | Defines the number of namespaces per NVMe subsystem. | true | 1 | | tune2fs_reserved_blocks | int | Defines the number of reserved blocks for tune2fs operations. | true | 0 |