Libvirt#

Аппаратная поддержка виртуализации#

  1. Для корректной работы системы виртуализации на физических машинах в BIOS должна быть включена виртуализация (технология Intel VT или её аналог для используемой процессорной архитектуры);

  2. Виртуализация должна поддерживаться использующимися процессорами. Проверить наличие поддержки виртуализации можно командами:

  • Для процессоров Intel:

lscpu | grep vmx --color=always
  • Для процессоров AMD:

grep svm /proc/cpuinfo

Установка виртуализации QEMU/KVM#

Предупреждение

При использовании виртуализации QEMU/KVM в Astra Linux Special Edition с включенным МКЦ и МРД для обеспечения работы с виртуальными машинами, поддерживающими ненулевые метки безопасности, все пулы данных должны находиться на файловых системах, поддерживающих работу с мандатными атрибутами (Ext4, cepfs, ocfs2, hfs).

Предупреждение

В Astra Linux Special Edition для работы с виртуализацией от имени непривилегированного пользователя этот пользователь должен быть включен в группу libvirt-admin (не путать с группой astra-admin). Инструкцию по включению пользователя в группу см. далее.

Для автоматизированной установки системы виртуализации QEMU/KVM в дистрибутивы Astra Linux включен пакет astra-kvm. Пакет может быть установлен с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой:

sudo apt install astra-kvm

При установке этого пакета будет автоматически установлен графический инструмент управления виртуальными машинами virt-manager и выполнены все действия, необходимые для установки и запуска системы виртуализации.

При установке пакетов текущий пользователь будет автоматически добавлен в группы:

  • kvm;

  • libvirt;

  • libvirt-qemu;

Кроме указанных групп в Astra Linux Special Edition используются группы:

  • Группа libvirt-admin. Пользователи-участники этой группы могут без использования sudo работать с с виртуальными машинами, виртуальными сетями и хранилищами данных. До установки обновления БЮЛЛЕТЕНЬ № 2023-1023SE17 (оперативное обновление 1.7.5) используется только в Astra Linux Special Edition с включенным МРД (включен по умолчанию в Усиленном и Максимальном режимах защищенности Astra Linux x.7). После установки обновления БЮЛЛЕТЕНЬ № 2023-1023SE17 (оперативное обновление 1.7.5) необходима также и при выключенном МРД. Команда для добавления пользователя в группу libvirt-admin:

sudo usermod -a -G libvirt-admin $USER

Специальные группы (доступны начиная с обновления БЮЛЛЕТЕНЬ № 2023-0426SE17 (оперативное обновление 1.7.4):

  • libvirt-dev;

  • libvirt-admvm.

Других пользователей, которые должны работать с виртуализацией, следует добавить в указанные группы вручную:

sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin <имя_пользователя>

Для того, чтобы добавление в группы вступило в силу, нужно перезапустить пользовательскую сессию. В целях тестирования для того, чтобы добавление в группы вступило в силу, можно выполнить следующую команду (потребуется ввести пароль пользователя):

exec su - $USER

Для хранения образов виртуальных машин при первом запуске графической оболочки управления виртуализацией virtmanager автоматически создается пул данных. По умолчанию этот пул данных располагается в каталоге /var/lib/libvirt/images. Дополнительные пулы данных могут быть созданы по мере необходимости.

Если предполагается работа с гостевой файловой системой libguestfs с использованием sudo, то требуется включить в указанные выше группы пользователя root:

sudo usermod -a -G kvm,libvirt,libvirt-qemu,libvirt-admin root

Работа с QEMU/KVM#

Создание виртуальных машин#

Для создания виртуальных машин в Astra Linux Special Edition x.7 можно использовать графический менеджер виртуальных машин virt-manager.

Создание собственных пулов для пользователей#

Предупреждение

При работе с Astra Linux Special Edition образы дисков виртуальных машин (в том числе загрузочные образы для установки ОС на виртуальных машинах) регистрируются в системе виртуализации как файловые объекты с высоким уровнем конфиденциальности. При этом все вышележащие каталоги в файловой системе также автоматически получают высокий уровень конфиденциальности. В связи с этим не рекомендуется размещать образы дисков в домашних каталогах пользователей, так как присвоение высокого уровня конфиденциальности домашнему каталогу существенно затруднит работу пользователя - владельца этого каталога.

Для создания собственного пула пользователя следует создать каталог, доступный этому пользователю, например:

sudo mkdir -p /vrt/pool1
sudo chmod 750 /vrt/pool1
sudo chown <имя_пользователя> /vrt/pool1

Для запрета добавления новых образов ВМ в пул пользователю необходимо ограничить доступ к директории правами на чтение (r-x).

Дальнейшие действия выполнять от имени пользователя - владельца пула.

Создать пул в ранее созданных каталогах можно следующими командами:

virsh -c qemu:///system pool-define-as pool1 --type dir --target /vrt/pool1
virsh -c qemu:///system pool-build pool1
virsh -c qemu:///system pool-start pool1
virsh -c qemu:///system pool-autostart pool1
virsh -c qemu:///system pool-list --all

При работе в Astra Linux Special Edition при создании пула необходимые мандатные атрибуты будут присвоены ему автоматически. Проверить мандатные атрибуты пула можно командой:

pdp-ls -Md /vrt/pool1

Создать и запустить виртуальную машину с образом диска, расположенным в ранее созданном пуле командой:

virsh -c qemu:///system define vm1.xml
virsh -c qemu:///system start vm1

Проверить статус ВМ:

virsh -c qemu:///system list --all

Проверить параметры подключения к ВМ

virsh -c qemu:///system domdisplay vm1

Подключиться к виртуальному монитору ВМ

spicy -h 127.0.0.1 -p 5900

Сброс пользовательских настроек#

Для сброса старых пользовательских настроек virt-manager удалить файл .config/dconf/user

Настройка фиксированных IP-адресов#

Для привязки фиксированных IP-адресов к виртуальным машинам выполнить команду:

sudo virsh net-edit default

и после строки:

<range start='192.168.122.2' end='192.168.122.254'/>

вставить строки с мак-адресами виртуальных адаптеров, например, как указано ниже:

<host mac='52:54:00:a2:99:c2' name='host1' ip='192.168.122.133'/>
<host mac='52:54:00:de:2e:58' name='host2' ip='192.168.122.134'/>

После сохранения изменений перезапустить виртуальную сеть:

sudo virsh net-destroy default
sudo virsh net-start default

Примеры команд работы с виртуальными машинами#

Получить список машин:

sudo virsh list --all
sudo virsh start <имя виртуальной машины>

Включить автоматический запуск виртуальной машины при загрузке:

echo "#!/bin/bash" | sudo tee /etc/rc.local
echo "virsh start <имя виртуальной машины>" | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local

Подробная информация содержится в статье