Я заметил, что иногда 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 в этой ситуации иметь негативные побочные эффекты для хранящихся в нем данных. Если кто-то знает об этом больше, пожалуйста, дайте мне знать.