Percebi que às vezes vgchange -a n [vgname]
parece não fechar o grupo de volumes corretamente. Isso acontece com mais frequência, quando eu realmente preparo um novo sistema e não sei o que está causando isso. Considere a seguinte estrutura de disco (saída de lsblk -o name,fstype
)
NAME FSTYPE
/dev/sdx
+- /dev/sdx1 crypto_LUKS
| +- test_luks LVM2_member
| | +- test_lvm-test ext4
Quando eu abro todas essas coisas da maneira normal ( cryptsetup open ...
, vgchange -a y ...
, etc.), faça algumas coisas test_lvm-test
e feche tudo com
umount [mountpoint of test_lvm-test]
vgchange -a n test_lvm
cryptsetup close test_luks
test_lvm
desaparece da saída de vgs
como esperado. MAS, se eu acabei de criar essa estrutura (veja abaixo para reproduzir), montei pela primeira vez e depois fechei da mesma forma, test_lvm
não desaparece da saída do vgs
. Em vez disso, vgs
reclama que o dispositivo para o volume físico "não foi encontrado ou rejeitado por um filtro". Para remover o erro de vgs
Tenho que reabrir test_luks
e test_lvm
, desativar test_lvm
novamente e fechar test_luks
novamente.
Por que isso acontece? Por que o LVM mantém o identificador test_lvm
after vgchange -a n test_lvm; cryptsetup close test_luks
, quando foi montado pela primeira vez, mas não depois?
Consegui reproduzir esse comportamento de maneira mais consistente com o Arch Linux Live CD "Arch Linux 5.2.5-arch1-1-ARCH" no VirtualBox assim
# 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.
As mensagens de erro sobre o PV não encontrado após o fechamento do contêiner LUKS podem ser desabilitadas/removidas simplesmente executando
pvscan --cache
apóscryptsetup close <device>
. No entanto, ainda não sei se fechar o contêiner LUKS nessa situação pode ter efeitos colaterais negativos nos dados armazenados nele. Se alguém souber mais sobre isso, por favor me avise.