GNU/Linux >> Linux Esercitazione >  >> Linux

Linux device-mapper mappa LVM PV nidificato all'interno di LV durante l'acquisizione di istantanee

Soluzione 1:

A volte la documentazione pertinente è nascosta nei file di configurazione piuttosto che, ad esempio, nella documentazione. Così sembra con LVM.

Per impostazione predefinita, LVM tenterà automaticamente di attivare i volumi su tutti i dispositivi fisici che vengono connessi al sistema dopo l'avvio, purché siano presenti tutti i PV, e lvmetad e udev (o più recentemente systemd) sono in esecuzione. Quando viene creata l'istantanea LVM, viene attivato un evento udev e poiché l'istantanea contiene un PV, lvmetad esegue automaticamente pvscan e così via.

Osservando /etc/lvm/backup/docker-volumes Sono stato in grado di determinare che lvmetad aveva eseguito esplicitamente pvscan sullo snapshot utilizzando i numeri maggiore e minore del dispositivo, che aggirano i filtri LVM che normalmente lo impedirebbero. Il file conteneva:

description = "Created *after* executing 'pvscan --cache --activate ay 253:13'"

Questo comportamento può essere controllato impostando auto_activation_volume_list in /etc/lvm/lvm.conf . Consente di impostare quali gruppi di volumi, volumi o tag possono essere attivati ​​automaticamente.

Quindi, ho semplicemente impostato il filtro per contenere entrambi i gruppi di volumi per l'host; qualsiasi altra cosa non corrisponderà al filtro e non verrà attivata automaticamente.

auto_activation_volume_list = [ "mandragora", "vm-volumes" ]

I volumi LVM del guest non vengono più visualizzati sull'host e, infine, i miei backup sono in esecuzione...

Soluzione 2:

Si desidera modificare il valore 'filter' in /etc/lvm/lvm.conf per ispezionare solo i dispositivi fisici sull'host KVM; il valore predefinito accetta "ogni dispositivo a blocchi" che include gli stessi LV. Il commento sopra il valore predefinito è abbastanza completo e può spiegare l'utilizzo meglio di me.

Soluzione 3:

Ho riscontrato più o meno lo stesso problema in combinazione con vgimportclone . A volte falliva con questo:

  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

A quel punto, se volevo distruggere lo snapshot, dovevo prima disabilitare temporaneamente udev a causa del bug descritto su https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/1088081

Ma anche allora, dopo aver apparentemente disattivato con successo il gruppo di volumi di LVM nidificato, la mappatura delle partizioni per il PV nidificato, creata da kpartx , in qualche modo è rimasto in uso.

Il trucco sembrava essere che il mapper del dispositivo manteneva una mappatura principale aggiuntiva utilizzando il vecchio nome del gruppo di volumi, come questo nell'elenco ad albero:

insidevgname-lvroot (252:44)
 └─outsidevgname-myvm--root-p2 (252:43)
    └─outsidevgname-myvm--root (252:36)

La soluzione era rimuovere semplicemente quella particolare mappatura con dmsetup remove insidevgname-lvroot . Dopodiché, kpartx -d e lvremove ha funzionato bene.


Linux
  1. Come estendere LVM quando non c'è spazio libero nel gruppo di volumi

  2. Come spostare lo scambio dalla partizione del disco al volume LVM in Linux

  3. Esempi di comandi lvdisplay in Linux

  4. Esempi di comandi lvmconf in Linux

  5. È così che funzionano gli snapshot LVM?

Aggiungi spazio di archiviazione con LVM

Installa Linux con LVM

Una guida sugli snapshot LVM con ext4 su CentOS 7

Come creare un gruppo di volumi in Linux con LVM

Logical Volume Manager (LVM) rispetto al partizionamento standard in Linux

Backup e ripristino di snapshot LVM su Linux