Volume-Gruppe nach Deaktivierung mit vgchange noch aktiv?

Volume-Gruppe nach Deaktivierung mit vgchange noch aktiv?

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-testund schließe dann alles mit

umount [mountpoint of test_lvm-test]
vgchange -a n test_lvm
cryptsetup close test_luks

test_lvmverschwindet 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_lvmverschwindet nicht aus der Ausgabe von vgs. Stattdessen vgsbeschwert sich , dass das Gerät für das physische Volume „nicht gefunden oder von einem Filter abgelehnt wurde“. Um den Fehler von zu beheben, vgsmuss ich erneut öffnen test_luksund test_lvm, erneut deaktivieren test_lvmund test_lukserneut schließen.

Warum passiert das? Warum behält LVM einen Handle von test_lvmafter 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 --cacheafter 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.

verwandte Informationen