The module lifecycle stageGeneral Availability
The module has requirements for installation

v0.7.1

  • Correction: one “orphaned” device-mapper device without a disk no longer stops BlockDevice detection on the entire node - previously, because of it, the agent did not create a single BlockDevice on the node, including healthy disks
  • Correction: LVMVolumeGroup with a single PV whose name could not be determined immediately no longer hangs in Pending forever - empty status.nodes post and no retry in the absence of udev events have been fixed
  • Correction: the agent substitutes the serial number inherited from the parent device if direct reading of the serial number fails (multipath participants, crypt/dm devices) - previously such devices were skipped when detecting BlockDevice
  • Optional resources (VerticalPodAutoscaler, PodMonitor/ServiceMonitor) are now enabled based on the presence of a CRD in the API, and not based on the enabledModules list
  • Documentation: fixed duplication of the description key in the Russian CRD LVMVolumeGroup, which broke docs-builder, added the missing status.extentSize description and restored the blockDevice description

v0.7.0

  • Correction: the agent no longer accepts LVM structures inside block devices given to virtual machines as its own - the /dev/loop exception was returned in the LVM global_filter. Fixed the resulting LVMVolumeGroup failures with CacheEmpty and ScanFailed causes - the VG name is no longer considered an identifier, and the LVM warning about a duplicate of someone else’s name is not attributed to our group
  • Added support for LVM on files: spec.fileDevices field of LVMVolumeGroup and LVMVolumeGroupSet. The agent creates a file, connects it as a loop device and uses it as a PV, which gives LVM storage on a node without a free disk; the blockDeviceSelector field has become optional
  • The scheduler (scheduler-extender) takes into account the PVCs listed in the extra-pvcs pod annotation
  • LVMLogicalVolume, LVMLogicalVolumeSnapshot and LVMVolumeGroupSet publish status.conditions; BlockDevice now has a Consumable condition, explaining why the device cannot be used; processing of LVMVolumeGroup conditions has been brought to a general form
  • Correction: a volume created from a snapshot or clone is expanded to the requested size - previously the PVC remained in Pending waiting for a size that never appeared
  • Correction: thin pool set by percentage of VG size no longer gets stuck at VGConfigurationApplied=False due to LVM rounding by one extent
  • Correction: an idle call to lvextend is recognized as harmless on LVM 2.03.16 - otherwise LVMVolumeGroup remained in NotReady
  • Correction: when taking control of an existing VG, blockDeviceSelector no longer remains empty
  • Correction: after pvcreate and vgcreate the agent calls udevadm to update the udev database
  • Correction: when storage-foundation is enabled, the agent loads the dm_snapshot kernel module
  • Removed outdated CRD LvmVolumeGroupBackup, left over from a one-time migration: the new hook removes finalizers from leftovers and removes the CRD itself
  • Added an experimental mode for detecting block devices via netlink, enabled by the ENABLE_NETLINK_BLOCK_DEVICE_DISCOVERY flag
  • Updating base images to v1.3.25, Go 1.26.5 and lib-helm to 1.72.13
  • Fixed vulnerabilities in golang.org/x/net, golang.org/x/sys and golang.org/x/crypto
  • Internal changes in module assembly and CI, the set of e2e tests has been significantly expanded

