Libvirt (Qemu+KVM+Virt-manager): различия между версиями

Материал из ALT Linux Wiki
м (Откат правок Kozorizki (обсуждение) к последней версии Petr-akhlamov)
Метка: откат
 
(не показаны 54 промежуточные версии 10 участников)
Строка 1: Строка 1:
{{stub}}
{{Note|Обратите внимение, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам.}}
У BaseALT есть '''ALT Server-V''', в котором есть профили KVM, Docker и LXD. Как я понимаю, ближайше похожей альтернативой является KVM. Но, т.к. ALT Server-V ставится без GUI, можно установить '''ALT Server''' и отметить пункт "Сервер виртуализации". Кроме того пакеты можно установить вручную:
'''Libvirt''' - набор инструментов для управления виртуализацией. В данной статье будет описано его использование.
<pre>apt-get install qemu-kvm libvirt libvirt-kvm</pre>
 
Ставим пакет:
 
<pre># apt-get install libvirt libvirt-kvm libvirt-qemu</pre>


Добавляем пользователя в группу:
Добавляем пользователя в группу:
<pre>gpasswd -a user vmusers</pre>
<pre># gpasswd -a user vmusers</pre>


==Запуск службы==
==Запуск службы==
<pre>
<pre>
systemctl enable libvirtd
# systemctl enable --now libvirtd
systemctl start libvirtd
</pre>
</pre>


Кроме того это можно сделать так:
==Делаем пользователю доступ в SSH (для удаленного управления)==
*Идем ЦУС> Режим эксперта> Системные службы. Запускаем и включаем автозапуск службы '''libvirtd'''.
{{Note|Если вы не планируете управлять виртуальными машинами этого компьютера с других компьютеров, можете не выполнять эти действия}}
На сервере переключаемся в режим суперпользователя:
su -
И правим следующий файл:
# cd /etc/openssh
# mcedit sshd_config
Добавляем:
Match User petr #имя вашего пользователя на сервере
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ForceCommand internal-sftp
ChrootDirectory /home/files #корневой каталог при доступе через SSH
 
После настройки на сервере SSH для доступа к файлам, на клиенте заработает и SSH для libvirt-manager для подключения к libvirt.
 
Кроме того разрешаем в брандмауэре: [[Alterator-ahttpd-server|Alterator Web]]-[[Alterator-net-iptables|Брадмауэр]]-Внешние сети-Дополнительные порты TCP/UDP-Добавляем порт 5900


==Графическое управление==
==Графическое управление==
Чтобы сделать некое подобие "Диспетчера Hyper-V" (Графическую консоль для управления виртуальными машинами) устанавливаем следующий пакет:
Чтобы сделать некое подобие "Диспетчера Hyper-V" (Графическую консоль для управления виртуальными машинами) устанавливаем следующий пакет:
<pre>apt-get install virt-manager</pre>
<pre># apt-get install virt-manager</pre>
 
Открываем Virt-Manager. Файл>Добавить соединение> Гипервизор QEMU/KVM (подключаться автоматически).


