如何在 dm-crypt/LVM 卷内扩展 ext4 文件系统?

如何在 dm-crypt/LVM 卷内扩展 ext4 文件系统?

我有一张这种格式的磁盘:

sdc                          8:32   0   1,8T  0 disk  
└─sdc1                       8:33   0   1,8T  0 part  
  ├─vg-lv1 (dm-0)          254:0    0   900G  0 lvm   /media/lv1
  └─vg-lv2 (dm-1)          254:1    0   923G  0 lvm   
    └─lv2 (dm-9)           254:9    0   923G  0 crypt /media/lv2

lv2是一个 ext4 文件系统,但其下面的块设备(逻辑卷vg-lv2)用 加密dm-crypt

安全地扩展此文件系统的步骤是什么?

我已经扩大了逻辑卷,我知道我必须这么做resize2fs,但我猜我必须在该dm-crypt层上做些什么。

我首先通过两个步骤(使用伪 shell 脚本)创建了这个文件系统:

  • 清理块设备

    1. lvcreate vg-lv2
    2. $randompassword = $(pwgen)
    3. cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 /dev/mapper/vg-lv2,以$randompassword作为键。
    4. cryptsetup luksOpen /dev/mapper/vg-lv2 sanitize
    5. nice -20 ionice -c 3 dd if=/dev/zero of=/dev/mapper/sanitize bs=1M
    6. cryptsetup remove sanitize

  • 准备块设备以供生产使用

    1. 选择一个密码
    2. cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 /dev/mapper/vg-lv2,使用新密钥。
    3. cryptsetup luksOpen /dev/mapper/vg-lv2 lv2
    4. mke2fs /dev/mapper/vg-lv2(我不记得争论的内容,但可能没有)

当准备投入生产使用时,未加密的块设备被归零(有效地在加密设备中写入伪随机数据)。

现在,由于我想扩大文件系统,我还应该采取第一步,在使用前对其进行清理。这是我不知道该怎么做的:

  1. 我可以调用调整大小函数并最终使用整个空间,但我对这个想法不太满意。
  2. 我可以将逻辑卷缩小到之前的大小,创建一个新的逻辑卷,在其中执行这些步骤,然后删除它,再次增大 LV,并希望它占据先前清理过的逻辑卷的空间(“希望”是我不喜欢这种方法的原因)
  3. 我必须毫无疑问地知道 上的偏移量/dev/mapper/vg-lv2是多少,并且dd if=/dev/zero of=/dev/mapper/vg-lv2 bs=1M skip=$SKIPBLOCKS。我可以不是这个$SKIPBLOCKS变量是错误的,所以我真正需要知道的是,给定一个已经存在的文件系统,我怎么才能知道它之后的第一个空块,这样我就可以随机化那个空间。

答案1

您可以使用以下命令调整 dmcrypt 卷的大小resize

cryptsetup --help|grep -i resize
    resize <name> - resize active device

完成后你就可以resize2fs

至于你对随机数据的评论:你也可以在文件系统内执行此操作。因此,调整其大小,挂载它,然后用随机文件填充每个字节:

dd if=/dev/urandom of=/deleteme bs=1M

然后删除该文件。

(为获得最佳效果,请将tune2fs保留块数设置为 0%(暂时))

相关内容