GNU/Linux >> Znalost Linux >  >> Linux

Linux device-mapper mapuje LVM PV vnořené uvnitř LV při pořizování snímku

Ř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.


Linux
  1. Jak rozšířit LVM, když ve skupině svazků není volné místo

  2. Jak nakonfigurovat LVM na Linux / CentOS / Redhat

  3. Jak vytvořit fyzický svazek v Linuxu pomocí LVM

  1. Jak rychle vytvářet soubory uvnitř vnořených adresářů v Linuxu

  2. Jak přesunout swap z diskového oddílu na svazek LVM v Linuxu

  3. Příklady příkazů lvremove v Linuxu

  1. Příklady příkazů lvdisplay v Linuxu

  2. Příklady příkazů lvmconf v Linuxu

  3. Použití snímků LVM pro klony virtuálních strojů KVM