Как попробовать LVM на образах дисков?

Я хочу написать скрипт, который работает с LVM (создает физические тома, группы томов и т. Д.) На компьютере с двумя жесткими дисками. Однако в моем компьютере нет второго жесткого диска, и я не хочу его добавлять.

Есть ли способы эмулировать такие условия, кроме использования Virtual Box?

Я хочу иметь возможность манипулировать некоторыми виртуальными физическими томами, группами томов, т.е. использовать pvcreate, vgcreate, lvcreate, так далее.

1 ответ

Решение

Использование разреженных файлов вместо дисков

Если вы хотите поиграться с LVM без внесения изменений в разделы на ваших дисках, да, это можно сделать. Создайте пару редких файлов, которые могут служить вашими "виртуальными дисками". Затем создайте разделы в этих файлах и настройте петлевые устройства, используя образы дисков. Оттуда вы можете поиграть с LVM на устройствах петли, которые указывают на ваши образы дисков.


Сделайте ваши разреженные файлы
Запустите следующее в терминале, чтобы создать два разреженных файла. Разреженные файлы всегда сообщают, что они имеют предопределенный фиксированный размер, но в действительности они первоначально используют 0 байт дискового пространства. Когда они записаны, они могут расти до тех пор, пока либо не достигнут своего заранее определенного размера, либо на диске, содержащем их, больше не будет места.

  • truncate -s 1T /tmp/disk1.img
  • truncate -s 1T /tmp/disk2.img

Создать разделы на образах дисков
Теперь у вас есть два файла, которые вы можете рассматривать как диски. Используйте fdisk для разделения этих изображений. Если вы не знаете, как использовать fdisk для создания разделов, вы можете ознакомиться с этим руководством или выполнить приведенные ниже команды, которые создадут два раздела по 512 ГБ каждый на обоих образах дисков.

sudo sfdisk /tmp/disk1.img <<< "$(base64 -d <<< "bGFiZWw6IGRvcwpsYWJlbC1pZDogMHhkODdlMWQ1MwpkZXZpY2U6IC90bXAvZGlzazEuaW1nCnVuaXQ6IHNlY3RvcnMKCi90bXAvZGlzazEuaW1nMSA6IHN0YXJ0PSAgICAgICAgMjA0OCwgc2l6ZT0gIDEwNzM3NDE4MjQsIHR5cGU9ODMKL3RtcC9kaXNrMS5pbWcyIDogc3RhcnQ9ICAxMDczNzQzODcyLCBzaXplPSAgMTA3MzczOTc3NiwgdHlwZT04Mwo=")"
sudo sfdisk /tmp/disk2.img <<< "$(base64 -d <<< "bGFiZWw6IGRvcwpsYWJlbC1pZDogMHg4ZWMwYWYyZgpkZXZpY2U6IC90bXAvZGlzazIuaW1nCnVuaXQ6IHNlY3RvcnMKCi90bXAvZGlzazIuaW1nMSA6IHN0YXJ0PSAgICAgICAgMjA0OCwgc2l6ZT0gIDEwNzM3NDE4MjQsIHR5cGU9ODMKL3RtcC9kaXNrMi5pbWcyIDogc3RhcnQ9ICAxMDczNzQzODcyLCBzaXplPSAgMTA3MzczOTc3NiwgdHlwZT04Mwo=")"

Настройка изображений на петлевых устройствах
Затем мы даем возможность подключить образы дисков к некоторым петлевым устройствам, чтобы мы могли работать с разделами. В терминале выполните следующие команды (losetup -f возвращает следующее доступное устройство петли)

  • sudo losetup -P $(losetup -f) /tmp/disk1.img
  • sudo losetup -P $(losetup -f) /tmp/disk2.img

Определите, к каким устройствам подключены наши разделы
Теперь нам нужно выяснить, какие петлевые устройства указывают на наши разделы. Запустите следующее в терминале:

  • sudo losetup -a | grep -P "disk[12].img | cut -f1 -d:"
    Выход
    / DEV / Loop3
    / DEV /loop4
    Это интересующие нас устройства цикла, которые мы будем искать в выходных данных следующей команды
  • sudo blkid
    Вывод, который соответствует моим устройствам цикла
    /dev/loop3: PTUUID="d87e1d53" PTTYPE="dos"
    /dev/loop3p1: PARTUUID="d87e1d53-01"
    /dev/loop3p2: PARTUUID="d87e1d53-02"
    /dev/loop4: PTUUID="8ec0af2f" PTTYPE="dos"
    /dev/loop4p1: PARTUUID="8ec0af2f-01"
    /dev/loop4p2: PARTUUID="8ec0af2f-02"
    Так что мои разделы disk1 находятся на /dev/loop3p1 а также /dev/loop3p2и мои разделы disk2 находятся на /dev/loop4p1 а также /dev/loop4p2, Вы, вероятно, можете пойти отсюда, но я продолжу с примером конфигурации LVM.

Пример настройки LVM
Я только собираюсь использовать диск 1, раздел 1 и диск 2 раздел 2 в моей конфигурации LVM. Из терминала запустите следующее, заменив пути к устройствам цикла при необходимости:

  • Настройте физические тома: sudo pvcreate /dev/loop3p1 /dev/loop4p2
  • Настройка группы томов: vgcreate my_volume_group /dev/loop3p1 /dev/loop4p2
  • Настройте пару разделов:
    • partition1: sudo lvcreate --name root --size 30G my_volume_group
    • Partition2: sudo lvcreate --name swap --size 4G my_volume_group
    • Partition3: sudo lvcreate --name home --extents +100%free my_volume_group

Теперь у меня есть одна группа томов с 1 ТБ места, которая берется из 512G на disk1.img и 512G на disk2.img. Это можно проверить, запустив:

  • sudo pvs какие выводы
    PV           VG              Fmt  Attr PSize   PFree
    /dev/loop3p1 my_volume_group lvm2 a--  512.00g    0 
    /dev/loop4p2 my_volume_group lvm2 a--  512.00g    0 
    
  • sudo vgs какие выводы
    VG              #PV #LV #SN Attr   VSize    VFree
    my_volume_group   2   3   0 wz- n- 1023.99g    0 
    
  • sudo lvs какие выводы
    LV   VG              Attr       LSize Исходные данные пула%  Meta% Журнал перемещения Cpy% Синхронизация
    home my_volume_group -wi-a----- 989,99 г                                                    
    root my_volume_group -wi-a-----  30.00g                                                    
    поменять my_volume_group -wi-a-----   4,00 г                                                    
    
Другие вопросы по тегам