cloudstack/plugins
Pearl Dsilva ce9793c0be
CLVM enhancements and fixes (#12617)
This PR enhances the existing CLVM implementation which was based on the deprecated CLVM technology which was based on corosync/pacemaker. With RHEL 7 having reached EOL, CLVM seems to be broken. CLVM supports RAW volumes on LVM , where as CLVM_NG support QCOW2 on LVM.

Further details: https://cwiki.apache.org/confluence/display/CLOUDSTACK/Modernized+CLVM%3A+Enhancements+and+CLVM_NG+support

NOTE: On testing - it was identified that incremental snapshots for clvm-ng do not work as expected. As of now it's been removed from scope. So, CLVM and CLVM_NG would only support full snapshots.


* add support for proper cleanup of snapshots and prevent vol snapshot of running vm

* remove snap vol restriction for sunning vms

* refactor clvm code

* add support for live migration

* add support for migrating lvm lock

* clvm deletion called explicitly

* made necessary changes to allow migration of lock and deletion of detached volumes

* fix create vol from snap and attach

* add support to revert snapshot for clvm

* add support to revert snapshot for clvm

* make zero fill configurable

* make setting non-dynamic & fix test

* fix locking at vol/vm creation

* fix revert snapshot format type and handle revert snapshot functionality for clvm

* 1. Create clvmlockmanager and move common code \n
2. handle attaching volumes to stopped VMs \n
3. Handle lock transfer when VM is started on another host

* add license

* remove command/answer classes from sonar coverage check

* add support for new gen clvm with template (qcow2) backing

* Add support for clvm_ng - which allows qcow2 on block storage , linked clones, etc

* fix test and use physical size + 50% of virtual size for backing file, while virtual size + pe for disk

* migrate clvm volumes as full clone and allow migration from clvm to nfs

* fix clvm_ng to nfs migration, and handle overhead calc

* support live migration from clvm_ng to nfs and vice-versa

* add support to migrate to and from clvm to nfs

* fix creation of volume on destination host during migration to clvm/clvm-ng

* support live vm migration between clvm -> clvm-ng (vice-versa), nfs -> clvm (vice-versa) and nfs->clvm-ng (vice-versa)

* add unit tests for clvm/clvm_ng operations

* Add support for incremental volume snapshots for clvm_ng

* prevent snapshot backup for incremental clvm_ng snaps, fix build failure, add unit tests

* fix lockhost on creation of volumes from snap and fix bitmap issue when migrating a vol with incremental snap

* restrict pre and post migration commands to only kvm hosts where vm has CLVM/CLVM-NG volumes

* evist lock tracking - use lvs command to get lock host than DB

* add test for pre/post migration

* Create a CLVM storage adaptor

* update existing clvm get stats method

* fix precommit check failure

* Apply suggestions from code review

Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com>

* Apply suggestions from code review

Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com>

* improve lock host retrieval logic and quicker retrival using db host as first check point and then fanning out

* add proper support for resizing of clvm_ng which calculated PE correctly for qcow2 metadata

* fallback to full snapshots for clvm-ng - incremental not supported in 4.23

* expunge volume detail of lock host on vm expunge

* if vmmigration with volume is done to the same clvm volume group, then dont do data transfer, just lock transfer and vm

* add clvm pools with deterministic uuid , so as to prevent adding the same pool twic

* added a small improvement to factor in a senario when lv is inactive on all hosts, could happen in storage outage issue

* address comment - extract common code for endpoint identification if clvm pool type

* Address comments - add early return guard to reduce indentation

* minor improvement - when migrating vm with volumes, if there's a failures, change the clvm vols to exclusive on source from shared, and on success, change dest vol to exclusive only for cross-pool migration

* cleanup unused code and tests for incremental snaps for clvmng and other cleanups

* allow storage browser to list lv in clvm, fix clvm shrink, overprovisioning factor isnt used for clvm pools - so set it to 1 and prevented display of provisioning type for clvm

* no need to have locktransfercommand to execute in sequence

* increase lv cmd timeouts to consider cluster load

---------

Co-authored-by: Pearl Dsilva <pearl1954@gmail.com>
Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com>
2026-06-16 16:16:51 +05:30
..
acl Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
affinity-group-processors Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
alert-handlers Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
api API key pair restructure (#9504) 2026-03-09 14:20:17 +01:00
backup Fix Instance Backup related events (#13180) 2026-05-26 10:12:03 +02:00
ca/root-ca Add ROOT CAs to the trust store and allow force provisioning of certs hosts & systemVMs via ssh (#12911) 2026-05-21 13:19:13 +05:30
database Guest OS rules (#10098) 2026-06-15 08:25:55 -03:00
dedicated-resources Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
deployment-planners Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
drs/cluster merge forward 4.22 to main 2025-12-16 11:50:58 +01:00
event-bus Add ROOT CAs to the trust store and allow force provisioning of certs hosts & systemVMs via ssh (#12911) 2026-05-21 13:19:13 +05:30
ha-planners/skip-heurestics Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
hypervisors CLVM enhancements and fixes (#12617) 2026-06-16 16:16:51 +05:30
integrations backup: veeam kvm integration (#12991) 2026-06-08 08:47:00 +02:00
maintenance Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
metrics Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
network-elements backup: veeam kvm integration (#12991) 2026-06-08 08:47:00 +02:00
outofbandmanagement-drivers Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
storage CLVM enhancements and fixes (#12617) 2026-06-16 16:16:51 +05:30
storage-allocators/random Updating pom.xml version numbers for release 4.23.0.0-SNAPSHOT 2025-11-05 16:54:39 +05:30
user-authenticators Update bouncy castle (#12794) 2026-05-22 11:07:44 -03:00
user-two-factor-authenticators Updating pom.xml version numbers for release 4.22.2.0-SNAPSHOT 2026-05-18 17:17:25 +05:30
pom.xml backup: veeam kvm integration (#12991) 2026-06-08 08:47:00 +02:00