Řešení 1:
Někdy je příslušná dokumentace skryta spíše v konfiguračních souborech než například v dokumentaci. Tak to vypadá s LVM.
Ve výchozím nastavení se LVM automaticky pokusí aktivovat svazky na všech fyzických zařízeních, která se připojí k systému po spuštění, pokud jsou přítomny všechny PV, a lvmetad a udev (nebo nověji systemd) běží. Když se vytvoří snímek LVM, spustí se událost udev, a protože snímek obsahuje PV, lvmetad automaticky spustí pvscan
, a tak dále.
Podívejte se na /etc/lvm/backup/docker-volumes
Byl jsem schopen určit, že lvmetad explicitně spustil pvscan
na snímku pomocí hlavních a vedlejších čísel zařízení, čímž se obešly filtry LVM, které by tomu normálně zabránily. Soubor obsahoval:
description = "Created *after* executing 'pvscan --cache --activate ay 253:13'"
Toto chování lze ovládat nastavením auto_activation_volume_list
v /etc/lvm/lvm.conf
. Umožňuje vám nastavit, které skupiny svazků, svazky nebo značky mohou být automaticky aktivovány.
Jednoduše jsem tedy nastavil filtr tak, aby obsahoval obě skupiny svazků pro hostitele; cokoliv jiného nebude odpovídat filtru a nebude automaticky aktivováno.
auto_activation_volume_list = [ "mandragora", "vm-volumes" ]
Svazky LVM hosta se již na hostiteli nezobrazují a moje zálohy konečně běží...
Řešení 2:
Chcete upravit hodnotu 'filtru' v /etc/lvm/lvm.conf tak, aby kontrolovala pouze fyzická zařízení na hostiteli KVM; výchozí hodnota přijímá „každé blokové zařízení“, které zahrnuje samotné LV. Komentář nad výchozí hodnotou je poměrně obsáhlý a dokáže lépe vysvětlit použití než já.
Řešení 3:
Narazil jsem na zhruba stejný problém v kombinaci s vgimportclone
. S tímto by to někdy selhalo:
WARNING: Activation disabled. No device-mapper interaction will be attempted.
Physical volume "/tmp/snap.iwOkcP9B/vgimport0" changed
1 physical volume changed / 0 physical volumes not changed
WARNING: Activation disabled. No device-mapper interaction will be attempted.
Volume group "insidevgname" successfully changed
/dev/myvm-vg: already exists in filesystem
New volume group name "myvm-vg" is invalid
Fatal: Unable to rename insidevgname to myvm-vg, error: 5
V tu chvíli, pokud jsem chtěl snímek zničit, musel jsem nejprve dočasně deaktivovat udev
kvůli chybě popsané na https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/1088081
Ale i poté, po zdánlivě úspěšné deaktivaci skupiny svazků vnořené LVM, mapování oddílu pro vnořené PV, vytvořené kpartx
, nějak zůstal v provozu.
Zdá se, že trik spočíval v tom, že mapovač zařízení ponechal další nadřazené mapování pomocí starého názvu skupiny svazků, jako je tento ve stromovém seznamu:
insidevgname-lvroot (252:44)
└─outsidevgname-myvm--root-p2 (252:43)
└─outsidevgname-myvm--root (252:36)
Řešením bylo jednoduše odstranit toto konkrétní mapování pomocí dmsetup remove insidevgname-lvroot
. Poté kpartx -d
a lvremove
fungovalo dobře.