我有一张这种格式的磁盘:
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 脚本)创建了这个文件系统:
清理块设备
lvcreate vg-lv2
$randompassword = $(pwgen)
cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 /dev/mapper/vg-lv2
,以$randompassword
作为键。cryptsetup luksOpen /dev/mapper/vg-lv2 sanitize
nice -20 ionice -c 3 dd if=/dev/zero of=/dev/mapper/sanitize bs=1M
cryptsetup remove sanitize
准备块设备以供生产使用
- 选择一个密码
cryptsetup luksFormat --cipher aes-cbc-essiv:sha256 --key-size 256 /dev/mapper/vg-lv2
,使用新密钥。cryptsetup luksOpen /dev/mapper/vg-lv2 lv2
mke2fs /dev/mapper/vg-lv2
(我不记得争论的内容,但可能没有)
当准备投入生产使用时,未加密的块设备被归零(有效地在加密设备中写入伪随机数据)。
现在,由于我想扩大文件系统,我还应该采取第一步,在使用前对其进行清理。这是我不知道该怎么做的:
- 我可以调用调整大小函数并最终使用整个空间,但我对这个想法不太满意。
- 我可以将逻辑卷缩小到之前的大小,创建一个新的逻辑卷,在其中执行这些步骤,然后删除它,再次增大 LV,并希望它占据先前清理过的逻辑卷的空间(“希望”是我不喜欢这种方法的原因)
- 我必须毫无疑问地知道 上的偏移量
/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%(暂时))