TopoLVM

TopoLVM is a CSI plugin using LVM for Kubernetes. It can be considered as a specific implementation of local persistent volumes using CSI and LVM.

Impact

  • Feature Development

    • Designed and implemented a controller for managing VolumeGroups.
    • Added Volume Health Monitoring based on LVM attributes.
    • Introduced support for controller-only expansion and PVCs smaller than 1 GiB.
    • Enabled snapshotting to larger targets and configurable leader election.
    • Defined minimum PVC allocation settings for more predictable provisioning.
  • Reliability and Security

    • Reworked device handling to rely on lvm reporting instead of /dev/topolvm.
    • Fixed Btrfs handling and unmounting logic.
    • Delivered multiple CVE and compatibility fixes across architectures and Go toolchains.
  • Performance and Testing

    • Optimized LVM subsystem parsing and reduced overhead in mount checks.
    • Improved controller performance by narrowing watch scopes.
    • Parallelized the E2E test suite for faster CI feedback.
  • Documentation and Governance

    • Authored enhancement proposals (PVCs <1 GiB, LVMD embedding).
    • Documented snapshot limitations and deployment considerations.
    • Added as a CODEOWNER, reflecting long-term stewardship of the project.

Contributions

Contributed to: 101 PRs: 73 Issues: 28
#TitleAuthor
1054lvmd: enable command-line options for klog and zap
PR Updated 2025-06-10
ushitora-anqouushitora-anqou
1053lvmd: don't close returned io.ReadCloser when callLVMStreamed failed
PR Updated 2025-06-04
ushitora-anqouushitora-anqou
1045lvmd: support lvm-command-prefix option in lvmd.conf
PR Updated 2025-07-14
ushitora-anqouushitora-anqou
1037docs: pin pause image version for arm64
PR Updated 2025-04-24
felixhummelfelixhummel
1005test: don't skip tests using root unless SKIP_TESTS_USING_ROOT is set
PR Updated 2025-01-14
ushitora-anqouushitora-anqou
989Fix Dockerfile warnings
PR Updated 2024-11-05
toshipptoshipp
988Enforce default timeout
PR Updated 2024-11-05
toshipptoshipp
987docs: add a note that lvmd seems to be leaking memory
PR Updated 2024-11-05
llamerada-jpllamerada-jp
986fix the kubectl binary download site
PR Updated 2024-11-05
peng225peng225
979Sometimes VolumeSnapshot CRD not exist
Issue Updated 2024-11-19
wushuyiwushuyi
970remove empty lines from generated manifests
PR Updated 2024-10-15
jurim76jurim76
966Potential memory leak in lvmd process.
Issue Updated 2024-10-31 bug stale
naemononaemono
965Activate LV before mount
Issue Updated 2024-11-11 request keepalive
vladimirfxvladimirfx
963Fix deviceClasses typo in Values.lvmd.additionalConfigs
PR Updated 2024-09-24
agrevtsevagrevtsev
957Cross-node Snapshot restore
Issue Updated 2024-10-09 request stale
dhilipkumarsdhilipkumars
956make resizefs faster
PR Updated 2024-09-17
toshipptoshipp
955Volume Expansion Failure for FileSystem PVCs After Upgrading to TopoLVM v0.33.0
Issue Updated 2024-09-04 bug
daichimukaidaichimukai
949example: mount host's /dev on the worker node
PR Updated 2024-08-14
peng225peng225
947Introduce prometheus metrics for lvmd process.
PR Updated 2024-08-30
naemononaemono
945bump node-driver-registrar version to v2.11.1
PR Updated 2024-08-06
peng225peng225
943Set lvmd log verbosity based on state modification or reporting
PR Updated 2024-08-13
SunnatilloSunnatillo
942test: enable goconst linter
PR Updated 2024-07-26
llamerada-jpllamerada-jp
941Setting log verbosity to lvmd pod errors out
Issue Updated 2024-08-13 request
SunnatilloSunnatillo
939Fix indentation level of lvmd daemonset profiling options.
PR Updated 2024-07-19
naemononaemono
938Bump chart version to 15.1.1
PR Updated 2024-07-16
topolvm-project-bot[bot]topolvm-project-bot[bot]
937revert node-driver-registrar version to v2.10.1
PR Updated 2024-07-16
peng225peng225
935chore: move btrfs to beta
PR Updated 2024-07-11
jakobmoellerdevjakobmoellerdev
934csi-registrar/topolvm-node CrashLoopBackOff 15.1.0
Issue Updated 2024-07-16 bug
coffee-time-designcoffee-time-design
931Add pprof profiling support to all binaries.
PR Updated 2024-08-21
naemononaemono
930fix: use host devices based on lvm reporting instead of topolvm mknod
PR Updated 2024-07-16
jakobmoellerdevjakobmoellerdev
929docs: remove unnecessary version check
PR Updated 2024-06-28
peng225peng225
927fix: allow building with go1.21 or higher via GOTOOLCHAIN=auto
PR Updated 2024-06-26
jakobmoellerdevjakobmoellerdev
924Remove --container option
PR Updated 2024-06-10
toshipptoshipp
922Add support for ECS logging
PR Updated 2024-08-21
kvalliyurnattkvalliyurnatt
917fix: reallow building for s390x
PR Updated 2024-05-20
jakobmoellerdevjakobmoellerdev
916feat: setup volume health monitoring based on lv_attr bits
PR Updated 2024-09-05
jakobmoellerdevjakobmoellerdev
904LogicalVolumeService updates wait for at least 1s and do not use backoffs
Issue Updated 2024-05-15 bug
jakobmoellerdevjakobmoellerdev
903fix: avoid initial 1s delay and use exponential backoff on spec / status checks for LogicalVolume
PR Updated 2024-05-15
jakobmoellerdevjakobmoellerdev
902TopoLVM should not use the `/dev/topolvm` devices but use lvm2 lv output as source of truth
Issue Updated 2024-07-16 bug keepalive
jakobmoellerdevjakobmoellerdev
900docs: limitation on restoring snapshot with diff storageclass
PR Updated 2024-04-26
jakobmoellerdevjakobmoellerdev
898feat: controller only expansion
PR Updated 2024-09-02 keepalive
jakobmoellerdevjakobmoellerdev
897Update controller.go
PR Updated 2024-04-26
guettliguettli
895lvmd: avoid fd leaks when error occurs
PR Updated 2024-04-24
ushitora-anqouushitora-anqou
894lvmd: don't call Close() for stdout
PR Updated 2024-04-25
ushitora-anqouushitora-anqou
892fix: use stricter not found matching for lvm calls
PR Updated 2024-04-24
jakobmoellerdevjakobmoellerdev
891Update supporting Kubernetes (1.30)
Issue Updated 2024-07-02 update kubernetes
llamerada-jpllamerada-jp
890specify envtest branch according to controller-runtime
PR Updated 2024-04-22
llamerada-jpllamerada-jp
889TopoLVM ignores lvremove errors
Issue Updated 2024-04-24 bug
seleznevseleznev
888[WIP] chore: attempt to rewrite e2e tests to be parallelizable
PR Updated 2024-04-25
jakobmoellerdevjakobmoellerdev
884fix: CVE-2023-45288
PR Updated 2024-04-17
jakobmoellerdevjakobmoellerdev
883cosme: Adjusting the latex expression for a cleaner display formula
PR Updated 2024-04-16
pluserpluser
881chore: run ginkgo in parallel execution mode
PR Updated 2024-04-15
jakobmoellerdevjakobmoellerdev
880Start Parallelizing E2E Test Suite
Issue Updated 2024-04-17
jakobmoellerdevjakobmoellerdev
879fix: btrfs unmounting + e2e tests
PR Updated 2024-05-02
jakobmoellerdevjakobmoellerdev
878chore: use exposed controller functions in topolvm controllers
PR Updated 2024-04-10
jakobmoellerdevjakobmoellerdev
877topolvm-node does not unmount btrfs volumes after running `parted -l`
Issue Updated 2024-05-01 bug
seleznevseleznev
876RFE: moving btrfs from experimental to official Support
Issue Updated 2025-05-12 request keepalive
jakobmoellerdevjakobmoellerdev
875chore: expose controller server settings for external use
PR Updated 2024-04-08
jakobmoellerdevjakobmoellerdev
874RFE: Implementation of Volume Health Monitoring
Issue Updated 2024-09-05 request keepalive
jakobmoellerdevjakobmoellerdev
873Optimization Potential: Live Calculation of Available Storage for allocation of Pods
Issue Updated 2024-07-18 request
jakobmoellerdevjakobmoellerdev
872doc: unlist Retain reclaim policy from limitaions
PR Updated 2024-04-08
ushitora-anqouushitora-anqou
871Bump chart version to 14.1.1
PR Updated 2024-04-08
topolvm-project-bot[bot]topolvm-project-bot[bot]
869Revisiting Limitation on Reclaim Policy
Issue Updated 2024-04-08 request
jakobmoellerdevjakobmoellerdev
865fix: pin setup-envtest to go 1.20 before TopoLVM migrates to go 1.21
PR Updated 2024-03-27
jakobmoellerdevjakobmoellerdev
864Test Regression due to go.mod `go x.y.z` directive causing errors in go 1.20
Issue Updated 2024-03-27 bug
jakobmoellerdevjakobmoellerdev
863fix: use correct ErrNotFound from command package
PR Updated 2024-03-29
jakobmoellerdevjakobmoellerdev
860fix: cleanup metrics state management in runner
PR Updated 2024-03-21
jakobmoellerdevjakobmoellerdev
855add a link to the github's compare page in the release procedure
PR Updated 2024-03-14
peng225peng225
854Fix typo to push image tag
PR Updated 2024-03-13
toshipptoshipp
852RFE: Creating an API and Controller for managing VolumeGroups
Issue Updated 2025-07-07 request keepalive
jakobmoellerdevjakobmoellerdev
851feat: Introduce minimum PVC allocation sizing by creating minimum allocation settings
PR Updated 2024-04-04
jakobmoellerdevjakobmoellerdev
850chore: add Jakob Möller to CODEOWNERS
PR Updated 2024-03-07
jakobmoellerdevjakobmoellerdev
844Introduce 4096 byte Sector Size Minimum for Rounding LV Sizes on Creation and Resizing
PR Updated 2024-03-06
jakobmoellerdevjakobmoellerdev
843lvmd: fix Watch RPC to notify VG info periodically when embedded
PR Updated 2024-02-27
daichimukaidaichimukai
840Change directory tree to the new kubebilder template
PR Updated 2024-03-01
llamerada-jpllamerada-jp
832chore: reduce consistent reads per mount to 1 in `IsMounted` based on kernel version
PR Updated 2024-01-30
jakobmoellerdevjakobmoellerdev
831chore: reduce GetCapacity log level
PR Updated 2024-01-26
jakobmoellerdevjakobmoellerdev
829chore: optimized `lvm.go` fetching and parsing
PR Updated 2024-02-07
jakobmoellerdevjakobmoellerdev
828Feature Request: Support disk encryption using LUKS
Issue Updated 2024-03-01 request stale
ryanfairclothryanfaircloth
827TopoLVM Snapshot Issue: Multiple Logical Volumes Created
Issue Updated 2024-01-29 bug
koraypinarcikoraypinarci
826fix: CVE-2023-47108 & CVE-2023-45142
PR Updated 2024-01-23
suleymanakbas91suleymanakbas91
823feat!: Use lvmdEmebbed by default
PR Updated 2025-02-27 keepalive
ryanfairclothryanfaircloth
818Produce a SBOM using fossa or another acceptable tool
Issue Updated 2024-02-26 request keepalive
ryanfairclothryanfaircloth
817feat: allow disabling leader election in topolvm-controller
PR Updated 2024-01-17
jakobmoellerdevjakobmoellerdev
816feat!: helm chart and base image refactor DO NOT MERGE
PR Updated 2024-01-22 do-not-merge/needs-rebase
ryanfairclothryanfaircloth
808chore: optimize node watches and controller to only watch metadata and no spec
PR Updated 2024-01-17
jakobmoellerdevjakobmoellerdev
800LVM subsystem optimized calls & parsing in `lvm.go` by removing stateful view
Issue Updated 2024-02-07 request
jakobmoellerdevjakobmoellerdev
785Hot Reloading lvmd.conf
Issue Updated 2024-08-07 request
jakobmoellerdevjakobmoellerdev
780fix condition preventing multiple default device-classes
PR Updated 2023-12-21 keepalive
elprokoelproko
779chore: remove cybozu-log and replace with zap / controller-runtime log
PR Updated 2023-11-10
jakobmoellerdevjakobmoellerdev
773Upgrading the logging library of lvmd
Issue Updated 2023-11-10 request
jakobmoellerdevjakobmoellerdev
771feat: Starting LVMD from within topolvm-node instead of using gRPC
PR Updated 2023-11-02
jakobmoellerdevjakobmoellerdev
769docs: Proposal for running LVMD from within topolvm-node instead of using gRPC Services
PR Updated 2023-10-25
jakobmoellerdevjakobmoellerdev
766feat: allow PVCs <1 Gi
PR Updated 2023-10-27
jakobmoellerdevjakobmoellerdev
763fix: CVE-2023-39325 / CVE-2023-44487
PR Updated 2023-10-12
jakobmoellerdevjakobmoellerdev
754docs: Enhancement Proposal: PVCs < 1 GB in TopoLVM
PR Updated 2023-10-17
jakobmoellerdevjakobmoellerdev
738feat: allow snapshotting to greater target than source volume
PR Updated 2023-08-29
jakobmoellerdevjakobmoellerdev
728feat: allow passing leaderelection config values to topolvm-controller
PR Updated 2023-08-02
jakobmoellerdevjakobmoellerdev
695Support restore to a PVC larger than the VolumeSnapshot
Issue Updated 2023-08-29 request keepalive
akalenyuakalenyu
511enforce compatibility check when restoring snapshot and creating clone
Issue Updated 2024-04-26 wait-for-external-factors keepalive
llamerada-jpllamerada-jp