MD + LUKS + LVM 不會完全關閉

MD + LUKS + LVM 不會完全關閉

我的設定目前是每個 md 分割區上的 raid1 + luks 和頂部的 lvm 以在陣列之間進行條帶化。目前只有一個卷組和一個邏輯卷。

sdc                             8:32   0   1.8T  0 disk
└─sdc1                          8:33   0   1.8T  0 part
  └─md127                       9:127  0   1.8T  0 raid1
    └─data-crypt0 (dm-3)      252:3    0   1.8T  0 crypt
      └─data_raid-data (dm-5) 252:5    0   2.7T  0 lvm   /mnt/data
sdd                             8:48   0 931.5G  0 disk
└─sdd1                          8:49   0 931.5G  0 part
  └─md126                       9:126  0 931.4G  0 raid1
    └─data-crypt1 (dm-4)      252:4    0 931.4G  0 crypt
      └─data_raid-data (dm-5) 252:5    0   2.7T  0 lvm   /mnt/data

我可以透過以下方式啟動設備

cryptsetup luksOpen /dev/md/data:0 data-crypt0     # decrypt
cryptsetup luksOpen /dev/md/data:1 data-crypt1     # decrypt
vgchange -ay /dev/data_raid                        # turn on lvm
mount /dev/data_raid/data /mnt/data                # mount

不幸的是,我無法朝相反的方向關閉它。

umount /mnt/data            # ok
vgchange -an /dev/data_raid # ok
cryptsetup luksClose data-crypt0 # fail

由於某種原因,我多次看到以下內容,並且設備沒有關閉。

device-mapper: remove ioctl on data-crypt0 failed: Device or resource busy

這是重新啟動後的情況,我所做的只是顯示的命令,而沒有使用分區上的任何資料。如果有人對設定或如何關閉它有任何了解,我希望得到一些建議。

答案1

我在安裝 Ubuntu 13.04 時遇到了類似的問題。由於某種原因(可能是錯誤),vgchange -a n不會刪除裝置對應。因此,LVM 實體磁碟區(即 LUKS 容器)仍被視為正在使用,並且不能被 luksClose。

檢查您使用時是否遇到相同的問題dmsetup ls。如果它列出了您的任何 data_raid 邏輯卷,並且即使在 後它們仍然存在vgchange -a n,您可以使用 刪除它們dmsetup remove NAME

刪除所有設備映射後,您應該能夠關閉。

相關內容