使用 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_lvmvgs按照预期从 的输出中消失。但是,如果我刚刚创建了这个结构(请参阅下面的重现),第一次安装它,然后以相同的方式关闭它,test_lvm它不会从 的输出中消失vgs。相反,vgs它会抱怨物理卷的设备“未被找到或被过滤器拒绝”。要删除 中的错误,vgs我必须重新打开test_lukstest_lvm,再次禁用test_lvm并再次关闭test_luks

为什么会发生这种情况?为什么 LVM在第一次安装时会保留句柄,但之后却不会保留test_lvmvgchange -a n test_lvm; cryptsetup close test_luks


我能够在 VirtualBox 中使用 Arch Linux Live CD“Arch Linux 5.2.5-arch1-1-ARCH”最一致地重现此行为,如下所示

# 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

关闭 LUKS 容器后,有关未找到 PV 的错误消息可以通过简单地运行来禁用/删除pvscan --cachecryptsetup close <device>但是,我仍然不知道在这种情况下关闭 LUKS 容器是否会对存储在其中的数据产生负面影响。如果有人对此有更多了解,请告诉我。

相关内容