StorageOS Feature labels
Feature labels are a powerful and flexible way to control storage features, especially when combined with rules.
Labels can be applied to various StorageOS artefacts. Applying specific feature labels triggers compression, replication and other storage features. No feature labels are present by default.
StorageOS Node labels
Nodes do not have any feature labels present by default. When StorageOS is run within Kubernetes with the Cluster Operator, any node labels set on Kubernetes nodes are available within StorageOS. Node labels may also be set with the CLI or UI.
||Specifies whether a node should be
||string||Set automatically in AWS, Azure and GCE. e.g.
||string||Used to spread master and replicas across different failure domains. Set automatically in AWS, Azure and GCE, e.g.
||string||Set by some cloud providers to perform sequential updates/reboots. Not currently used by StorageOS but available for use in rules.|
||string||The node hardware configuration, as set by the cloud provider, e.g.
To add a label to a node:
storageos node update --label-add storageos.com/deployment=computeonly nodename
StorageOS Pod Labels
||true / false||Enables StorageOS fencing of pods on unavailable nodes. For more information about fencing prerequisites please see the Fencing operations page.|
To add the fencing label to a pod use kubectl:
kubectl label pod <POD_NAME> key=value kubectl label pod mydb-pod storageos.com/fenced=true
StorageOS Pool labels
Pools do not have any labels present by default.
||integers [+]||Sets the percentage of overcommitment allowed for the pool (see here).|
To add overcommit labels to a pool:
storageos pool update --label-add storageos.com/overcommit=20 default
StorageOS Volume labels
Volumes do not have any feature labels present by default
||true / false||Switches off caching.|
||true / false||Switches off compression of data at rest and in transit.|
||true / false||Enables volume encryption, more details here|
||Soft failure mode works together with the failure tolerance. Hard is a mode where any loss in desired replicas count will mark volume as unavailable. AlwaysOn is a mode where as long as master is alive volume will be writable.|
||integers [0, 4]||Specifies how many failed replicas to tolerate, defaults to (Replicas - 1) if Replicas > 0, so if there are 2 replicas it will default to 1.|
||Node hostname or uuid||Requests master volume placement on the specified node. Will use another node if request can’t be satisfied.|
||true / false||Deprioritizes traffic by reducing the rate of disk I/O, when true.|
||integers [0, 5]||Replicates entire volume across nodes. Typically 1 replica is sufficient (2 copies of the data); more than 2 replicas is not recommended.|
To create a volume with a feature label:
storageos volume create --label storageos.com/throttle=true --label storageos.com/replicas=1 volumename
When using the Kubernetes CSI driver (available from Kubernetes 1.10), volume labels can also be added to the parameters section of the StorageClass. This means that all volumes created with the specific StorageClass will have StorageOS volume labels applied to them.
For example the StorageClass below will create
ext4 formatted volumes with a
single StorageOS replica, in the
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: storageos-replicated parameters: fsType: ext4 pool: default storageos.com/replicas: "1" provisioner: storageos