使用 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_lvmafter的句柄,但之後就不保留了?vgchange -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 --cacheafter 來停用/刪除cryptsetup close <device>。但是,我仍然不知道在這種情況下關閉 LUKS 容器是否會對其中儲存的資料產生負面影響。如果有人對此有更多了解,請告訴我。

相關內容