Открываем Virt-Manager. Файл>Добавить соединение>
*Локальная машина
**Гипервизор QEMU/KVM (подключаться автоматически).
*Удаленный сервер
**QEMU/KVM-Connect to remove host over SSH
***вводим имя пользователя
***вводим IP
***ставим галочку подключаться автоматически
===Создание виртуальной машины===
===Создание виртуальной машины===
#Нажимаем на кнопку "Создать виртуальную машину"
#Нажимаем на кнопку "Создать виртуальную машину"
Строка 34: Строка 58:
===Некоторые настройки===
===Некоторые настройки===
Выберите машину, нажмите на лампу...
Выберите машину, нажмите на лампу...
====Настройка дисплея через SSH====
*Дисплей:
**тип:VNC
**listen type:address
**адрес:IP
**порт:авто
**пароль:пользователя в группе
====Настройка жесткого диска====
====Настройка жесткого диска====
...Диск-1> Дополнительные параметры>Шина диска
...Диск-1> Дополнительные параметры>Шина диска
Строка 42: Строка 75:
*VirtIO для Linux [https://www.youtube.com/watch?v=tLQ2PtSVr58&t=5582s]
*VirtIO для Linux [https://www.youtube.com/watch?v=tLQ2PtSVr58&t=5582s]


====Настройка загрузки====
====Параметры загрузки====
...Параметры загрузки> Включить меню загрузки, ставите очередность.
*Включить меню загрузки> ставите очередность.


Иначе вы просто не загрузитесь с CD/ISO.
Иначе вы просто не загрузитесь с CD/ISO.
*запускать при старте системы


====Подключение ISO====
====Подключение ISO====
Строка 53: Строка 87:


Выберите образ из пула и нажмите на кнопку "Выбор тома".
Выберите образ из пула и нажмите на кнопку "Выбор тома".
{{Note|В качестве каталога можно указать папку прописанную в /etc/openssh - так вы легко сможете закидывать и подключать ISO-образы}}


====Сеть====
====Сеть====
Важно обратить внимание, во избежание ошибки при запуске виртуальной машины "сеть «default» не активна" на настройку:<br>
После создания виртуальной машины в virt-manager Правка - Свойства подключения - вкладка Виртуальные сети - на сети default поставить галочку "Автозапуск: При загрузке", применить<br>
[[Файл:Virt-manager сеть автозапуск по умолчанию.png|560px|center]]
=====NAT=====
=====NAT=====
NAT — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса одной сети, в адрес другой сети.
NAT — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса одной сети, в адрес другой сети.
Строка 60: Строка 99:
Т.е. у вас в локальной сети сеть 192.168.0.x., а у виртуальных машин будет 192.168.1.x. И NAT позволит вам общатся между сетью 0.x и 1.x.
Т.е. у вас в локальной сети сеть 192.168.0.x., а у виртуальных машин будет 192.168.1.x. И NAT позволит вам общатся между сетью 0.x и 1.x.


По-умолчанию в virt-manager уже есть NAT-интерфейс, но если вы его случайно удалили или хотите создать новый, то это делается так:
По умолчанию в virt-manager уже есть NAT-интерфейс, но если вы его случайно удалили или хотите создать новый, то это делается так:
*откройте Правка>Свойства подключения>Виртуальные сети>+
*откройте Правка>Свойства подключения>Виртуальные сети>+
*введите название сети
*введите название сети
Строка 71: Строка 110:


=====Мост=====
=====Мост=====
Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать сетевой мост.
Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать [[сетевой мост]].
 
{{note|При этом управление сетью перейдет к {{pkg|etcnet}} и NetworkManager уже будет не нужен, его и его апплет можно удалить: {{cmd|apt-get remove NetworkManager NetworkManager-applet-gtk}}. В трее, соответственно, иконка статуса сети исчезнет.}}
 
Если простым языком, то задачу [https://t.me/alt_linux/144409 можно разделить] на две:
*создать [[Сетевой мост|бридж]]
*в virt-manager в свойствах виртуальной машины, в свойствах сетевого интерфейса выбираем
**устройство моста
**вручную вводим имя нашего моста - '''vmbr0'''
[[Файл:Libvirt-bridge.png|560px|center]]
 
{{note| Попробуйте запустить LiveCD - система должна получить по DHCP IP адрес и иметь доступ в LAN и интернет}}
 
=====Проброс портов=====
Из переписки:
 
Настроил тут проброс порта в QEMU-виртуалку. Казалось бы, в чём проблема-то?
  cmd|qemu -netdev user,id=user0,hostfwd=tcp::2222-:22 -device e1000,netdev=user0" …
как-то так (можно вместо e1000 паравиртуальный драйвер, это побыстрее будет).


Данный способ является наиболее правильным. Проще всего его сделать через [[alterator-net-bridge]].
Но. Я это сделал через libvirt! И оказалось, что штатными средствами (не только тыкая в менюшки virt-manager, но  и, кажется, вообще прямой настройкой сети) нельзя. Не знаю, почему. Может быть, можно, но я не нашёл как. А я искал. То, что в libvirt называется NAT, в действительности садится на tun/tap, лезет в {{cmd|iptables}} и т. д. Наверное, для совместимости с другими платформами виртуализации, не знаю.


Например, br0, затем в настройках ВМ указать именно его.
Короче.
# В настройках virt-manager разрешаем «Редактирование XML»
# Удаляем все сетевые устройства.
# Добавляем в конец ''общего'' XML-я виртуалки (например, во вкладке «Обзор»), перед закрывающим {{term|</domain>}}, такие строки:
  <qemu:commandline>
    <qemu:arg value="-netdev"/>
    <qemu:arg value="user,id=user0,hostfwd=tcp::2222-:22"/>
    <qemu:arg value="-device"/>
    <qemu:arg value="e1000,netdev=user0"/>
  </qemu:commandline>
Если неймспейс qemu не загружен, то такие:
  <commandline xmlns="http://libvirt.org/schemas/domain/qemu/1.0">
    <arg value="-netdev"/>
    <arg value="user,id=user0,hostfwd=tcp::2222-:22"/>
    <arg value="-device"/>
    <arg value="e1000,netdev=user0"/>
  </commandline>


'''//Как? Расписать...'''
И qemu преспокойненько само всё как надо делает. Фишка — не забыть про <code>xmlns</code>
иначе просто не заработает, а вам ничего не скажет)


{{note|При этом управление сетью перейдет к {{pkg|etcnet}} и NetworkManager уже будет не нужен, его и его апплет можно удалить: {{cmd|apt-get remove NetworkManager NetworkManager-applet-gtk}}. В трее, соответственно, иконка статуса сети исчезнет.}}
===Графики===
===Графики===
Откройте "Правка> Параметры", вкладка "Статистика", отметьте галочками, какие графики вы хотите сделать доступными.
Откройте "Правка> Параметры", вкладка "Статистика", отметьте галочками, какие графики вы хотите сделать доступными.
Строка 86: Строка 159:
===Снимки машины===
===Снимки машины===
Снимок машины можно создать только если виртуальный жесткий диск у вас в формате *.qcow2.
Снимок машины можно создать только если виртуальный жесткий диск у вас в формате *.qcow2.
==Веб-интерфейс==
Управлять виртуальными машинами libvirt можно через веб-интерфейс [[Cockpit]]. Но, пока в Альте нужный модуль для этой системы не собран. Если Вам интересна ситуация со сборкой, можете подписаться на отчет - {{altbug|44671}}.
Видимо ребятам некогда добавлять пакеты.<br>
Можно самому установить нужный плагин - cockpit-machines<br>
1. git clone https://github.com/cockpit-project/cockpit-machines<br>
2. cd cockpit-machines<br>
3. Правим в Makefile переменную PREFIX ?= /usr/local на PREFIX ?= /usr (убираем local)<br>
4. make<br>
5. Из под root в том же каталоге  - make install<br>
6. apt-get install libvirt-dbus ( без него не работает )<br>
7. Чтобы пользователь мог управлять хостом с административными правами посредством Cockpit его нужно добавить в /etc/sudoers, так как у меня пользователь был в группе wheel  я просто раскоментировал соответствующий раздел в /etc/sudoers.<br>
<br>
А так-то RedHat пишет что Virt-manager depricated (устарел) и для управления виртуальными машинами нужно использовать cockpit<br>
<br>
==Файлы Virt==
(Для резервного копирования-восстановления)
Файлы Libvirt хранятся в следующих директориях:
*/var/lib/libvirt
*/etc/libvirt
==Удаленное управление==
В случае, если Вы планируете использовать Libvirt на сервере в продакшине, предполагается, что у Вас он будет установлен на "консольную" серверную систему, а управлять им Вы будете с рабочей станции через Virt-manager.
===Настройка SSH===
Для начала настройте [[SSHConfig|SSH-сервер]] на сервере с Libvirt. В Match User пропишите пользователя, под которым будете подключаться.
===Удаленное GUI-управление из-под Windows===
Представим:
*Основной парк компьютеров на Windows
*Планируется миграция
*На одном сервере без графики изучается Linux и на нем установлен Libvirt
*Необходимо GUI-управление
На Windows-машине:
1. Устанавливаем [https://cygwin.com/ Cygwin] и CygwinX
2. Подключаемся к серверу
$ ssh admin@192.168.0.13
3. Переходим в режим суперпользователя
$ su -
4. Устанавливаем пакеты
# apt-get install xauth virt-manager
5. Открываем в пуске из меню Cygwin-X ярлычок CygwinXServer
6. В трее из черно-зеленого значка Cygwin RCM-Системные выбираем "Менеджер виртуальных машин".
Все, можно управлять виртуальными машинами из-под Windows пока мы полностью не перейдем под Linux.
===Удаленное GUI-управление из-под Linux===
1. Устанавливаем virt-manager
# apt-get install virt-manager filezilla libvirt
2. Включаем службы
# systemctl enable libvirtd
# systemctl start libvirtd
3.Добавляем пользователя в группу
# gpasswd -a user vmusers
4. Открываем программу
5. Файл-Добавить соединение (QEMU/KVM, Подключаться к удаленному узлу с помощью SSH)
6. Вводим логин-пароль
7. Управляем удаленным сервером!
===Удаленное пополнение iso-образов===
В группе vmusers пользователь admin.
*Для iso-образов создадим каталог:
# mkdir /var/lib/libvirt/images/iso
*Назначаем на эту папку права для админа, который подключается к libvirt через ssh:
# chown -R admin:vmusers /var/lib/libvirt/images/iso/
*Через SSH кидаем туда iso-образы
Подключаемся через Filezilla на sftp://IP под тем пользователем, которому разрешен доступ через SSH и к данному каталогу. В правой колонке открываем "удаленный сайт" /var/lib/libvirt/images/iso, в левой каталог с ISO. И копируем файл на удаленный сервер.
===Вывод видео через SSH===
Чтобы на удаленном сервере выводилось видео, нужно в настройках виртуальной машины, в разделе "Дисплей SPICE", в выпадающем списке "Адрес" выбрать "Все интерфейсы".
===После установки virt-manager невозможно создать образ HDD ВМ===
Выдается сообщение типа "нет доступа к /var/lib/libvirt/images" или "нет каталога /var/lib/libvirt/images". (Скриншот показать не могу, после того как я исправил ошибку, даже после удаления каталогов она не появляется)
Необходимо просто создать нужные каталоги:
# mkdir /var/lib/libvirt/
# mkdir /var/lib/libvirt/images
==Заметки при использовании==
===Проброс USB в виртуальную машину через графический интерфейс Virt-Manager===
* Исправление ошибки перенаправления USB портов:
'''# rpm -ql libspice-glib | grep -i usb'''
''/usr/libexec/spice-gtk/spice-client-glib-usb-acl-helper
/usr/share/polkit-1/actions/org.spice-space.lowlevelusbaccess.policy''
Необходимо в файл '''/usr/share/polkit-1/actions/org.spice-space.lowlevelusbaccess.policy''',
добавить '''<allow_any>yes</allow_any>''' в <defaults> раздел.
После модификации файл выглядит так:
<pre>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
          "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
          "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig>
  <vendor>The Spice Project</vendor>
  <vendor_url>http://spice-space.org/</vendor_url>
  <icon_name>spice</icon_name>
  <action id="org.spice-space.lowlevelusbaccess">
    <description>Low level USB device access</description>
    <message>Privileges are required for low level USB device access (for usb device pass through).</message>
    <defaults>
      <allow_any>yes</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
</policyconfig>
</pre>
Поправить права на файл(по необходимости):
'''chmod 4755 /usr/libexec/spice-gtk/spice-client-glib-usb-acl-helper'''
# service libvirtd restart
===Некоторые особенности использования Virt-Manager на системе aarch64===
И хост система и VM имеют архитектуру aarch64.
Для работы графики VM нужно установить в хост систему пакет seavgabios
При создании VM aarch64 в неё не добавляются автоматически графика, клавиатура, мышь. Их нужно добавить вручную.
Для этого в диалоге "Создание новой виртуальной машины" на шаге 5 поставил флаг "Проверить конфигурацию перед установкой".
В открывшемся окне конфигурации нажать "Добавить оборудование" и добавить:
Графика/Сервер SPICE
Ввод/Virtio клавиатура, Virtio планшет.
Нажать "Начать установку".
При установке текстовые сообщения выводятся на "Вид/Consoles/Последовательное 1", а графика на "Вид/Consoles/Графическая консоль SPICE". Между этими устройствами нужно переключаться вручную.
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}}
[[Категория:Виртуализация]]
[[Категория:Виртуализация]]
[[Категория:KVM]]
[[Категория:KVM]]

Текущая версия от 16:13, 22 октября 2024

Примечание: Обратите внимение, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам.

Libvirt - набор инструментов для управления виртуализацией. В данной статье будет описано его использование.

Ставим пакет:

# apt-get install libvirt libvirt-kvm libvirt-qemu

Добавляем пользователя в группу:

# gpasswd -a user vmusers

Запуск службы

# systemctl enable --now libvirtd

Делаем пользователю доступ в SSH (для удаленного управления)

Примечание: Если вы не планируете управлять виртуальными машинами этого компьютера с других компьютеров, можете не выполнять эти действия

На сервере переключаемся в режим суперпользователя:

su -

И правим следующий файл:

# cd /etc/openssh
# mcedit sshd_config

Добавляем:

Match User petr #имя вашего пользователя на сервере
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ForceCommand internal-sftp
ChrootDirectory /home/files #корневой каталог при доступе через SSH

После настройки на сервере SSH для доступа к файлам, на клиенте заработает и SSH для libvirt-manager для подключения к libvirt.

Кроме того разрешаем в брандмауэре: Alterator Web-Брадмауэр-Внешние сети-Дополнительные порты TCP/UDP-Добавляем порт 5900

Графическое управление

Чтобы сделать некое подобие "Диспетчера Hyper-V" (Графическую консоль для управления виртуальными машинами) устанавливаем следующий пакет:

# apt-get install virt-manager

Открываем Virt-Manager. Файл>Добавить соединение>

  • Локальная машина
    • Гипервизор QEMU/KVM (подключаться автоматически).
  • Удаленный сервер
    • QEMU/KVM-Connect to remove host over SSH
      • вводим имя пользователя
      • вводим IP
      • ставим галочку подключаться автоматически

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

  1. Нажимаем на кнопку "Создать виртуальную машину"
  2. Выбираем метод установки - локальный/ISO
  3. Выбираем ISO/CD и тип ОС (с помощью автодополнения)
  4. Выбираем количество ОЗУ и процессоров
  5. Создаем виртуальный жесткий диск
  6. Вводим название и выбираем сеть

BIOS или UEFI

До первого запуска откройте настройки виртуальной машины, во вкладке Обзор> Свойства гипервизора у вас будет возможность сменить тип прошивки - BIOS или UEFI. До первого запуска![1]

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

Выберите машину, нажмите на лампу...

Настройка дисплея через SSH

  • Дисплей:
    • тип:VNC
    • listen type:address
    • адрес:IP
    • порт:авто
    • пароль:пользователя в группе

Настройка жесткого диска

...Диск-1> Дополнительные параметры>Шина диска

Тип диска:

  • IDE - рекомендуется для Windows XP и младше
  • SATA - для 7 и старше
  • VirtIO для Linux [2]

Параметры загрузки

  • Включить меню загрузки> ставите очередность.

Иначе вы просто не загрузитесь с CD/ISO.

  • запускать при старте системы

Подключение ISO

...Выберите IDE CDROM> Browse.

В окне "Выберите том хранилища" нажмите на плюс (добавить пул), выберите тип dir-каталог в файловой системе и укажите папку с iso-образами.

Выберите образ из пула и нажмите на кнопку "Выбор тома".

Примечание: В качестве каталога можно указать папку прописанную в /etc/openssh - так вы легко сможете закидывать и подключать ISO-образы


Сеть

Важно обратить внимание, во избежание ошибки при запуске виртуальной машины "сеть «default» не активна" на настройку:
После создания виртуальной машины в virt-manager Правка - Свойства подключения - вкладка Виртуальные сети - на сети default поставить галочку "Автозапуск: При загрузке", применить

Virt-manager сеть автозапуск по умолчанию.png
NAT

NAT — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса одной сети, в адрес другой сети.

Т.е. у вас в локальной сети сеть 192.168.0.x., а у виртуальных машин будет 192.168.1.x. И NAT позволит вам общатся между сетью 0.x и 1.x.

По умолчанию в virt-manager уже есть NAT-интерфейс, но если вы его случайно удалили или хотите создать новый, то это делается так:

  • откройте Правка>Свойства подключения>Виртуальные сети>+
  • введите название сети
  • режим: NAT
  • Forward to: любое физическое устройство

Можете так же настроить адресацию IPv4 и DHCP-сервер (они настраиваются автоматически).

И в настройках виртуальной машины выберите данный интерфейс.

Мост

Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать сетевой мост.

Примечание: При этом управление сетью перейдет к etcnet и NetworkManager уже будет не нужен, его и его апплет можно удалить: apt-get remove NetworkManager NetworkManager-applet-gtk. В трее, соответственно, иконка статуса сети исчезнет.


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

  • создать бридж
  • в virt-manager в свойствах виртуальной машины, в свойствах сетевого интерфейса выбираем
    • устройство моста
    • вручную вводим имя нашего моста - vmbr0
Libvirt-bridge.png
Примечание: Попробуйте запустить LiveCD - система должна получить по DHCP IP адрес и иметь доступ в LAN и интернет


Проброс портов

Из переписки:

Настроил тут проброс порта в QEMU-виртуалку. Казалось бы, в чём проблема-то?

 cmd|qemu -netdev user,id=user0,hostfwd=tcp::2222-:22 -device e1000,netdev=user0" …

как-то так (можно вместо e1000 паравиртуальный драйвер, это побыстрее будет).

Но. Я это сделал через libvirt! И оказалось, что штатными средствами (не только тыкая в менюшки virt-manager, но и, кажется, вообще прямой настройкой сети) нельзя. Не знаю, почему. Может быть, можно, но я не нашёл как. А я искал. То, что в libvirt называется NAT, в действительности садится на tun/tap, лезет в iptables и т. д. Наверное, для совместимости с другими платформами виртуализации, не знаю.

Короче.

  1. В настройках virt-manager разрешаем «Редактирование XML»
  2. Удаляем все сетевые устройства.
  3. Добавляем в конец общего XML-я виртуалки (например, во вкладке «Обзор»), перед закрывающим </domain>, такие строки:
 <qemu:commandline>
   <qemu:arg value="-netdev"/>
   <qemu:arg value="user,id=user0,hostfwd=tcp::2222-:22"/>
   <qemu:arg value="-device"/>
   <qemu:arg value="e1000,netdev=user0"/>
 </qemu:commandline>

Если неймспейс qemu не загружен, то такие:

 <commandline xmlns="http://libvirt.org/schemas/domain/qemu/1.0">
   <arg value="-netdev"/>
   <arg value="user,id=user0,hostfwd=tcp::2222-:22"/>
   <arg value="-device"/>
   <arg value="e1000,netdev=user0"/>
 </commandline>

И qemu преспокойненько само всё как надо делает. Фишка — не забыть про xmlns иначе просто не заработает, а вам ничего не скажет)

