The module lifecycle stageGeneral Availability
The module has requirements for installation

The module is guaranteed to work only with stock kernels that are shipped with the supported distributions.

The module may work with other kernels or distributions, but its stable operation and availability of all features is not guaranteed.

The Deckhouse Kubernetes Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.

BlockDevice

Scope: Cluster
Version: v1alpha1

The resource displays up-to-date information about available block devices on nodes that can be used by the sds-node-configurator controller for LVM operations.

The resource is created and managed by the controller only. Manual modification of the resource is prohibited.

  • status
    object
    • status.actualVGNameOnTheNode
      string

      The actual name of the LVM Volume Group the device is included in.

      Optional: exists if only the device is used as a Physical Volume and is included in a Volume Group.

    • status.consumable
      boolean

      Required value

      The flag that defines whether this device can be used by the controller to create an LVM Physical Volume.
    • status.fsType
      string
      The device’s file system type.

      Allowed values: LVM2_member, ‘’

    • status.hotPlug
      boolean

      Required value

      Device connection type. Can be:

      • true: If the device has been hot-plugged;
      • false: Otherwise.
    • status.lvmVolumeGroupName
      string

      The LVMVolumeGroup resource name.

      Optional: exists only if the device is used as a Physical Volume, is included in a Volume Group, and is specified in an LVMVolumeGroup resource.

    • status.machineId
      string

      Required value

      Unique identifier of the machine the device is on (normally at /etc/machine-id).
    • status.model
      string

      Device model.

      Optional: might not exist if the manufacturer does not provide this information for the given type of disks.

    • status.nodeName
      string

      Required value

      The name of the Kubernetes node the device is on.
    • status.partUUID
      string

      The UUID of the partition.

      Optional: exists only if the device is a partition.

    • status.path
      string

      Required value

      The device path on the node (/dev/sda).
    • status.pvUUID
      string

      The LVM Physical Volume UUID.

      Optional: exists only if the device is used as a LVM Physical Volume.

    • status.rota
      boolean

      Required value

      Device disk type. Can be:

      • true: For HDD;
      • false: For SSD.
    • status.serial
      string
      The device unique serial number.
    • status.size
      string

      Required value

      The device size.
    • status.type
      string

      Required value

      The device’s type (disk, partition, RAID, and others).
    • status.vgUUID
      string

      The UUID of the LVM Volume Group to which this device belongs as a Physical Volume.

      Optional: exists only if the device is used as a Physical Volume and is included in a Volume Group.

    • status.wwn
      string

      The device unique wwn (World Wide Name) identifier.

      Optional: might not exist if WWN is not supported for this type of disk by the manufacturer.

LVMLogicalVolume

Scope: Cluster
Version: v1alpha1

