Как вырастить файловую систему 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 слой.

Сначала я создал эту файловую систему в два этапа (в псевдо-шеллскрипте):

  • Дезинфекция блочного устройства

    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% (временной)

Другие вопросы по тегам