Графики

Откройте "Правка> Параметры", вкладка "Статистика", отметьте галочками, какие графики вы хотите сделать доступными.

Вкл./выкл. график вы можете через "Вид> График".

Снимки машины

Снимок машины можно создать только если виртуальный жесткий диск у вас в формате *.qcow2.

Веб-интерфейс

Управлять виртуальными машинами libvirt можно через веб-интерфейс Cockpit. Но, пока в Альте нужный модуль для этой системы не собран. Если Вам интересна ситуация со сборкой, можете подписаться на отчет - altbug #44671.

Видимо ребятам некогда добавлять пакеты.
Можно самому установить нужный плагин - cockpit-machines
1. git clone https://github.com/cockpit-project/cockpit-machines
2. cd cockpit-machines
3. Правим в Makefile переменную PREFIX ?= /usr/local на PREFIX ?= /usr (убираем local)
4. make
5. Из под root в том же каталоге - make install
6. apt-get install libvirt-dbus ( без него не работает )
7. Чтобы пользователь мог управлять хостом с административными правами посредством Cockpit его нужно добавить в /etc/sudoers, так как у меня пользователь был в группе wheel я просто раскоментировал соответствующий раздел в /etc/sudoers.

А так-то RedHat пишет что Virt-manager depricated (устарел) и для управления виртуальными машинами нужно использовать cockpit

