Содержание

Skip to end of metadata
Go to start of metadata

Сборник небольших "how to" для разных задач администрирования ПК СВ "Брест".

Общее

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

По-умолчанию образы виртуальных жестких дисков хранятся по пути /var/lib/libvirt/images.

При инициализации ОС на данный путь накладываются метки безопасности, категории и флаг CCNRA: 

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

узнать которые мы можем введя команду:

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

Часто возникает необходимость разместить образы дисков по другому пути, например, на дополнительном жестком диске или примонтированном удаленном хранилище.

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

Для решения этой проблемы необходимо внести изменения в скрипт /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


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

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

сеть

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

на хосте создать сетевой мост, включить в него необходимый сетевой порт хоста (в примере - 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
  • или через Network Manager, если установлен он (не рекомендуется для серверной виртуализации):

     Click here to expand...

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

    указать в поле "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 <Имя виртуальной машины>

возможен проброс 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 openvsitch-switch
sudo ovs-switch add-br ovs-sw0
  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"




  • No labels