Luks 解密后分区未显示

Luks 解密后分区未显示

每次我解密我的 luks 驱动器时,分区都不会显示:

cryptsetup -v luksOpen /dev/md0 md0_crypt

lsblk
sdb                             8:16   0   3,7T  0 disk  
└─sdb1                          8:17   0   3,7T  0 part  
  └─md0                         9:0    0   7,3T  0 raid5 
    └─md0_crypt               253:11   0   7,3T  0 crypt 
sdc                             8:32   0   3,7T  0 disk  
└─sdc1                          8:33   0   3,7T  0 part  
  └─md0                         9:0    0   7,3T  0 raid5 
    └─md0_crypt               253:11   0   7,3T  0 crypt 
sdd                             8:48   0   3,7T  0 disk  
└─sdd1                          8:49   0   3,7T  0 part  
  └─md0                         9:0    0   7,3T  0 raid5 
    └─md0_crypt               253:11   0   7,3T  0 crypt 

当我运行partprobe时

partprobe
lsblk
sdb                                 8:16   0   3,7T  0 disk  
└─sdb1                              8:17   0   3,7T  0 part  
  └─md0                             9:0    0   7,3T  0 raid5 
    └─md0_crypt                   253:11   0   7,3T  0 crypt 
      └─md0_crypt1                253:12   0   7,3T  0 part  
sdc                                 8:32   0   3,7T  0 disk  
└─sdc1                              8:33   0   3,7T  0 part  
  └─md0                             9:0    0   7,3T  0 raid5 
    └─md0_crypt                   253:11   0   7,3T  0 crypt 
      └─md0_crypt1                253:12   0   7,3T  0 part  
sdd                                 8:48   0   3,7T  0 disk  
└─sdd1                              8:49   0   3,7T  0 part  
  └─md0                             9:0    0   7,3T  0 raid5 
    └─md0_crypt                   253:11   0   7,3T  0 crypt 
      └─md0_crypt1                253:12   0   7,3T  0 part

磁盘驱动器:

Disk /dev/mapper/md0_crypt: 7,3 TiB, 8001299677184 bytes, 15627538432 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: A599A15F-07DA-B340-ADDC-AA56AE2E9249

Device                      Start         End     Sectors  Size Type
/dev/mapper/md0_crypt-part1  2048 15627536383 15627534336  7,3T Linux

我想每次启动时都挂载 md0_crypt1 分区。但无需每次都运行partprobe。

我错过了什么?

答案1

对 LUKS/LVM 设备进行分区并不常见,因此大多数标准工具都没有涵盖这一点。事实上,将分区隐藏在设备映射器设备上是一项功能,因为使用逻辑卷作为支持设备的虚拟机通常会对这些分区进行分区,但不希望其分区显示在主机上。

我想每次启动时都挂载 md0_crypt1 分区。但无需每次都运行partprobe。

你几乎被它困住了。一旦你将它放入你的初始化脚本中的某个地方,你甚至不会注意到差异......(换句话说:自动化它)


在尝试低于此点的任何操作之前,请先进行备份。
也可以从未安装任何内容的 LiveCD 执行此操作。

选项1)

您可以完全删除多余的分区表(将所有数据移动 2048 秒,即第一个也是唯一一个分区的偏移量)。高度危险的dd命令:

dd status=progress bs=1M if=/dev/mapper/md0_crypt1 of=/dev/mapper/md0_crypt

注意:像这样的 dd'ing 必须确保不会覆盖尚未读取的数据,因此这在另一个方向上不起作用。

选项2)

将分区表转换为 LVM 也可能是可行的(并且不需要重新定位任何数据),但是 LVM 现在更喜欢更大的元数据区域,并且还喜欢清零和擦除签名。因此,您必须小心避免这些情况,并确保第一个 PE 从 1M 开始,而不是 2M 或其他更大的默认值。

[ replace /dev/loop0 with /dev/mapper/md0_crypt ]
# vgcreate --dataalignment 1M --metadatasize 128K vgname /dev/loop0
[ this step will wipe GPT signature ]
# pvs -o +pe_start /dev/loop0
  PV         VG     Fmt  Attr PSize    PFree 1st PE 
  /dev/loop0 foobar lvm2 a--  1020.00m    0    1.00m
                                             ^^^^^^^
[ 1st PE must be 1.00m (2048s) otherwise abort mission! ]
# lvcreate --wipesignatures n --zero n -l100%FREE -n lvname vgname
# file -sL /dev/vgname/lvname
/dev/vgname/lvname: Linux rev 1.0 ext4 filesystem data [...]
[ if there's no filesystem, something went wrong ]

可以这样做,但在没有完整备份的情况下不应尝试。

相关内容