Файлы Virt

(Для резервного копирования-восстановления)

Файлы Libvirt хранятся в следующих директориях:

  • /var/lib/libvirt
  • /etc/libvirt

Удаленное управление

В случае, если Вы планируете использовать Libvirt на сервере в продакшине, предполагается, что у Вас он будет установлен на "консольную" серверную систему, а управлять им Вы будете с рабочей станции через Virt-manager.

Настройка SSH

Для начала настройте SSH-сервер на сервере с Libvirt. В Match User пропишите пользователя, под которым будете подключаться.

Удаленное GUI-управление из-под Windows

Представим:

  • Основной парк компьютеров на Windows
  • Планируется миграция
  • На одном сервере без графики изучается Linux и на нем установлен Libvirt
  • Необходимо GUI-управление

На Windows-машине:

1. Устанавливаем Cygwin и CygwinX

2. Подключаемся к серверу

$ ssh admin@192.168.0.13

3. Переходим в режим суперпользователя

$ su -

4. Устанавливаем пакеты

# apt-get install xauth virt-manager

5. Открываем в пуске из меню Cygwin-X ярлычок CygwinXServer

6. В трее из черно-зеленого значка Cygwin RCM-Системные выбираем "Менеджер виртуальных машин".

Все, можно управлять виртуальными машинами из-под Windows пока мы полностью не перейдем под Linux.

