MD + LUKS + LVM 不会干净地关闭

Mic*_*kel 6 encryption lvm mdadm luks

我的设置目前是每个 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
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式启动设备

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
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法反其道而行之并关闭它。

umount /mnt/data            # ok
vgchange -an /dev/data_raid # ok
cryptsetup luksClose data-crypt0 # fail
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我多次看到以下内容,但设备没有关闭。

device-mapper: remove ioctl on data-crypt0 failed: Device or resource busy
Run Code Online (Sandbox Code Playgroud)

这是在重新启动之后,我所做的只是我在没有使用分区上的任何数据的情况下显示的命令。如果有人对设置或如何关闭它有任何疑问,我想提供一些建议。

fro*_*utz 7

我在安装 Ubuntu 13.04 时遇到了类似的问题。由于某种原因(可能是错误),vgchange -a n不会删除设备映射。因此,LVM物理卷(即LUKS容器)仍被认为在使用中,不能被luksClose'd。

检查您是否有相同的问题使用dmsetup ls. 如果它列出了您的任何 data_raid 逻辑卷,并且即使在 之后它们仍然存在vgchange -a n,您可以使用 删除它们dmsetup remove NAME

删除所有设备映射后,您应该可以关闭 luksClose。