Под капотом · Виртуализация · Хранилища
Сетевой LVM поверх iSCSI
Пользователь делает из LUN на SAN обычный том LVM и отдаёт его ВМ. Для этого он вводит несколько команд:
multipath -ll pvcreate /dev/mapper/mpatha vgcreate vg_san /dev/mapper/mpatha lvcreate -L 80G -n vm1 vg_san virsh attach-disk vm1 /dev/vg_san/vm1 vda --config
После выполнения команд том записан в определение ВМ; место на SAN занято целиком, а не по мере записи.
- Команда multipath -ll показывает, что у LUN один путь в системе;
- Команда pvcreate размечает multipath-устройство как физический том;
- Команда vgcreate собирает из него группу томов;
- Команда lvcreate отрезает от группы том нужного размера;
- Команда attach-disk отдаёт том гостю как блочное устройство.
-
пользователь 1. Пользователь проверяет, что LUN виден одним устройством
multipath -ll mpatha (3600…) dm-3 SAN_01,active ready running
СХД обычно отдаёт два пути к одному LUN; без multipath LVM увидит два разных диска и испортит метаданные.
-
диск / RAM 2. LVM размечает физический том
pvcreate /dev/mapper/mpatha Physical volume "/dev/mapper/mpatha" successfully created
Разметку делают на multipath-устройстве, а не на sdX: пути могут поменяться, а mapper - нет.
-
диск / RAM 3. Появляется группа томов
vgcreate vg_san /dev/mapper/mpatha Volume group "vg_san" successfully created
Группа - это общий пул места: один LUN можно нарезать на много томов для разных ВМ.
-
диск / RAM 4. Отрезается логический том
lvcreate -L 80G -n vm1 vg_san Logical volume "vm1" created
Том для ВМ - обычное блочное устройство /dev/vg_san/vm1; файловой системы на нём нет.
-
libvirt 5. Демон добавляет том в XML
<disk type='block' device='disk'> <source dev='/dev/vg_san/vm1'/> <target dev='vda' bus='virtio'/> </disk>
libvirt не различает, откуда взялся блочный том: локальный LVM или LVM поверх iSCSI для него одно и то же.
-
QEMU 6. QEMU открывает том
-drive file=/dev/vg_san/vm1,format=raw
Место выделено заранее, поэтому том занимает 80 ГБ и на СХД, и в группе.
-
гость 7. Гость получает диск
lsblk -> vda 80G
Для гостя это обычный диск; сеть и multipath остаются заботой хоста.