[pve-devel] [PATCH storage] lvm: avoid warning due to human-readable text in vgs output
Friedrich Weber
f.weber at proxmox.com
Thu Jan 11 17:58:26 CET 2024
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]. 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
[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.weber at proxmox.com>
---
src/PVE/Storage/LVMPlugin.pm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/PVE/Storage/LVMPlugin.pm b/src/PVE/Storage/LVMPlugin.pm
index 4b951e7..557d602 100644
--- a/src/PVE/Storage/LVMPlugin.pm
+++ b/src/PVE/Storage/LVMPlugin.pm
@@ -130,6 +130,9 @@ sub lvm_vgs {
my ($name, $size, $free, $lvcount, $pvname, $pvsize, $pvfree) = split (':', $line);
+ # skip human-readable messages that vgs occasionally prints to stdout
+ return if !defined($size);
+
$vgs->{$name} //= {
size => int ($size),
free => int ($free),
--
2.39.2
More information about the pve-devel
mailing list