Удаленное GUI-управление из-под Linux

1. Устанавливаем virt-manager

# apt-get install virt-manager filezilla libvirt

2. Включаем службы

# systemctl enable libvirtd
# systemctl start libvirtd

3.Добавляем пользователя в группу

# gpasswd -a user vmusers

4. Открываем программу

5. Файл-Добавить соединение (QEMU/KVM, Подключаться к удаленному узлу с помощью SSH)

6. Вводим логин-пароль

7. Управляем удаленным сервером!

Удаленное пополнение iso-образов

В группе vmusers пользователь admin.

  • Для iso-образов создадим каталог:
# mkdir /var/lib/libvirt/images/iso
  • Назначаем на эту папку права для админа, который подключается к libvirt через ssh:
# chown -R admin:vmusers /var/lib/libvirt/images/iso/
  • Через SSH кидаем туда iso-образы

Подключаемся через Filezilla на sftp://IP под тем пользователем, которому разрешен доступ через SSH и к данному каталогу. В правой колонке открываем "удаленный сайт" /var/lib/libvirt/images/iso, в левой каталог с ISO. И копируем файл на удаленный сервер.

Вывод видео через SSH

Чтобы на удаленном сервере выводилось видео, нужно в настройках виртуальной машины, в разделе "Дисплей SPICE", в выпадающем списке "Адрес" выбрать "Все интерфейсы".

