The functionality of the module might change, but the main features will remain. Compatibility with future versions is guaranteed, but might require additional migration steps.

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.

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.

LVMLogicalVolume

Scope: Cluster
Version: v1alpha1

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

      Required value

      Actual LV name on the node.

      Minimal length: 1

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

    • spec.lvmVolumeGroupName
      string

      Required value

      LVMVolumeGroup resource’s name which VG will be used for LV creation.

      Minimal length: 1

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

    • spec.size
      integer or string

      Required value

      The desired LV size. Might be specified as number or percent size of total VG or thin pool space (for thin pool total space is counted by actual thin pool size multiply by allocationLimit value)

      Note, that if you specify the percent size, the LV will be automatically extended when VG, thin pool or thin pool’s allocationLimit value is extended.

      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. Kind LVMLogicalVolume means that current resource is clone. Kind LVMLogicalVolumeSnapshot means that current resource is a restored volume.

        Allowed values: LVMLogicalVolume, LVMLogicalVolumeSnapshot

      • spec.source.name
        string

        Required value

        The name of the resource current resource is created from.

        Minimal length: 1

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

        Required value

        If true, the Logical Volume will be created with the contiguous flag. Use it carefully as LV might not be created even if there is enough space in VG.
    • spec.thin
      object
      Specifies used ThinPool. Needs only if LV has Thin type.
      • spec.thin.poolName
        string

        Required value

        Used thin pool name.

        Minimal length: 1

        Pattern: ^.*$

    • spec.type
      string

      Required value

      LV type: Thick or Thin.

      Allowed values: Thick, Thin

LVMLogicalVolumeSnapshot

Scope: Cluster
Version: v1alpha1

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

      Minimal length: 1

    • spec.lvmLogicalVolumeName
      string

      Required value

      The name of the snapshotted LLV resource.

      Minimal length: 1

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. The 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’. The controller will fill in both the ‘spec’ and ‘status’ fields. The spec.thinPools field must be filled in by yourself.

  • spec
    object
    • spec.actualVGNameOnTheNode
      string

      Required value

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

      This field is immutable.

    • spec.blockDeviceSelector
      object

      Required value

      The desired block device selector.
      • spec.blockDeviceSelector.matchExpressions
        array of objects
        The desired block device selector expressions.
        • spec.blockDeviceSelector.matchExpressions.key
          string
        • spec.blockDeviceSelector.matchExpressions.operator
          string

          Allowed values: In, NotIn, Exists, DoesNotExist

        • spec.blockDeviceSelector.matchExpressions.values
          array of strings
      • spec.blockDeviceSelector.matchLabels
        object
        The desired block device selector labels.
    • spec.local
      object
      The desired configuration for a local Volume Group.
      • spec.local.nodeName
        string

        Required value

        The desired node for the LVM Volume Group.

        This field is immutable.

    • spec.thinPools
      array of objects
      The desired Thin-pool configuration.
      • spec.thinPools.allocationLimit
        string
        Thin pool oversize limit. Default is 150%.

        Default: 150%

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

      • spec.thinPools.name
        string

        The desired thin pool name.

        This field is immutable.

      • spec.thinPools.size
        integer or string

        The desired thin pool size. Might be specified as number or percent size of total VG space.

        Note, that if you specify the percent size, the thin pool will be automatically extended when VG 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

      The type of a VolumeGroup. Might be:

      • Local, that is, local if the devices used are not distributed (not Shared LUN).

      Allowed values: Local

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

      The 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
      The desired Thin-pool configuration.
      • spec.thinPools.allocationLimit
        string
        Thin pool oversize limit. Default is 150%.

        Default: 150%

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

      • spec.thinPools.name
        string

        The desired thin pool name.

        This field is immutable.

      • spec.thinPools.size
        integer or string

        The desired thin pool size. Might be specified as number or percent size of total VG space.

        Note, that if you specify the percent size, the thin pool will be automatically extended when VG 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

      The type of a Volume Group. Might be:

      • Local, that is, local if the devices used are not distributed (not Shared LUN).

      Allowed values: Local

LVMVolumeGroupSet

Scope: Cluster
Version: v1alpha1

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

      Required value

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

        Required value

        The 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

        The desired BlockDevice resources selector to provide in LVMVolumeGroups configurations.
        • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions
          array of objects
          The desired block device selector expressions.
          • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.key
            string
          • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.operator
            string

            Allowed values: In, NotIn, Exists, DoesNotExist

          • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchExpressions.values
            array of strings
        • spec.lvmVolumeGroupTemplate.blockDeviceSelector.matchLabels
          object
          The desired block device selector labels.
      • spec.lvmVolumeGroupTemplate.metadata
        object
        Metadata of LVMVolumeGroup resources.
        • spec.lvmVolumeGroupTemplate.metadata.labels
          object
          Must-have labels for LVMVolumeGroup resources.
      • spec.lvmVolumeGroupTemplate.thinPools
        array of objects

        The 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 is 150%.

          Default: 150%

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

        • spec.lvmVolumeGroupTemplate.thinPools.name
          string

          The desired thin pool name.

          This field is immutable.

        • spec.lvmVolumeGroupTemplate.thinPools.size
          integer or string

          The desired thin pool size. Might be specified as number or percent size of total VG space.

          Note, that if you specify the percent size, the thin pool will be automatically extended when VG 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

        The type of a VolumeGroup in LVMVolumeGroups. Might be:

        • Local, that is, local if the devices used are not distributed (not Shared LUN).

        Allowed values: Local

    • spec.nodeSelector
      object

      Required value

      The desired node selector for nodes which will be used by LVMVolumeGroups.
      • spec.nodeSelector.matchExpressions
        array of objects
        The desired node selector expressions.
        • spec.nodeSelector.matchExpressions.key
          string
        • spec.nodeSelector.matchExpressions.operator
          string

          Allowed values: In, NotIn, Exists, DoesNotExist

        • spec.nodeSelector.matchExpressions.values
          array of strings
      • spec.nodeSelector.matchLabels
        object
        The desired node selector labels.
    • spec.strategy
      string

      Required value

      The strategy (rule) to provide LVMVolumeGroup resources by the set.

      Allowed values: PerNode