Libvirt (Qemu+KVM+Virt-manager): различия между версиями
(Новая страница: «{{Category navigation|title=Petr-akhlamov/Мысли о миграции|category=Petr-akhlamov/Мысли о миграции|sortkey={{SUBPAGENAME}}}}») |
Ulysses (обсуждение | вклад) м (Исправлена опечатка: Ппо необходимости -> По необходимости) |
||
(не показаны 93 промежуточные версии 13 участников) | |||
Строка 1: | Строка 1: | ||
{{Category navigation|title= | {{Note|Обратите внимение, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам.}} | ||
'''Libvirt''' — набор инструментов для управления виртуализацией. В данной статье будет описано его использование. | |||
==Установка== | |||
Установка Libvirt и полной коллекции эмулируемых архитектур (qemu-system-aarch64, qemu-system-s390x, qemu-system-riscv и т.д.): | |||
# apt-get install libvirt libvirt-kvm libvirt-qemu | |||
Альтертнативный вариант. Установка Libvirt и эмулятора только для архитектуры x86-64 (qemu-system-x86): | |||
# apt-get install libvirt-kvm qemu-kvm | |||
Для управления виртуализацией пользователь должен быть добавлен в группу ''vmusers'': | |||
# gpasswd -a user vmusers | |||
==Запуск службы== | |||
# systemctl enable --now libvirtd | |||
==Делаем пользователю доступ в SSH (для удаленного управления)== | |||
{{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. | |||
Кроме того разрешаем в брандмауэре: {{nav|[[Alterator-ahttpd-server|Alterator Web]]|[[Alterator-net-iptables|Брадмауэр]]|Внешние сети|Дополнительные порты TCP/UDP|Добавляем порт 5900}} | |||
==Графическое управление== | |||
Для управления виртуальными машинами через графический интерфейс используется [https://virt-manager.org/ Virt-manager]: | |||
# apt-get install virt-manager | |||
Открываем Virt-Manager. {{nav|Файл|Добавить соединение}} | |||
*Локальная машина | |||
**Гипервизор QEMU/KVM (подключаться автоматически). | |||
*Удаленный сервер | |||
**QEMU/KVM-Connect to remove host over SSH | |||
***вводим имя пользователя | |||
***вводим IP | |||
***ставим галочку подключаться автоматически | |||
===Создание виртуальной машины=== | |||
#Нажимаем на кнопку "Создать виртуальную машину" | |||
#Выбираем метод установки - локальный/ISO | |||
#Выбираем ISO/CD и тип ОС (с помощью автодополнения) | |||
#Выбираем количество ОЗУ и процессоров | |||
#Создаем виртуальный жесткий диск | |||
#Вводим название и выбираем сеть | |||
===BIOS или UEFI=== | |||
'''До первого запуска''' откройте настройки виртуальной машины, во вкладке {{nav|Обзор|Свойства гипервизора}} у вас будет возможность сменить тип прошивки - BIOS или UEFI. '''До первого запуска!'''[https://www.youtube.com/watch?v=tLQ2PtSVr58&t=5315s] | |||
===Некоторые настройки=== | |||
Выберите машину, нажмите на лампу... | |||
====Настройка дисплея через SSH==== | |||
*Дисплей: | |||
**тип:VNC | |||
**listen type:address | |||
**адрес:IP | |||
**порт:авто | |||
**пароль:пользователя в группе | |||
====Настройка жесткого диска==== | |||
...{{nav|Диск-1|Дополнительные параметры|Шина диска}} | |||
Тип диска: | |||
*IDE - рекомендуется для Windows XP и младше | |||
*SATA - для 7 и старше | |||
*VirtIO для Linux [https://www.youtube.com/watch?v=tLQ2PtSVr58&t=5582s] | |||
====Параметры загрузки==== | |||
*{{nav|Включить меню загрузки|ставите очередность}}. | |||
Иначе вы просто не загрузитесь с CD/ISO. | |||
*запускать при старте системы | |||
====Подключение ISO==== | |||
...Выберите {{nav|IDE CDROM|Browse}}. | |||
В окне "Выберите том хранилища" нажмите на плюс (добавить пул), выберите тип dir-каталог в файловой системе и укажите папку с iso-образами. | |||
Выберите образ из пула и нажмите на кнопку "Выбор тома". | |||
{{Note|В качестве каталога можно указать папку прописанную в /etc/openssh - так вы легко сможете закидывать и подключать ISO-образы}} | |||
====Сеть==== | |||
Важно обратить внимание, во избежание ошибки при запуске виртуальной машины "сеть «default» не активна" на настройку:<br> | |||
После создания виртуальной машины в virt-manager {{nav|Правка|Свойства подключения|Вкладка Виртуальные сети|На сети default поставить галочку "Автозапуск: При загрузке"|Применить}}. | |||
[[Файл:Virt-manager сеть автозапуск по умолчанию.png|560px|center]] | |||
=====NAT===== | |||
NAT — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса одной сети, в адрес другой сети. | |||
Т.е. у вас в локальной сети сеть 192.168.0.x., а у виртуальных машин будет 192.168.1.x. И NAT позволит вам общатся между сетью 0.x и 1.x. | |||
По умолчанию в virt-manager уже есть NAT-интерфейс, но если вы его случайно удалили или хотите создать новый, то это делается так: | |||
*откройте {{nav|Правка|Свойства подключения|Виртуальные сети|+}} | |||
*введите название сети | |||
*режим: NAT | |||
*Forward to: любое физическое устройство | |||
Можете так же настроить адресацию IPv4 и DHCP-сервер (они настраиваются автоматически). | |||
И в настройках виртуальной машины выберите данный интерфейс. | |||
=====Мост===== | |||
Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать [[сетевой мост]]. | |||
{{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 паравиртуальный драйвер, это побыстрее будет). | |||
Но. Я это сделал через libvirt! И оказалось, что штатными средствами (не только тыкая в менюшки virt-manager, но и, кажется, вообще прямой настройкой сети) нельзя. Не знаю, почему. Может быть, можно, но я не нашёл как. А я искал. То, что в libvirt называется NAT, в действительности садится на tun/tap, лезет в {{cmd|iptables}} и т. д. Наверное, для совместимости с другими платформами виртуализации, не знаю. | |||
Короче. | |||
# В настройках 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> | |||
иначе просто не заработает, а вам ничего не скажет) | |||
===Графики=== | |||
Откройте {{nav|Правка|Параметры}}, вкладка "Статистика", отметьте галочками, какие графики вы хотите сделать доступными. | |||
Вкл./выкл. график вы можете через {{nav|Вид|График}}. | |||
===Снимки машины=== | |||
Снимок машины можно создать только если виртуальный жесткий диск у вас в формате *.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> | |||
А так-то RedHat пишет что Virt-manager depricated (устарел) и для управления виртуальными машинами нужно использовать cockpit<br> | |||
==Файлы Virt== | |||
(Для резервного копирования-восстановления) | |||
Файлы Libvirt хранятся в следующих директориях: | |||
*{{path|/var/lib/libvirt}} | |||
*{{path|/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=== | |||
Для работы проброса устройств должен быть установлен пакет {{pkg|libvirt-daemon-driver-nodedev}}: | |||
# apt-get install libvirt-daemon-driver-nodedev | |||
{{Attention|Без обозначенного пакета при попытке проброса устройства будет выведено предупреждение: ''"Подключение не поддерживает подсчёт устройств хоста"''}} | |||
[[Файл:Altlinux libvirt Подключение не поддерживает подсчёт.png|600px|центр]] | |||
При возникновении ошибки перенаправления 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'' в раздел ''<defaults>'' необходимо добавить следующую запись: | |||
<allow_any>yes</allow_any> | |||
Пример содержимого файла после внесения изменений: | |||
<syntaxhighlight lang="xml"> | |||
<?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> | |||
</syntaxhighlight> | |||
По необходимости поправить права на файл: | |||
# chmod 4755 /usr/libexec/spice-gtk/spice-client-glib-usb-acl-helper | |||
Перезапустить службу: | |||
# service libvirtd restart | |||
===Некоторые особенности использования Virt-Manager на системе aarch64=== | |||
*И хост система и VM имеют архитектуру aarch64. | |||
*Для работы графики VM нужно установить в хост систему пакет {{pkg|seavgabios}} | |||
*При создании VM aarch64 в неё не добавляются автоматически графика, клавиатура, мышь. Их нужно добавить вручную. | |||
**Для этого в диалоге "Создание новой виртуальной машины" на шаге 5 поставил флаг "Проверить конфигурацию перед установкой". | |||
**В открывшемся окне конфигурации нажать "Добавить оборудование" и добавить: | |||
***Графика/Сервер SPICE | |||
***Ввод/Virtio клавиатура, Virtio планшет. | |||
**Нажать "Начать установку". | |||
*При установке текстовые сообщения выводятся на {{nav|Вид|Consoles|Последовательное 1}}, а графика на {{nav|Вид|Consoles|Графическая консоль SPICE}}. Между этими устройствами нужно переключаться вручную. | |||
{{Category navigation|title=Виртуализация|category=Виртуализация|sortkey={{SUBPAGENAME}}}} | |||
{{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}} | |||
[[Категория:Виртуализация]] | |||
[[Категория:KVM]] |
Текущая версия от 09:15, 29 января 2025
Libvirt — набор инструментов для управления виртуализацией. В данной статье будет описано его использование.
Установка
Установка Libvirt и полной коллекции эмулируемых архитектур (qemu-system-aarch64, qemu-system-s390x, qemu-system-riscv и т.д.):
# apt-get install libvirt libvirt-kvm libvirt-qemu
Альтертнативный вариант. Установка Libvirt и эмулятора только для архитектуры x86-64 (qemu-system-x86):
# apt-get install libvirt-kvm qemu-kvm
Для управления виртуализацией пользователь должен быть добавлен в группу vmusers:
# 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
Графическое управление
Для управления виртуальными машинами через графический интерфейс используется Virt-manager:
# apt-get install virt-manager
Открываем Virt-Manager. Файл ▷ Добавить соединение
- Локальная машина
- Гипервизор QEMU/KVM (подключаться автоматически).
- Удаленный сервер
- QEMU/KVM-Connect to remove host over SSH
- вводим имя пользователя
- вводим IP
- ставим галочку подключаться автоматически
- QEMU/KVM-Connect to remove host over SSH
Создание виртуальной машины
- Нажимаем на кнопку "Создать виртуальную машину"
- Выбираем метод установки - локальный/ISO
- Выбираем ISO/CD и тип ОС (с помощью автодополнения)
- Выбираем количество ОЗУ и процессоров
- Создаем виртуальный жесткий диск
- Вводим название и выбираем сеть
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-образами.
Выберите образ из пула и нажмите на кнопку "Выбор тома".
Сеть
Важно обратить внимание, во избежание ошибки при запуске виртуальной машины "сеть «default» не активна" на настройку:
После создания виртуальной машины в virt-manager Правка ▷ Свойства подключения ▷ Вкладка Виртуальные сети ▷ На сети default поставить галочку "Автозапуск: При загрузке" ▷ Применить.
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-сервер (они настраиваются автоматически).
И в настройках виртуальной машины выберите данный интерфейс.
Мост
Чтобы напрямую общаться между реальной сетью и виртуальными машинами напрямую нужно создать сетевой мост.
Если простым языком, то задачу можно разделить на две:
- создать бридж
- в virt-manager в свойствах виртуальной машины, в свойствах сетевого интерфейса выбираем
- устройство моста
- вручную вводим имя нашего моста - vmbr0
Проброс портов
Из переписки:
Настроил тут проброс порта в QEMU-виртуалку. Казалось бы, в чём проблема-то?
cmd|qemu -netdev user,id=user0,hostfwd=tcp::2222-:22 -device e1000,netdev=user0" …
как-то так (можно вместо e1000 паравиртуальный драйвер, это побыстрее будет).
Но. Я это сделал через libvirt! И оказалось, что штатными средствами (не только тыкая в менюшки virt-manager, но и, кажется, вообще прямой настройкой сети) нельзя. Не знаю, почему. Может быть, можно, но я не нашёл как. А я искал. То, что в libvirt называется NAT, в действительности садится на tun/tap, лезет в iptables и т. д. Наверное, для совместимости с другими платформами виртуализации, не знаю.
Короче.
- В настройках virt-manager разрешаем «Редактирование XML»
- Удаляем все сетевые устройства.
- Добавляем в конец общего 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
Для работы проброса устройств должен быть установлен пакет libvirt-daemon-driver-nodedev:
# apt-get install libvirt-daemon-driver-nodedev
При возникновении ошибки перенаправления 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 в раздел <defaults> необходимо добавить следующую запись:
<allow_any>yes</allow_any>
Пример содержимого файла после внесения изменений:
<?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. Между этими устройствами нужно переключаться вручную.