如何缩小LUKS分区,`cryptsetup resize`会做什么?


14

我正在调整包含单个ext4文件系统(没有LVM等)的LUKS加密分区的大小。该cryptsetup FAQ建议删除旧的分区并重新创建它,但是,像浪费了很多时间的声音。因此,我想手动进行操作,仔细调整分区的大小。

到目前为止,我认为我需要做:

  1. 创建文件系统的(加密)备份。重要!在执行以下任务时,您不会是第一个丢失数据的人。
  2. 卸载现有的ext4文件系统(例如,通过引导到Live CD)。如果从Live CD引导,请使用以下命令挂载加密分区:cryptsetup luksOpen /dev/sdXY ExistingExt4
  3. 调整现有ext4文件系统的大小
  4. cryptsetup resize /dev/mapper/ExistingExt4 -b $SECTORS
  5. 使用以下命令关闭/“卸载” LUKS分区 cryptsetup luksClose ExistingExt4
  6. 缩小分区大小。

以上步骤正确吗?

在第4步中,我应该选择$SECTORS什么?这一步是否有必要?cryptsetup手册是不是真正描述性的resize选项:

resize <name>
    resizes an active mapping <name>.
    If --size (in sectors) is not specified, the size of the underlying
    block device is used.

最后,如果我将ext4分区缩小15 GiB,可以安全地假定可以使用来从现有分区中删除15 GiB parted吗?如果是,该怎么办?如果重要的话,我的磁盘已进行GPT分区。


1
我一直想知道关于cryptsetup的resize选项。甚至cryptsetup FAQ都说:“ 2.15我可以调整dm-crypt或LUKS分区的大小吗?是的,您可以,因为dm-crypt和LUKS都不存储分区的大小。” 那么,为什么它与分区大小无关而具有调整大小选项呢?
Dago 2014年

Answers:


15

在备份(步骤1)并卸载(在2和3之间)之后,运行fsck以确保文件系统运行状况良好:

e2fsck -f /dev/mapper/ExistingExt4

除此之外,这些步骤都可以。

我应该为$ SECTORS选择什么?这一步是否有必要?

此步骤是必需的,否则分区仍将显示在较旧的一侧。使用Nautilus可以确认这一点,即使使用调整了大小之后resize2fs,LUKS分区也显示为旧大小。运行后cryptsetup resize,将显示正确的数字。 此步骤不是必需的。它仅影响当前大小状态,如文件浏览器中所示。更改大小并再次关闭/打开分区后,该数字将恢复。因此,如稍后所示关闭LUKS分区时,将使其过时。

$SECTORS可以通过查看以下命令的输出来确定cryptsetup status ExistingExt4

    / dev / mapper / ExistingExt4已激活。
      类型:LUKS1
      密码:aes-cbc-essiv:sha256
      密钥大小:256位
      设备:/ dev / sda2
      抵消:2056个行业
      大小:     156049348扇区
      模式:读/写

一个扇区总是512字节(在cryptsetup手册页中提到)。因此,要减去15 GiB,请使用以下扇区大小156049348 - 15 * 1024 * 1024 * 2 = 124592068

cryptsetup resize ExistingExt4 -b 124592068

至于调整分区大小,parted可以与GPT分区配合使用。resize但是,此命令不起作用,作为一种解决方法(或解决方案),请删除分区信息并根据http://ubuntuforums.org/showthread.php?p=8721017#post8721017的启发创建一个新分区:

cryptsetup luksClose ExistingExt4深裂的/ dev / SDA2
GNU Parted 2.3
使用/ dev / sda
欢迎来到GNU Parted!键入“ help”以查看命令列表。
(分)单位s 
(分)p
型号:ATA INTEL SSDSA2CW08(scsi)
磁盘/ dev / sda:156301488s
扇区大小(逻辑/物理):512B / 512B
分区表:gpt

编号开始结束大小文件系统名称标志
 1 34s 2082s 2049s引导bios_grub
 3 2083s 250034s 247952s ext2 RootBoot
 2 250035s 156301438s 156051404s一切

由于必须刮掉15 GiB,因此新的末端变为156301438 - 15 * 1024 * 1024 * 2 = 124844158。由于我要更改分区2,因此我首先必须将其删除,然后使用标签“ Everything”重新创建(如果您愿意,可以更改)。注意:此磁盘具有GPT布局。对于MBR,则应更换Everything通过primaryextended(未经测试,调整对MBR分区还没有经过测试和推荐,因为它是未经测试)。

警告:以下命令破坏了数据。不要在不了解情况的情况下进行复制。扇区尺寸必须更改,否则您破坏分区。对于您的愚蠢行为,我绝不负责。在将数据冒险之前,请先将数据备份第二个存储介质。

(parted)RM 2 
(parted)mkpart Everything 250035s 124844158s
警告:生成的分区未正确对齐以获得最佳性能。
忽略/取消?忽略 
(分开)p
型号:ATA INTEL SSDSA2CW08(scsi)
磁盘/ dev / sda:156301488s
扇区大小(逻辑/物理):512B / 512B
分区表:gpt

编号开始结束大小文件系统名称标志
 1 34s 2082s 2049s引导bios_grub
 3 2083s 250034s 247952s ext2 RootBoot
 2 250035s   124844158s 124594124s                一切
(分开)退出

在上面的parted示例中,我的扇区未对齐,这是较早安装的错误,因此请不要过多注意。

这就对了!您可以使用cryptsetup statusfile -Ls /dev/...验证一切正常,然后重新启动。


1
我强烈建议不要在没有完整备份的情况下使用此解决方案,因为它很可能会出错。但是,如果您具有完整备份,则创建新分区要容易得多。

让我猜猜,一个人这样做了吗?无论如何,我现在已经明确地强调,应该在进行备份之前执行备份。我认为很明显,在手动执行此操作之前必须执行备份...即使如此,如果给出了明确的说明和验证方法,有人又怎么会搞砸呢?
Lekensteyn

您是否还提到了失败的原因?每个人都可以声称所提供的信息不正确,但是我想对其进行验证。将来可能对其他用户有所帮助...
Lekensteyn 2013年

亚诺(Arno)在邮件列表上谈论了此帖子:saout.de/pipermail/dm-crypt/2013-September/003521.html
Philipp

代替rm 2mkpart [part-type] [start] [end],还可以resizepart 2 [end]用于调整分区的大小,而无需更改名称或起始偏移量。
罗布W

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.