LVMLogicalVolume resource defines the storage where a PV will be created.
  • spec
    object
    • spec.actualLVNameOnTheNode
      string

      Required value

      Logical Volume name on the node.

      Minimal length: 1

      Pattern: ^[a-z0-9]([a-z0-9-.]{0,251}[a-z0-9])?$

    • spec.lvmVolumeGroupName
      string

      Required value

      Name of a LVMVolumeGroup resource whose Volume Group will be used for Logical Volume creation.

      Minimal length: 1

      Pattern: ^[a-z0-9]([a-z0-9-.]{0,251}[a-z0-9])?$

    • spec.size
      integer or string

      Required value

      Desired Logical Volume size. It can be specified as a numerical value or percentage of the total Volume Group or thin pool space. For thin pools, the total space is calculated as the actual thin pool size multiplied by the allocationLimit value.

      Note that if you specify a percentage, the Logical Volume will be automatically extended when Volume Group, thin pool, or thin pool’s allocationLimit value is increased.

      Minimal length: 1

      Pattern: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$|^[1-9][0-9]?%$|100%

    • spec.source
      object
      Source of the volume, if present.
      • spec.source.kind
        string

        Required value

        Kind of the source. LVMLogicalVolume kind means that the current resource is a clone. LVMLogicalVolumeSnapshot kind means that the current resource is a restored volume.

        Allowed values: LVMLogicalVolume, LVMLogicalVolumeSnapshot

      • spec.source.name
        string

        Required value

        Name of the resource from which the current resource is created.

        Minimal length: 1

    • spec.thick
      object
      • spec.thick.contiguous
        boolean

        If set to true, the logical volume will be created with the contiguous attribute.

        Use this attribute carefully, as it may prevent from Logical Volume creation even if there is enough space for it.

    • spec.thin
      object
      Defines the used thin pool. Specified only for Thin Logical Volume.
      • spec.thin.poolName
        string

        Required value

        Name of the used thin pool.

        Minimal length: 1

        Pattern: ^.*$

    • spec.type
      string

      Required value

      Logical Volume type.

      Allowed values: Thick, Thin

    • spec.volumeCleanup
      string

      Volume cleanup method after the PV is deleted. If this parameter is not set, there’s no guarantee that the data will be completely deleted.

      Allowed values:

      • RandomFillSinglePass: Volume will be overwritten with random data once before deletion. This option is not recommended for solid-state drives (SSDs), as overwriting reduces the drive’s lifespan. For thin volumes, only the space in use at the moment of volume deletion will be overwritten.
      • RandomFillThreePass: Volume will be overwritten with random data three times before deletion. This option is also not recommended for SSDs, as overwriting reduces the drive’s lifespan. For thin volumes, only the space in use at the moment of volume deletion will be overwritten.
      • Discard: Before deletion, all blocks of the volume will be marked as free using the discard system call. This option is applicable only to SSDs and thick volumes.

      Allowed values: RandomFillThreePass, RandomFillSinglePass, Discard

  • status
    object
    Describes the resource status.
    • status.actualSize
      string
      Actual Logical Volume size on the node.
    • status.contiguous
      boolean
      Shows if the created Logical Volume has the contiguous attribute.
    • status.phase
      string
      Current resource’s phase.

      Allowed values: Created, Pending, Cleaning, Resizing, Failed

    • status.reason
      string
      Reason of the phase.

LVMLogicalVolumeSnapshot

Scope: Cluster
Version: v1alpha1

LVMLogicalVolumeSnapshot resource defines the storage where a VolumeSnapshot will be created.
  • spec
    object
    • spec.actualSnapshotNameOnTheNode
      string
      Name of the volume snapshot.

      Minimal length: 1

    • spec.lvmLogicalVolumeName
      string

      Required value

      Name of the snapshotted LLV resource.

      Minimal length: 1

  • status
    object
    Describes the resource status.
    • status.actualLVNameOnTheNode
      string
      Name of the volume the snapshot is created from.
    • status.actualVGNameOnTheNode
      string
      Name of the Volume Group, where the snapshot resides in.
    • status.nodeName
      string
      Name of the Kubernetes node the snapshot resides in.
    • status.phase
      string

      Current resource’s phase.

      Possible values:

      • Created: Snapshot was created successfully.
      • Pending: Snapshot is being created.
      • Failed: An error occurred while creating the snapshot.

      Allowed values: Created, Pending, Failed

    • status.reason
      string
      Reason of the phase.
    • status.size
      string
      Snapshotted Logical Volume size on the node.
    • status.usedSize
      string
      Snapshot Logical Volume size on the node.

LVMVolumeGroup

Scope: Cluster
Version: v1alpha1

An interface for managing Volume Groups and Thin pools on the nodes.

