Solusi 1:
Terkadang dokumentasi yang relevan disembunyikan di file konfigurasi daripada di, katakanlah, dokumentasi. Begitu pula dengan LVM.
Secara default, LVM akan secara otomatis mencoba mengaktifkan volume pada perangkat fisik apa pun yang terhubung ke sistem setelah boot, selama semua PV ada, dan lvmetad dan udev (atau yang lebih baru systemd) sedang berjalan. Saat snapshot LVM dibuat, acara udev dijalankan, dan karena snapshot berisi PV, lvmetad secara otomatis menjalankan pvscan
, dan seterusnya.
Dengan melihat /etc/lvm/backup/docker-volumes
Saya dapat menentukan bahwa lvmetad telah menjalankan pvscan
secara eksplisit pada snapshot dengan menggunakan nomor mayor dan minor perangkat, yang melewati filter LVM yang biasanya akan mencegah hal ini. File tersebut berisi:
description = "Created *after* executing 'pvscan --cache --activate ay 253:13'"
Perilaku ini dapat dikontrol dengan menyetel auto_activation_volume_list
di /etc/lvm/lvm.conf
. Ini memungkinkan Anda untuk mengatur grup volume, volume, atau tag mana yang diizinkan untuk diaktifkan secara otomatis.
Jadi, saya cukup menyetel filter agar memuat kedua grup volume untuk host; apa pun tidak akan cocok dengan filter dan tidak diaktifkan secara otomatis.
auto_activation_volume_list = [ "mandragora", "vm-volumes" ]
Volume LVM tamu tidak lagi muncul di host, dan akhirnya, cadangan saya berjalan...
Solusi 2:
Anda ingin mengedit nilai 'filter' di /etc/lvm/lvm.conf untuk memeriksa hanya perangkat fisik di host KVM; nilai default menerima 'setiap perangkat blok' yang mencakup LV itu sendiri. Komentar di atas nilai default cukup komprehensif dan dapat menjelaskan penggunaan dengan lebih baik daripada yang saya bisa.
Solusi 3:
Saya mengalami masalah yang kira-kira sama dalam kombinasi dengan vgimportclone
. Terkadang gagal dengan ini:
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
Pada saat itu, jika saya ingin menghancurkan snapshot, pertama-tama saya harus menonaktifkan sementara udev
karena bug yang dijelaskan di https://bugs.launchpad.net/ubuntu/+source/lvm2/+bug/1088081
Namun demikian, setelah tampaknya berhasil menonaktifkan grup volume LVM bersarang, pemetaan partisi untuk PV bersarang, dibuat oleh kpartx
, entah bagaimana tetap digunakan.
Triknya adalah bahwa pembuat perangkat menyimpan pemetaan induk tambahan menggunakan nama grup volume lama, seperti ini di daftar hierarki:
insidevgname-lvroot (252:44)
└─outsidevgname-myvm--root-p2 (252:43)
└─outsidevgname-myvm--root (252:36)
Solusinya adalah menghapus pemetaan khusus itu dengan dmsetup remove insidevgname-lvroot
. Setelah itu, kpartx -d
dan lvremove
bekerja dengan baik.