Mir ist aufgefallen, dass vgchange -a n [vgname]
die Volume-Gruppe manchmal nicht richtig geschlossen wird. Das passiert am häufigsten, wenn ich tatsächlich ein neues System vorbereite und nicht weiß, was die Ursache dafür ist. Betrachten Sie die folgende Datenträgerstruktur (Ausgabe von lsblk -o name,fstype
)
NAME FSTYPE
/dev/sdx
+- /dev/sdx1 crypto_LUKS
| +- test_luks LVM2_member
| | +- test_lvm-test ext4
Wenn ich das alles ganz normal öffne ( cryptsetup open ...
, vgchange -a y ...
, usw.), mache ein paar Sachen an test_lvm-test
und schließe dann alles mit
umount [mountpoint of test_lvm-test]
vgchange -a n test_lvm
cryptsetup close test_luks
test_lvm
verschwindet wie erwartet aus der Ausgabe von vgs
. ABER, wenn ich diese Struktur gerade erstellt habe (siehe unten zur Reproduktion), sie zum ersten Mal gemountet und sie dann auf die gleiche Weise geschlossen habe, test_lvm
verschwindet nicht aus der Ausgabe von vgs
. Stattdessen vgs
beschwert sich , dass das Gerät für das physische Volume „nicht gefunden oder von einem Filter abgelehnt wurde“. Um den Fehler von zu beheben, vgs
muss ich erneut öffnen test_luks
und test_lvm
, erneut deaktivieren test_lvm
und test_luks
erneut schließen.
Warum passiert das? Warum behält LVM einen Handle von test_lvm
after vgchange -a n test_lvm; cryptsetup close test_luks
, wenn es zum ersten Mal gemountet wurde, aber nicht danach?
Ich konnte dieses Verhalten am zuverlässigsten mit der Arch Linux Live-CD "Arch Linux 5.2.5-arch1-1-ARCH" in VirtualBox wie folgt reproduzieren
# Let /dev/sdx1 be the partition to test this on
#
# Create LVM on LUKS with one ext4 volume
#
cryptsetup luksFormat --cipher aes-xts-plain64 --hash sha256 --label "Test (Encrypted)" /dev/sdx1
cryptsetup open /dev/sdx1 test_luks
pvcreate /dev/mapper/test_luks
vgcreate test_lvm /dev/mapper/test_luks
lvcreate --extents 100%FREE test_lvm --name test
mkfs.ext4 -L Test /dev/test_lvm/test
#
# Mount volume and write to it
#
mount /dev/test_lvm/test /mnt
echo "Hello World" > /mnt/test.txt
#
# Unmount everything
#
umount /mnt
vgchange -a n test_lvm
# -> 0 logical volume(s) in volume group "test_lvm" now active
cryptsetup close test_luks
#
# Check vgs
#
vgs
# -> Warning: Device for PV [uuid] not found or rejected by a filter.
# -> Warning: Device for PV [same uuid] not found or rejected by a filter.
# -> Couldn't find device with uuid [same uuid again].
# -> VG #PV #LV #SM Attr VSize VFree
# -> test_lvm 1 1 0 wz-pn- 492.00m 0
#
# Mount and unmount again
#
cryptsetup open /dev/sdx1 test_luks
vgs
# No error this time
vgchange -a n test_lvm
cryptsetup close test_luks
# test_lvm no longer listed in vgs and no errors.
Antwort1
Die Fehlermeldungen, dass der PV nach dem Schließen des LUKS-Containers nicht gefunden wurde, können durch einfaches Ausführen von pvscan --cache
after deaktiviert/entfernt werden cryptsetup close <device>
. Ich weiß jedoch immer noch nicht, ob das Schließen des LUKS-Containers in dieser Situation negative Nebenwirkungen auf die darin gespeicherten Daten haben kann. Wenn jemand mehr darüber weiß, lassen Sie es mich bitte wissen.