These resources might be created both by a user and the sds-node-configurator controller. sds-node-configurator controller will automatically create an LVMVolumeGroup resource if it detects an existing Volume Group on a node tagged with ‘storage.deckhouse.io/enabled=true’. Controller will fill in both the ‘spec’ and ‘status’ fields. spec.thinPools field must be filled in by yourself.

  • spec
    object
    • spec.actualVGNameOnTheNode
      string

      Required value

      Desired name of a Volume Group. Must be unique for the node it is on.

      This field is immutable.

    • spec.blockDeviceSelector
      object

      Required value

      Desired block device selector.

      Note: Selected block devices must belong to the same node for a volume group of type ‘Local’.

      • spec.blockDeviceSelector.matchExpressions
        array of objects
        Desired block device selector expressions.
        • spec.blockDeviceSelector.matchExpressions.key
          string
          Label key to check.
        • spec.blockDeviceSelector.matchExpressions.operator
          string
          Operator used to compare values.

          Allowed values: In, NotIn, Exists, DoesNotExist

        • spec.blockDeviceSelector.matchExpressions.values
          array of strings
          Array of values to compare. Required if the operator is In or NotIn.
      • spec.blockDeviceSelector.matchLabels
        object
        Desired block device selector labels.
    • spec.local
      object
      Desired configuration for a local Volume Group.
      • spec.local.nodeName
        string

        Required value

        Desired node for the LVM Volume Group.

        This field is immutable.

    • spec.thinPools
      array of objects
      Desired thin pool configuration.
      • spec.thinPools.allocationLimit
        string
        Thin pool oversize limit.

        Default: 150%

        Pattern: ^[1-9][0-9]{2,3}%$

      • spec.thinPools.name
        string

        Desired thin pool name.

        This field is immutable.

      • spec.thinPools.size
        integer or string

        Desired thin pool size. Might be specified as number or percent size of total Volume Group space.

        Note, that if you specify the percent size, the thin pool will be automatically extended when Volume Group is extended.

        Pattern: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$|^[1-9][0-9]?%$|100%

    • spec.type
      string

      Required value

      Type of a Volume Group.

      Possible values:

      • Local: Local volume group; the devices used are not distributed (not Shared LUN).

      Allowed values: Local

  • status
    object
    • status.allocatedSize
      string
      Amount of space currently occupied on the Volume Group.
    • status.conditions
      array of objects
      LVMVolumeGroup conditions.
      • status.conditions.lastTransitionTime
        string
        Time the condition was updated.
      • status.conditions.message
        string
        Information about the current status.
      • status.conditions.observedGeneration
        integer
        Resource version when the condition was applied.
      • status.conditions.reason
        string
        Reason for the current status.
      • status.conditions.status
        string
        Condition status.
      • status.conditions.type
        string
        Condition type.

        Allowed values: VGConfigurationApplied, VGReady, NodeReady, AgentReady, Ready

    • status.configurationApplied
      string
      Indicates if the last configuration has been successfully applied.
    • status.nodes
      array of objects
      Information about the nodes the Volume Group is on.
      • status.nodes.devices
        array of objects
        Information about the devices used in the Volume Group on the current node.
        • status.nodes.devices.blockDevice
          string
          Name of the corresponding block device resource.
        • status.nodes.devices.devSize
          string
          Block device size.
        • status.nodes.devices.path
          string
          Device path on the node (e.g., /dev/sda).
        • status.nodes.devices.pvSize
          string
          Physical Volume size.
        • status.nodes.devices.pvUUID
          string
          LVM Physical Volume UUID.
      • status.nodes.name
        string
        Node name.
    • status.phase
      string
      General LVMVolumeGroup condition.

      Allowed values: Pending, Ready, NotReady, Terminating, ‘’

    • status.thinPoolReady
      string
      Shows the number of healthy and total thin pools.
    • status.thinPools
      array of objects

      Current state of the Volume Group’s thin pools.

      Might be empty if there are no thin pools in the Volume Group.

      • status.thinPools.actualSize
        string
        Thin pool capacity.
      • status.thinPools.allocatedSize
        string
        Total requested size of logical volumes in the thin pool.
      • status.thinPools.allocationLimit
        string
        Thin pool oversize limit.

        Default: 150%

        Pattern: ^[1-9][0-9]{2,3}%$

      • status.thinPools.availableSpace
        string
        Thin pool free space available.
      • status.thinPools.message
        string
        Information about the status.
      • status.thinPools.name
        string
        Thin pool name.
      • status.thinPools.ready
        boolean
        Thin pool health status.
      • status.thinPools.usedSize
        string
        Thin pool used size.
    • status.vgFree
      string
      Volume Group free space.
    • status.vgSize
      string
      Volume Group capacity.
    • status.vgUUID
      string
      Volume Group UUID.

