Как вырастить файловую систему ext4 внутри тома dm-crypt/LVM?
У меня есть диск с этим форматом:
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
слой.
Сначала я создал эту файловую систему в два этапа (в псевдо-шеллскрипте):
Дезинфекция блочного устройства
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% (временной)