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_lvmtest_lvmtest_luks

なぜこのようなことが起こるのでしょうか? LVM は、 が初めてマウントされたときは のハンドルを保持しますが、それ以降は のハンドルを保持しないのはtest_lvmなぜですか?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 コンテナを閉じると、内部に保存されているデータに悪影響が出るかどうかはまだわかりません。これについて詳しい方がいらっしゃいましたら、お知らせください。

関連情報