После установки virt-manager невозможно создать образ HDD ВМ

Выдается сообщение типа "нет доступа к /var/lib/libvirt/images" или "нет каталога /var/lib/libvirt/images". (Скриншот показать не могу, после того как я исправил ошибку, даже после удаления каталогов она не появляется)

Необходимо просто создать нужные каталоги:

# mkdir /var/lib/libvirt/
# mkdir /var/lib/libvirt/images

Заметки при использовании

Проброс USB в виртуальную машину через графический интерфейс Virt-Manager

  • Исправление ошибки перенаправления USB портов:
# rpm -ql libspice-glib | grep -i usb

/usr/libexec/spice-gtk/spice-client-glib-usb-acl-helper

/usr/share/polkit-1/actions/org.spice-space.lowlevelusbaccess.policy

Необходимо в файл /usr/share/polkit-1/actions/org.spice-space.lowlevelusbaccess.policy,

добавить <allow_any>yes</allow_any> в <defaults> раздел.

После модификации файл выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
          "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
          "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig>
  <vendor>The Spice Project</vendor>
  <vendor_url>http://spice-space.org/</vendor_url>
  <icon_name>spice</icon_name>
  <action id="org.spice-space.lowlevelusbaccess">
    <description>Low level USB device access</description>
    <message>Privileges are required for low level USB device access (for usb device pass through).</message>
    <defaults>
      <allow_any>yes</allow_any>
      <allow_inactive>no</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
</policyconfig>

Поправить права на файл(по необходимости):

chmod 4755 /usr/libexec/spice-gtk/spice-client-glib-usb-acl-helper
# service libvirtd restart

Некоторые особенности использования Virt-Manager на системе aarch64

И хост система и VM имеют архитектуру aarch64.

Для работы графики VM нужно установить в хост систему пакет seavgabios

При создании VM aarch64 в неё не добавляются автоматически графика, клавиатура, мышь. Их нужно добавить вручную.

Для этого в диалоге "Создание новой виртуальной машины" на шаге 5 поставил флаг "Проверить конфигурацию перед установкой".

В открывшемся окне конфигурации нажать "Добавить оборудование" и добавить:

Графика/Сервер SPICE

Ввод/Virtio клавиатура, Virtio планшет.

Нажать "Начать установку".

При установке текстовые сообщения выводятся на "Вид/Consoles/Последовательное 1", а графика на "Вид/Consoles/Графическая консоль SPICE". Между этими устройствами нужно переключаться вручную.