LvmVolumeGroupBackup

Scope: Cluster
Version: v1alpha1

Stores the information from lvmvolumegroups resources to migrate their kind from LvmVolumeGroup to LVMVolumeGroup.
  • spec
    object
    • spec.actualVGNameOnTheNode
      string

      Required value

      Desired name of a Volume Group. Must be unique for the node it is on.

      This field is immutable.

    • spec.blockDeviceNames
      array of strings

      Required value

      An array of block device resource names to create a Volume Group.

      Note that the selected block devices must belong to the same node for a Local Volume Group.

    • spec.thinPools
      array of objects
      Desired thin pool configuration.
      • spec.thinPools.allocationLimit
        string
        Thin pool oversize limit.

        Default: 150%

        Pattern: ^[1-9][0-9]{2,3}%$

      • spec.thinPools.name
        string

        Desired thin pool name.

        This field is immutable.

      • spec.thinPools.size
        integer or string

        Desired thin pool size. Might be specified as number or percent size of total Volume Group space.

        Note, that if you specify the percent size, the thin pool will be automatically extended when Volume Group is extended.

        Pattern: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$|^[1-9][0-9]?%$|100%

    • spec.type
      string

      Required value

      Type of a Volume Group.

      Possible values:

      • Local: Local volume group; the devices used are not distributed (not Shared LUN).

      Allowed values: Local

  • status
    object
    • status.allocatedSize
      string
      Amount of space currently occupied on the Volume Group.
    • status.conditions
      array of objects
      LVMVolumeGroup conditions.
      • status.conditions.lastTransitionTime
        string
        Time the condition was updated.
      • status.conditions.message
        string
        Information about the current status.
      • status.conditions.observedGeneration
        integer
        Resource version when the condition was applied.
      • status.conditions.reason
        string
        Reason for the current status.
      • status.conditions.status
        string
        Condition status.
      • status.conditions.type
        string
        Condition type.

        Allowed values: VGConfigurationApplied, VGReady, NodeReady, AgentReady, Ready

    • status.configurationApplied
      string
      Indicates if the last configuration has been successfully applied.
    • status.nodes
      array of objects
      Information about the nodes the Volume Group is on.
      • status.nodes.devices
        array of objects
        Information about the devices used in the Volume Group on the current node.
        • status.nodes.devices.blockDevice
          string
          Name of the corresponding block device resource.
        • status.nodes.devices.devSize
          string
          Block device size.
        • status.nodes.devices.path
          string
          Device path on the node (e.g., /dev/sda).
        • status.nodes.devices.pvSize
          string
          Physical Volume size.
        • status.nodes.devices.pvUUID
          string
          LVM Physical Volume UUID.
      • status.nodes.name
        string
        Node name.
    • status.phase
      string
      General LVMVolumeGroup condition.

      Allowed values: Pending, Ready, NotReady, Terminating, ‘’

    • status.thinPoolReady
      string
      Shows the number of healthy and total thin pools.
    • status.thinPools
      array of objects

      Current state of the Volume Group’s thin pools.

      Might be empty if there are no thin pools in the Volume Group.

      • status.thinPools.actualSize
        string
        Thin pool capacity.
      • status.thinPools.allocatedSize
        string
        Total requested size of logical volumes in the thin pool.
      • status.thinPools.allocationLimit
        string
        Thin pool oversize limit.

        Default: 150%

        Pattern: ^[1-9][0-9]{2,3}%$

      • status.thinPools.availableSpace
        string
        Thin pool free space available.
      • status.thinPools.message
        string
        Information about the status.
      • status.thinPools.name
        string
        Thin pool name.
      • status.thinPools.ready
        boolean
        Thin pool health status.
      • status.thinPools.usedSize
        string
        Thin pool used size.
    • status.vgFree
      string
      Volume Group free space.
    • status.vgSize
      string
      Volume Group capacity.
    • status.vgUUID
      string
      Volume Group UUID.

LVMVolumeGroupSet

Scope: Cluster
Version: v1alpha1

