If the metadata archive under /etc/lvm/archive for a particular VG has a lot of files or is overly large, `vgs` occasionally prints a message to stdout [1]. Currently, the LVM plugin tries to parse this message and thus produces the following confusing warnings in the output of `pvesm status` or the journal (via pvestatd):
Use of uninitialized value $size in int at [...]/LVMPlugin.pm line 133 Use of uninitialized value $free in int at [...]/LVMPlugin.pm line 133 Use of uninitialized value $lvcount in int [...]/LVMPlugin.pm line 133 Reported in enterprise support where LVM picked up on VGs on VM disks (due to a missing KRBD device filter in the LVM config), and since several VM disks had VGs with the same name, LVM quickly produced a lot of files in /etc/lvm/archive. Reproducible as follows with a VG named `spam`: for i in $(seq 8192); do vgrename spam spam2; vgrename spam2 spam; done rm /etc/lvm/backup/spam; vgs -o vg_name Output (linebreak for readability): Consider pruning spam VG archive with more then 8 MiB in 8268\n files (check archiving is needed in lvm.conf). VG spam With this patch, the LVM plugin instead prints a human-readable warning about the unexpected line. [1] https://sourceware.org/git/?p=lvm2.git;a=blob;f=lib/format_text/archive.c;h=5acf0c04a;hb=38e0c7a1#l222 Signed-off-by: Friedrich Weber <f.we...@proxmox.com> --- Notes: changes from v1 [2]: * warn about the unexpected line instead of simply ignoring it [2] https://lists.proxmox.com/pipermail/pve-devel/2024-January/061333.html src/PVE/Storage/LVMPlugin.pm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/PVE/Storage/LVMPlugin.pm b/src/PVE/Storage/LVMPlugin.pm index 4b951e7..5377823 100644 --- a/src/PVE/Storage/LVMPlugin.pm +++ b/src/PVE/Storage/LVMPlugin.pm @@ -130,6 +130,11 @@ sub lvm_vgs { my ($name, $size, $free, $lvcount, $pvname, $pvsize, $pvfree) = split (':', $line); + if (!defined($size) || !defined($free) || !defined($lvcount)) { + warn "unexpected output from vgs: $line\n"; + return; + } + $vgs->{$name} //= { size => int ($size), free => int ($free), -- 2.39.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel