Общие задачи

Изменение или добавление пути хранения образов дисковых устройств

По-умолчанию образы виртуальных жестких дисков хранятся в каталоге /var/lib/libvirt/images. При использовании Astra Linux Special Edition при инициализации ОС этому каталогу присваивается метка безопасности: 

drwx--x--xm-- 2 root root Уровень_3:Высокий:Категория_1,Категория_2,0xfffffffffffffffc:CCNRA /var/lib/libvirt/images/
XML

Проверить значение метки безопасности можно командой:

sudo pdp-ls -Md /var/lib/libvirt/images/
XML

Часто возникает необходимость разместить образы дисков по другому пути, например, на дополнительном жестком диске или примонтированном удаленном хранилище. Запуск ВМ с образом из такого хранилища приведет к следующей ошибке:

Для решения этой проблемы необходимо внести изменения в сценарий /usr/sbin/pdp-init-libvirt, добавив конечный путь хранения образов, а также все вышестоящие каталоги.

Например, файл образа диска размещается по пути /tmp/tmp/

#!/bin/bash

sysmaxlbl=`pdp-ls -Mdn / | awk '{ print $5 }' | awk -F":" '{ print $1":"$2":"$3 }'`

# for libvirt
LIBVIRT_DIRS="\
/var/ \
/var/lib/ \
/var/lib/libvirt/ \
/var/lib/libvirt/nvram \
/var/lib/libvirt/images \
/var/lib/libvirt/runimages \
/var/lib/libvirt/qemu/   \
/var/lib/libvirt/qemu/channel/ \
/var/lib/libvirt/qemu/channel/target/ \
/var/lib/libvirt/qemu/save/ \
/var/lib/libvirt/qemu/snapshot/ \
/run/ \
/var/run/libvirt/ \
/var/run/libvirt/qemu/   \
##########################################################################################################
### Здесь и далее до кавычек необходимо построчно вписать все необходимые каталоги начиная с родительских,
### добавляя через пробел обратный слеш после пути к каталогу.
### Для примера представлен каталог /tmp/tmp/ :
##########################################################################################################
/tmp/ \
/tmp/tmp/ \
"
for dir in ${LIBVIRT_DIRS}; do
    [ ! -e "${dir}" ] || pdpl-file "$sysmaxlbl:CCNRA" "${dir}"
done

lsmod | grep kvm
if [ "x$?" == "x0"  ]; then
        pdpl-file 0:0:0:ehole /dev/kvm
fi
XML

После внесения изменений необходимо перезагрузить машину.

Локальная виртуализация

Настройка сети

Подключение ВМ к физической сети хоста

На хосте создать сетевой мост, включив в него необходимый сетевой порт хоста (в примере - eth0):

  • через файл /etc/network/interfaces (на хосте, до инициализации сетевого соединения (!!!), должен быть установлен пакет bridge-utils):

    auto bridge0
    iface bridge0 inet static
    	bridge_ports eth0
    	address x.x.x.x
    	netmask x.x.x.x
    XML
  • или через Network Manager, если он установлен (не рекомендуется для серверной виртуализации):

    добавить соединение типа "Мост", нажать "Создать"

    указать в поле "Interface name" значение "bridge0"

    нажать "добавить", выбрать "Ethernet", нажать "Создать"

    выбрать в поле "device" нужный физический сетевой адаптер, нажать "сохранить":

    если необходимо - установить IP адрес для моста во вкладке "Параметры IPv4" (будет виден из внешних сетей):

Запустить "Менеджер виртуальных машин", открыть существующую ВМ, или создать новую.

Нажать в меню "Вид" - "Подробности", перейти к настройке сетевого адаптера.

Переключить режим на "Общее устройство", и поле "Имя моста" вписать "bridge0":

Сетевой трафик ВМ будет доступен с хостовой ОС для адаптера eth0, а также для внешних сетей, к которым подключен eth0

Серверная виртуализация

Удаленный проброс USB-устройств в виртуальную машину

Для удаленной работы пользователя с ВМ возможно подключение USB-устройства пользователя к ВМ.

Для этого необходимо использовать протокол SPICE и утилиту virt-viewer в качестве интерфейса взаимодействия с ВМ:

  1. На сервере виртуализации запустить Менеджер виртуальных машин (virt-manager);
  2. В свойствах ВМ перейти во вкладку "Дисплей" и выбрать тип сервера SPICE;
  3. Во вкладке "Контроллер USB" выбрать необходимое поколение контроллера.

При подключении с рабочего места командной:

virt-viewer -c qemu+tcp://<Имя пользователя>@<IP адрес или DNS имя хоста подключения>/system <Имя виртуальной машины>
XML

возможен проброс USB устройств через меню "Файл" - "USB device selection"

Облачная виртуализация

Клонирование ВМ

Схема клонирования ВМ в OpenNebula предполагает следующую последовательность действий:

  1. создание шаблона на основе существующей ВМ
  2. развертывание новой или нескольких ВМ на основе этого шаблона

Более подробно:

  1. В свойствах ВМ, находящейся в выключенном состоянии, нажать значок дискеты ("Save as template");
  2. ВМ перейдет в статус "HOTPLUG", затем, через некоторое время) в "POWEROFF".
  3. После этого в списке шаблонов появится новый шаблон, а в списке дисковых образов - новый диск.
  4. На основе нового шаблона необходимо создать новую (новые) ВМ.
  5. В свойствах новых ВМ необходимо отключить старый (оригинальный) образ диска и подключить новый.

Шейпинг сетевого и дискового ввода-вывода ВМ

В OpenNebula на уровне шаблона ВМ возможно ограничение полосы пропускания дисковой и/или сетевой подсистемы ВМ. Для этого:

  1. Перейти в Tamplates - VMs, создать шаблон ВМ
  2. Настроив основные параметры на вкладке "General", перейти во вкладку "Storage", выбрать диск и раскрыть "Advanced options":


3. Ограничить полосу дискового ввода-вывода, выставив в "IO throttling (bytes/s)" значение

4. перейти во вкладку "Network". Выбрать сеть и раскрыть "Advanced options":

5. выставить в полях "Override Network Inbound Traffic QoS" и "Override Network Outbound Traffic QoS" значения

6. Закончить создание шаблона, нажав "Create". Созданные далее на основе шаблона виртуальные машины получают одинаковые настройки ограничения дискового и сетевого ввода-вывода. Для индивидуальной настройки ограничения сетевого и/или дискового ввода-вывода для отдельных ВМ необходимо приготовить индивидуальный шаблон ВМ.

Настройка сети

Настройка VLAN

OpenNebula имеет возможность помечать сетевые пакеты виртуальных машин VLAN-тэгами перед передачей их в сетевую карту хостовой системы. Для этого необходимо создать новую виртуальную сеть:

  1. перейти во вкладку Virtual Networks
  2. создать новую сеть, дать ей имя
  3. далее во вкладке"Conf":
    в поле "Network mode" выбрать 802.1Q;
    в поле "Physical device" указать мост хоста, в который будут передаваться пакеты виртуальной сети;
    в поле "VLAN ID" выбрать "Manual VLAN ID";
    в появившемся ниже поле указать номер VLAN.
  4. во вкладке "Addresses" создать необходимые диапазоны IP или MAC
  5. нажать Create

Виртуальные машины, присоединенные к этой сети будут доступны друг другу без необходимости настройки VLAN в них (как будто им предоставлены Access-порты коммутатора). Но трафик этой сети будет передаваться в хостовую ОС уже с указанной меткой VLAN.

Поддержка Open vSwitch

OpenNebula поддерживает работу с программным коммутатором Open vSwitch. Для подготовки на узлах виртуализации нужно установить Open vSwitch и создать виртуальные коммутаторы с одинаковым именем (например ovs-sw0):

sudo apt install openvswitch-switch
sudo ovs-vsctl add-br ovs-sw0
XML
  1. далее войти в OpenNebula, перейти во вкладку Virtual Networks
  2. создать новую сеть, дать ей имя
  3. перейти во вкладку "Conf":
    в поле "Bridge" указать "ovs-sw0"
    в поле "Network mode" выбрать "Open vSwitch";
    в поле "VLAN ID" указать "No VLAN network";
  4. во вкладке "Addresses" создать необходимые диапазоны IP или MAC
  5. нажать Create

Подключенные к данной сети виртуальные машины при запуске будут автоматически подключаться к виртуальному коммутатору ovs-sw0, что можно проверить командой на узле виртуализации:

sudo ovs-vsctl show
c872cf2e-ffd2-46e8-ba81-d7f965121e87
    Bridge "ovs-sw0"
        Port "one-13-2"
            Interface "one-13-2"
        Port "ovs-sw0"
            Interface "ovs-sw0"
                type: internal
    ovs_version: "2.6.2"
XML