An interface for creating several LVMVolumeGroups by common template at once.
  • spec
    object
    • spec.lvmVolumeGroupTemplate
      object

      Required value

      Common template for LVMVolumeGroup resources provided by the set.
      • spec.lvmVolumeGroupTemplate.actualVGNameOnTheNode
        string

        Required value

        Desired name of a Volume Group in LVMVolumeGroups. Must be unique for the node it is on.

        This field is immutable. Note that this Volume Group name will be common for every LVMVolumeGroup created by the set.

      • spec.lvmVolumeGroupTemplate.blockDeviceSelector
        object

        Required value

        BlockDevice resources selector used in LVMVolumeGroups configurations.
        • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions
          array of objects
          Expressions for the block device selector.
          • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.key
            string
            Label key to check.
          • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.operator
            string
            Operator for comparing values.

            Allowed values: In, NotIn, Exists, DoesNotExist

          • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.values
            array of strings
            An array of values to compare. Required if the operator is In or NotIn.
        • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchLabels
          object
          Labels for the block device selector.
      • spec.lvmVolumeGroupTemplate.metadata
        object
        Metadata of LVMVolumeGroup resources.
        • spec.lvmVolumeGroupTemplate.metadata.labels
          object
          Required labels for LVMVolumeGroup resources.
      • spec.lvmVolumeGroupTemplate.thinPools
        array of objects

        Desired thin pool configuration in LVMVolumeGroups.

        Note that the configuration will be common for every LVMVolumeGroup created by the set.

        • spec.lvmVolumeGroupTemplate.thinPools.allocationLimit
          string
          Thin pool oversize limit.

          Default: 150%

          Pattern: ^[1-9][0-9]{2,3}%$

        • spec.lvmVolumeGroupTemplate.thinPools.name
          string

          Desired thin pool name.

          This field is immutable.

        • spec.lvmVolumeGroupTemplate.thinPools.size
          integer or string

          Desired thin pool size. Might be specified as a number or percentage of total Volume Group space.

          Note that if you specify the percent size, the thin pool will be automatically extended when Volume Group is extended.

          Pattern: ^[0-9]+(\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki)?$|^[1-9][0-9]?%$|100%

      • spec.lvmVolumeGroupTemplate.type
        string

        Required value

        Type of a VolumeGroup in LVMVolumeGroups.

        Possible values:

        • Local: Local volume group; the devices used are not distributed (not Shared LUN).

        Allowed values: Local

    • spec.nodeSelector
      object

      Required value

      Node selector for nodes that will be used by LVMVolumeGroups.
      • spec.nodeSelector.matchExpressions
        array of objects
        Expressions for the node selector.
        • spec.nodeSelector.matchExpressions.key
          string
          Label key to check.
        • spec.nodeSelector.matchExpressions.operator
          string
          Operator for comparing values.

          Allowed values: In, NotIn, Exists, DoesNotExist

        • spec.nodeSelector.matchExpressions.values
          array of strings
          An array of values to compare. Required if the operator is In or NotIn.
      • spec.nodeSelector.matchLabels
        object
        Labels for the node selector.
    • spec.strategy
      string

      Required value

      Strategy (rule) to provide LVMVolumeGroup resources by the set.

      Allowed values: PerNode

  • status
    object
    • status.createdLVMVolumeGroups
      array of objects
      Brief information about LVMVolumeGroups created by the set.
      • status.createdLVMVolumeGroups.lvmVolumeGroupName
        string
        Name of the created LVMVolumeGroup resource.
      • status.createdLVMVolumeGroups.nodeName
        string
        Name of the node where the LVMVolumeGroup resource was created.
    • status.currentLVMVolumeGroupsCount
      integer
      Current number of LVMVolumeGroups created by the set.
    • status.desiredLVMVolumeGroupsCount
      integer
      Desired number of LVMVolumeGroups that should be created by the set.
    • status.phase
      string
      LVMVolumeGroups creation phase.

      Allowed values: Created, Pending, NotCreated, ‘’

    • status.reason
      string
      Reason for the current phase.