Группа томов все еще активна после отключения с помощью vgchange?

Группа томов все еще активна после отключения с помощью vgchange?

Я заметил, что иногда vgchange -a n [vgname]кажется, что группа томов не закрывается должным образом. Чаще всего это происходит, когда я фактически готовлю новую систему и не знаю, что вызывает это. Рассмотрим следующую структуру диска (вывод lsblk -o name,fstype)

NAME                   FSTYPE
/dev/sdx
+- /dev/sdx1           crypto_LUKS
|  +- test_luks        LVM2_member
|  |  +- test_lvm-test ext4

Когда я открываю все это обычным способом ( cryptsetup open ..., vgchange -a y ..., и т.д.), делаю что-то test_lvm-testи затем закрываю все с помощью

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

test_lvmисчезает из вывода , vgsкак и ожидалось. НО, если я только что создал эту структуру (см. ниже, чтобы воспроизвести), смонтировал ее в первый раз, а затем закрыл ее таким же образом, test_lvmне исчезает из вывода vgs. Вместо этого vgsжалуется, что устройство для физического тома "не найдено или отклонено фильтром". Чтобы удалить ошибку из vgsмне приходится снова открывать test_luksи test_lvm, снова отключать test_lvmи снова закрывать test_luks.

Почему это происходит? Почему LVM сохраняет дескриптор test_lvmпосле vgchange -a n test_lvm; cryptsetup close test_luksтого, как он был смонтирован в первый раз, но не после?


Мне удалось воспроизвести это поведение наиболее последовательно с помощью Arch Linux Live CD "Arch Linux 5.2.5-arch1-1-ARCH" в VirtualBox следующим образом:

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

решение1

Сообщения об ошибках о том, что PV не найден после закрытия контейнера LUKS, можно отключить/удалить, просто запустив pvscan --cacheпосле cryptsetup close <device>. Однако я все еще не знаю, может ли закрытие контейнера LUKS в этой ситуации иметь негативные побочные эффекты для хранящихся в нем данных. Если кто-то знает об этом больше, пожалуйста, дайте мне знать.

Связанный контент