v0.6.10

  • The general accept rule was removed from LVM global_filter, which led to scanning of non-standard paths (/dev/disk/by-diskseq/*) and duplication of VG names

v0.6.9

  • The agent now ignores “foreign” block devices (rbd, drbd, nbd, loop) when scanning LVM
  • Fixed handling of duplicate VG names: LVMVolumeGroup status is no longer corrupted
  • The blocking of the agent pod launch has been eliminated; added timeouts for LVM commands
  • Improved stability of legacy block device names: matching by serial number or WWN prevents re-creation when name changes
  • Fixed BlockDevice selector validation: the In operator is now the only valid one

v0.6.8

  • Fixed race in scheduler-extender when PVC.Status.Phase is empty: PVC binding decision is now made based on Spec.VolumeName, nodes without a suitable LVMVolumeGroup are always rejected
  • Agent is now also scheduled on sds-elastic data nodes
  • Updating base images and lib-helm to 1.72.0

v0.6.7

  • Update base images, Go 1.25.10 and lib-helm 1.71.12
  • Internal changes in module structure and assembly

v0.6.6

  • Internal changes in module structure and assembly

v0.6.5

  • Update base images, Go 1.25.10 and lib-helm 1.71.11
  • Internal changes to the module assembly

v0.6.4

  • Corrections to the module structure

v0.6.3

  • scheduler-extender: PVCs with a missing StorageClass no longer block pod scheduling

v0.6.2

  • CI changes: DistroPackagesProxy and env proxy in werf, improvements to CVE scans (role_name, checkout)
  • Added user-authz cluster roles in templates

v0.6.1

  • Added detection of mount points via the mountinfo parser in the agent
  • Added locality of replicas to scheduler-extender for replicated volumes
  • Fixed reconciliation races and loops in LVG/LLV controllers
  • ExtentSize was taken into account when comparing in discoverer and fallback 4Mi was added in the LLV controller
  • Removed false marking of LLV as Failed when actualSize > spec.size
  • Fixed double subtraction of Failed LLV from actualSize when calculating free space in scheduler-extender
  • Updating base images and lib-helm

v0.6.0

  • CVE fixes
  • Transition to a common scheduler for SDS
  • Replacing a fixed resize delta with automatic determination of the LVM partition size delta
  • Automatic activation of LVM partitions during volume operations

v0.5.16

  • Added a hook for clearing resources when the module is turned off
  • Removed the enableThinProvisioning setting, we assume that thin provisioning is always enabled
  • Module-sdk update for CVE fix, golang update

v0.5.15

  • Added metrics for LVM volumes
  • Module-sdk update for CVE fix
  • Refactoring manifests

v0.5.14

  • Updated base images and lib-helm versions
  • Set default value for enableThinProvisioning to true
  • Docs improvements
  • Fixed templates security context
  • Added support for HA mode

v0.5.13

  • Updated base images versions

v0.5.12

  • Updated Go version to 1.24.9
  • Updated lib-helm to deckhouse_lib_helm-1.64.1
  • Documentation updates

v0.5.11

  • Fixed volume cleanup for thin volumes in some OSes

v0.5.10

  • Removed obsolete python requirements

v0.5.9

  • Fixed bug with unactivation of logical volumes

v0.5.8

  • Added release notes

v0.5.7

  • Fix sys-fs-cgroup error for containerdv2 support

v0.5.6

  • Added additional mounts for containerd v2 support

v0.5.5

  • CVE fixes

v0.5.4

  • CVE fixes
  • Internal changes for containerd v2 support

v0.5.3

  • Fixed bug preventing LVG status updates when missed/notready nodes are present in the cluster

v0.5.2

  • Removed support for sds-drbd module
  • Added hiding of csi-scsi-generic devices

v0.5.1

  • Technical release, module refactoring

v0.5.0

  • Added ability to wipe data in enterprise versions
  • Multiple documentation fixes

v0.4.6

  • Technical release. Removed “Preview” status from documentation

v0.4.5

  • Numerous documentation fixes
  • Added LVMVolumeGroupSet and LVMLogicalVolumeSnapshots
  • Fixed work with labels and finalizers in some internal objects
  • Added dm_snapshot loading when needed

v0.4.3

  • Fixed crash of BlockDevices migration script when finalizers are missing on resources

v0.4.2

  • Fix for supporting BlockDevice serial numbers up to 63 characters long

v0.4.1

  • Fixed potential issue with missing labels in LvmVolumeGroup->LVMVolumeGroup migration hook
  • Added controller that tracks labels on BlockDevice resources for quick updates of LVMVolumeGroup resources

v0.4.0

  • LvmVolumeGroups resources will be migrated to LVMVolumeGroups
  • Exact BlockDevices lists in LVMVolumeGroups will be migrated to selectors
  • Multiple fixes in controllers and documentation

v0.3.2

  • Fix in sds-health-watcher-controller which could incorrectly handle the status of some nodes

v0.3.1

  • Updated golang to current 1.22.6 to close known vulnerabilities

v0.3.0

  • Added thin provisioning configuration in mc for automatic dm_thin_pool module loading
  • Images moved to distroless
  • Added labels to BlockDevices entity (for future use in BlockDevicesSelectors)
  • Multiple bug fixes and documentation improvements

v0.2.5

  • Added metrics and their collection in Prometheus, health check ports moved to correct ones

v0.2.4

  • Added auto-expansion for thin pools LVM volume groups and LVM logical volumes

v0.2.3

  • Added internal cache for performance improvement
  • Added health and readiness checks to controller
  • Improved resource display in cli
  • Now LVM volume groups are deleted when corresponding k8s resource is deleted, not when annotation is added
  • Added LVM volume group size specification in percentages
  • Added AllocationLimit support in LVM volume group
  • Added support for contiguous volumes in sds-local-volume

v0.2.1

  • Added multipath devices support

v0.2.0

  • Added LVMLogicalVolumeWatcher CRDs
  • Added more test cases
  • Added AreSizesEqualWithinDelta function
  • Fixed resize for thinPools
  • Added tests to LvmLogicalVolumeWatcher controller
  • Fixed naming in LVMLogicalVolume
  • Added node affinity
  • Enhanced LVMLogicalVolume handling with logging, size display, and event processing
  • Statically linked nsenter, lsblk and lvm utils
  • Fixed serial discovery by switching to dynamic lsblk
  • Rewrote bin-copier script in Golang
  • Moved lsblk and its libraries inside the agent image
  • Added age field
  • Implemented stderr filtering for LVM commands
  • Added bench-tests for LVMLogicalVolume controller
  • Changed size type from string to quantity
  • Added parallel reconciliation to lvm_logical_volume_watcher and VG size validation to lvm_volume_group_watcher