У меня есть диск такого формата:
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
(Аргументов не помню, но наверное не было)Когда оно было готово к производственному использованию, незашифрованное блочное устройство было обнулено (фактически записывались псевдослучайные данные в зашифрованное устройство).
Теперь, поскольку я хочу расширить файловую систему, я должен сделать первый шаг и продезинфицировать ее перед использованием. Вот что я не умею делать:
/dev/mapper/vg-lv2
есть, и dd if=/dev/zero of=/dev/mapper/vg-lv2 bs=1M skip=$SKIPBLOCKS
. Я могу не получить это $SKIPBLOCKS
переменная неверна, поэтому мне действительно нужно знать, как я могу узнать, учитывая уже существующую файловую систему, которая является первым пустым блоком после нее, поэтому я могу рандомизировать это пространство и далее.Вы можете изменить размер тома dmcrypt с помощью resize
:
cryptsetup --help|grep -i resize
resize <name> - resize active device
После этого вы можете resize2fs
.
Что касается вашего комментария о случайных данных: вы также можете сделать это из файловой системы. Итак, измените его размер, смонтируйте, а затем заполните каждый последний байт случайным файлом:
dd if=/dev/urandom of=/deleteme bs=1M
А затем удалите файл.
(для достижения наилучших результатов используйте tune2fs
установить количество зарезервированных блоков на 0% (временно))