Как попробовать 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
- partition1:
Теперь у меня есть одна группа томов с 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 г