Noté que a veces vgchange -a n [vgname]
parece que el grupo de volúmenes no se cierra correctamente. Esto sucede con mayor frecuencia cuando preparo un nuevo sistema y no sé qué está causando esto. Considere la siguiente estructura de disco (salida de lsblk -o name,fstype
)
NAME FSTYPE
/dev/sdx
+- /dev/sdx1 crypto_LUKS
| +- test_luks LVM2_member
| | +- test_lvm-test ext4
Cuando abro todas estas cosas de la manera normal ( cryptsetup open ...
,, vgchange -a y ...
etc.), hago algunas cosas test_lvm-test
y luego cierro todo con
umount [mountpoint of test_lvm-test]
vgchange -a n test_lvm
cryptsetup close test_luks
test_lvm
desaparece de la salida de vgs
como se esperaba. PERO, si acabo de crear esta estructura (ver reproducción a continuación), la monté por primera vez y luego la cerré de la misma manera, test_lvm
no desaparece de la salida de vgs
. En cambio, vgs
se queja de que el dispositivo para el volumen físico "no fue encontrado o rechazado por un filtro". Para eliminar el error vgs
tengo que volver a abrir test_luks
y test_lvm
desactivar test_lvm
nuevamente y cerrar test_luks
nuevamente.
¿Por qué pasó esto? ¿Por qué LVM mantiene un control de test_lvm
after vgchange -a n test_lvm; cryptsetup close test_luks
cuando se montó por primera vez, pero no después?
Pude reproducir este comportamiento de manera más consistente con el Live CD de Arch Linux "Arch Linux 5.2.5-arch1-1-ARCH" en VirtualBox de esta manera
# 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.
Respuesta1
Los mensajes de error sobre el PV que no se encuentra después de cerrar el contenedor LUKS se pueden desactivar/eliminar simplemente ejecutando pvscan --cache
after cryptsetup close <device>
. Sin embargo, todavía no sé si cerrar el contenedor LUKS en esta situación puede tener efectos secundarios negativos en los datos almacenados en su interior. Si alguien sabe más sobre esto, hágamelo saber.