Настройка KVM и virt-manager в Debian 11

Содержание

Настройка KVM

Установим пакеты с демоном KVM и системой виртуализации Qemu, реализующей виртуальные машины с процессорами архитектур x86 и x86-64. Для успешного запуска демона KVM понадобится также установить dnsmask-base. Установим необходимые пакеты:

# apt-get install libvirt-daemon-system qemu-system-x86 dnsmasq-base

Подгрузим модуль kvm поддержки аппаратного ускорения виртуализации:

# modprobe kvm

Перезапустим демона виртуализации:

# systemctl restart libvirtd

Включим пользователя, который будет пользоваться системой виртуализации KVM, в группу libvirtd:

# usermod -aG libvirt stupin

Настройка virt-manager

Установим клиента виртуализации KVM с графическим интерфейсом:

# apt-get install virt-manager

Для работы virt-manager понадобятся дополнительные пакеты: netcat-openbsd для установки подключения к демону, gir1.2-spiceclientgtk-3.0 для вывода изображения виртуальной машины на хост-машину. Установим их:

# apt-get install netcat-openbsd gir1.2-spiceclientgtk-3.0

Устранение проблем

missing backend for pool type 3 (logical)

Если в Debian 13 Trixie при попытке выполнить какую-либо операцию с пулом томов LVM появляется ошибка "libvirt.libvirtError: internal error: missing backend for pool type 3 (logical)", то исправить её можно установкой пакета с драйвером и перезапуском демона:

# apt-get install libvirt-daemon-driver-storage-logical
# systemctl restart libvirtd

spice graphics are not supported with this QEMU

Если в Debian 13 Trixie при попытке запустить виртуальную машину появляется ошибка "libvirt.libvirtError: unsupported configuration: spice graphics are not supported with this QEMU", то исправить её можно, изменив конфигурацию виртуальной машины следующим образом:

  • Удалить из списка оборудования "Дисплей Spice",
  • Удалить из списка оборудования "Канал (spice)", если он ещё не исчез при удалении оборудования "Дисплея Spice",
  • Добавить в список оборудования "Графика" и перед добавлением выбрать в выпадающем списке тип "VNC-сервер".

То же самое можно проделать путём прямого редактирования XML-файла в каталоге /etc/libvirt/qemu:

Удаляем из файла фрагмент конфигурации следующего вида:

<channel type="spicevmc">
  <target type="virtio" name="com.redhat.spice.0"/>
  <address type="virtio-serial" controller="0" bus="0" port="2"/>
</channel>

И заменяем такой фрагмент конфигурации:

<graphics type="spice" autoport="yes">
  <listen type="address"/>
  <image compression="off"/>
</graphics>

На вот такой:

<graphics type="vnc" port="-1" autoport="yes">
  <listen type="address"/>
</graphics>

В случае, если в виртуальной машине установлена операционная система NetBSD, то вместо VNC нужно указать VGA. В противном случае операционная система не загрузится - ядро не сможет создать консоль и переключится в режим отладки.

Не работает маршрутизация в bridge-интерфейсы

Если после обновления до Debian 13 Trixie трафик перестал маршрутизироваться внутрь виртуальных машин и между мостовыми интерфейсами, то есть несколько настроек, которые необходимо проверить.

Во-первых, необходимо установить пакет для управления переменными внутри ядра с помощью утилиты sysctl:

# apt-get install linux-sysctl-defaults

Во-вторых, необходимо включить маршрутизацию (форвардинг) пакетов между интерфейсами. Для этого нужно, например, прописать опцию, разрешающую форвардинг в файл /etc/sysctl.d/forwarding.conf:

net.ipv4.ip_forward = 1

И применить эту опцию с помощью следующей команды:

# sysctl -p /etc/sysctl.d/forwarding.conf

В-третьих, если этого оказалось недостаточно, нужно загрузить в ядро модуль br_netfilter, который управляет фильтрацией трафика на мостовых интерфейсах:

# modprobe br_netfilter

И прописать загрузку этого модуля ядра при запуске системы в файл /etc/modules:

br_netfilter

В-четвёртых, нужно прописать опции, отключающие фильтрацию пакетов с помощью iptables в bridge-интерфейсах, например, в файл /etc/sysctl.d/bridge_nf_call.conf:

net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-ip6tables = 0

И применить эти опции с помощью следующей команды:

# sysctl -p /etc/sysctl.d/bridge_nf_call.conf

Если ничего из этого не помогло, то можно попробовать перезагрузить систему. Прописанные настройки должны вступить в силу при загрузке.

Ссылки