Управление виртуальными машинами kvm через web

Обновлено: 07.07.2024

Сложилось так что понадобился инструмент для управления своими виртуалками вне офиса и при этом не всегда под рукой была машина с ОС Linux. Раньше приходилось активно пользоваться Putty и консольной утилитой virsh, что очень напрягало даже не так управление виртуалками а как их создание. По началу писал bash скрипты для оптимизации своих действий, но не всегда это было удобно.

Тут еще я начал попутно изучать Python, все что было наскриптовано в bash стал переводить в Python. И тогда возникла идея написать веб-интерфейс для управления своими виртуалками в офисе, ну и теми что крутится в личных целях. Так как решались личные потребности, изначально планировалось спрятать такую вещь у себя на веб-сервере, речи о паблике даже в мыслях не было. Но после двух недель интенсивной работы над задачей, когда нарисовался уже почти не большой веб проект, знакомый предложил выложить все это в открытый доступ для чего выделил мне виртуалку под проект.

Проект

WebVirtMgr сервис централизованного управления виртуальными машинами. В качестве основных технологий используются: гипервизор KVM и библиотека управления виртуализацией libvirt. Создание, установка, резервное копирование, настройка и запуск виртуальных машин реализованы в виде простого для освоения web-интерфейса. Для организации проброса экрана виртуальных машин в окно браузера используется VNC-клиент через SSH-туннель.

Технологии

Вся логика написана на языке Python с использованием фремвойка Django. Для взаимодействия Python’a с гипервизором используется библиотека Libvirt. Гипервизор по умолчанию KVM.

Как это все настраивается

Для работы нам понадобится сервер с установленным любым дистрибутивом ОС Linux. Правда в Debian\Ubuntu не поддерживаются некоторые функции libvirt в отличии от дистрибутивов семейства RedHat, а именно работа с сетевыми интерфейсами. Хотя это не на что не влияет мост (br0) для поброса сетевых интерфейсов для виртуальных машин можно настроить и через консоль. Ниже описан пример настройки CentOS 6.2, а как настраивать Ubuntu можно найти по этой ссылке.

Все по порядку, устанавливаем пакеты KVM и libvirt:


расcкоментрируем строку в файле /etc/sysconfig/libvirtd следующую строку:


в файле /etc/libvirt/libvirtd.conf раскоментрируем строки:


запускаем демон libvirtd:


создаем пользователя для управления вашими виртуалкаи, где fred имя пользователя:

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

Дальше заходим на сам сайт регистрируемся, подтверждаем регистрацию, авторизируемся.

Перед добавлением сервера виртуализации в сервис WebVirtMgr проверьте настройки iptables (Ubuntu — ufw) и сделайте тестовое подключения к вашему гипервизору из консоли:


если вы не увидели ошибок, а увидели информацию о системе, то смело добавляйте свой сервер виртуализации в сервис и управляйте виртуальными машинами.

Заключение

При написании проекта я получил реальный опыт работы с Django и Python что мне очень понравилось. Надеюсь что то что получилось принесет пользу кому то еще кроме меня, мне будет очень приятно если это действительно так. Даже если ничего не понравилось значит есть над чем работать. Если есть пожелания или рекомендации, а может быть вопросы то милости просим.

Тут будет актуально имет скорый доступ к управлению через браузер, что даст возможность подключится даже с телефона.
Приступим к настройке.
Исходные данные: Debian 7.7
Настраиваем все с нуля.

Проверяем поддерживает ли процессор виртуализацию

cat /proc/cpuinfo | egrep '(vmx|svm)' flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca lahf_lm dtherm tpr_shadow .

Ставим KVM и libvirt

apt-get install kvm sasl2-bin qemu-kvm libvirt-bin libvirt0 python-libvirt bridge-utils

service libvirt-bin status [ ok ] Checking status of libvirt management daemon: libvirtd running.

Для управления виртуальными машинами из-под учётной записи, отличной от root, необходимо добавить пользователя в группу libvirt:

adduser <megouser> libvirt

Проверяем загрузку модулей ядра

lsmod | grep kvm kvm_intel 122053 3 kvm 291967 1 kvm_intel

Редактируем конфиг l/etc/default/libvirt-bin, разрешив libvirt слушать на интерфейсе:

Включим TCP для libvirt в /etc/libvirt/libvirtd.conf:

. listen_tls = 0 listen_tcp = 1 .

Перезагружаем libvirt:

service libvirt-bin restart

Теперь добавляем пользователя которому разрешено манипулировать libvirt

saslpasswd2 -a libvirt <megouser> Password: Again (for verification):

Обязательно нужно указать приложение для которого создается пользователь
Проверить список пользователей :

sasldblistusers2 -f /etc/libvirt/passwd.db <megouser>@kvm: userPassword

Теперь настроим сеть:

nano /etc/network/interfaces iface eth0 inet manual auto br0 iface br0 inet static address 10.0.0.14 netmask 255.255.255.0 gateway 10.0.0.1 dns-nameserver 10.0.0.1 bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0

Добавляем форвард трафика

sysctl net.ipv4.conf.all.forwarding=1 sysctl net.ipv4.conf.all.proxy_arp=1

Смотрим на интерфейсы

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP qlen 1000 link/ether 00:19:b9:ea:dd:54 brd ff:ff:ff:ff:ff:ff 3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 00:19:b9:ea:dd:54 brd ff:ff:ff:ff:ff:ff inet 10.0.0.14/24 brd 10.0.0.255 scope global br0 inet6 fe80::219:b9ff:feea:dd54/64 scope link valid_lft forever preferred_lft forever 4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether fe:54:00:6a:9e:33 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

Теперь можно приступить к установке WebVirtMgr

apt-get install git python-pip python-libvirt python-libxml2 novnc supervisor nginx

Ставим Django окружение

Вводим требуемые данные

You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes (Put: yes) Username (Leave blank to use 'admin'): admin (Put: your username or login) E-mail address: username@domain.local (Put: your email) Password: xxxxxx (Put: your password) Password (again): xxxxxx (Put: confirm password) Superuser created successfully.

Для добавления еще одного пользователя

Настраиваем проксирование доступа через Nginx
Переносим файлі для вэб

cd .. mv webvirtmgr /var/www/

Создаем файл конфига /etc/nginx/conf.d/webvirtmgr.conf

service nginx restart

Установка Supervisor

service novnc stop update-rc.d -f novnc remove chown -R www-data:www-data /var/www/webvirtmgr

В конец файла /etc/supervisord.conf добавляем такие строки

[program:webvirtmgr] command=/usr/bin/python /var/www/webvirtmgr/manage.py run_gunicorn -c /var/www/webvirtmgr/conf/gunicorn.conf.py directory=/var/www/webvirtmgr autostart=true autorestart=true logfile=/var/log/supervisor/webvirtmgr.log log_stderr=true user=www-data [program:webvirtmgri-novnc] command=/usr/bin/python /var/www/webvirtmgr/console/webvirtmgr-novnc directory=/var/www/webvirtmgr autostart=true autorestart=true stdout_logfile=/var/log/supervisor/webvirtmgr-nonvc.log redirect_stderr=true user=www-data

service supervisor restart

Пробуем зайти на наш сервер

Login to WebVirtMgr

И должны увидеть такое
Login to WebVirtMgr

WebVirtMgr interface

а потом такое
WebVirtMgr interface

Сложно себе представить в наше время физический сервер без установленной на нем той или иной системы виртуализации. Я расскажу, как установить и настроить популярный гипервизор kvm на сервер под управлением Ubuntu. Это решение является open source, так что можно свободно использовать где угодно.

Что такое KVM?

Я сегодня не буду рассматривать готовые сборки гипервизоров, а вручную установлю на Ubuntu Server нативный гипервизор KVM с минимальными надстройками над ним. У нас на выходе будет сам гипервизор, локальная сеть для его корректной работы и средства управления гипервизором и виртуальными машинами. Если вам интересно, почему мой выбор пал на именно на убунту, читайте мой обзор этой системы, а так же статью про установку ubuntu.

Установка KVM в Ubuntu

Прежде чем начать установку гипервизора KVM в Ubuntu, проверим, поддерживает ли наш процессор виртуализацию. Для этого существует утилита kvm-ok. Если у вас нет ее в системе, установите пакет, который ее содержит.

INFO: Your CPU does not support KVM extensions
KVM acceleration can NOT be used

Если же все ОК, то информация будет следующая.

Проверка виртуализации процессора

В этом случае можно приступать к установке виртуализации kvm.

Установка KVM на Ubuntu

Я устанавливаю следующие компоненты kvm:

Запустим и добавим в автозагрузку сервис управления kvm:

В целом, все. Установка KVM на Ubuntu на этом и заканчивается. Можно проверить, загрузились ли у вас модули ядра kvm.

Все в порядке, гипервизор kvm готов к работе.

Сетевой Bridge для kvm

Настройка сети для виртуальных машин kvm может быть настроена различными способами. Я как минимум 3 наиболее популярных знаю:

  1. Виртуальные машины выходят во внешний мир через сам хост kvm, на котором настроен NAT. Этот вариант вам будет доступен сразу после установки kvm. Ничего дополнительно настраивать не надо, так как сетевой бридж для этого virbr0 уже будет добавлен в систему. А в правилах iptables будет добавлен MASQUERADE для NAT.
  2. Одна из виртуальных машин превращается в шлюз и через нее осуществляется доступ во внешний мир для всех виртуальных машин. Наиболее гибкий способ управления сетью для vm, но в то же время требует больше времени на настройку и набор знаний по работе с сетями.
  3. Для виртуальных машин kvm создается отдельный сетевой бридж во внешнюю сеть. Они напрямую получают в нее сетевой доступ.

Последний вариант наиболее простой и удобный, поэтому настроим сеть для виртуальных машин таким образом. Для этого нам нужно установить дополнительный пакет на host.

Настройка Bridge для kvm

Теперь на хосте приводим сетевые настройки в /etc/netplan к следующему виду.

Здесь будьте очень внимательны. Не выполняйте изменения сетевых настроек, не имея прямого доступа к консоли сервера. Очень высок шанс того, что что-то пойдет не так и вы потеряете удаленный доступ к серверу.

Теперь надо применить новые настройки.

Сразу после этого вы потеряете доступ к серверу по старому адресу. Интерфейс ens18 перейдет в состав bridge br0 и потеряет свои настройки. А в это время бридж br0 получит новые сетевые настройки по dhcp. IP адрес будет отличаться от того, что был перед этим на интерфейсе ens18. Чтобы снова подключиться удаленно к гипервизору kvm, вам надо будет пойти на dhcp сервер и посмотреть, какой новый ip адрес ему назначен.

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

В этом случае после применения новых настроек, гипервизор kvm будет доступен по адресу 192.168.25.2.

Обращайте внимание на все отступы в конфигурационном файле netplan. Они важны. В случае ошибок, настройки сети применены не будут. Иногда эта тема очень напрягает, так как не получается сразу понять, где именно в отступах ошибка. В этом плане yaml файл для настроек сети гипервизора как-то не очень удобен.

Далее еще один важный момент. Чтобы наш kvm хост мог осуществлять транзит пакетов через себя, надо это явно разрешить в sysctl. Добавляем в /etc/sysctl.d/99-sysctl.conf новый параметр. Он там уже есть, надо только снять пометку комментария.

Применяем новую настройку ядра.

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

Настройка KVM в Ubuntu Server

В целом, какой-то особенной настройки для гипервизора kvm после установки делать не нужно. Я обычно выношу в отдельные директории диски виртуальных машин и iso образы. Например, в /mnt/kvm . Это позволяет подмонтировать туда любые внешние хранилища, если будет такая необходимость.

Теперь при создании виртуальных машин можно указывать эти директории.

В рамках настройки kvm сервера, рекомендую сразу же указать нужный часовой пояс и установить софт для автоматического обновления времени сервера. Это важно, так как гостевые виртуальные системы будут синхронизировать время с хостом.

Настройка KVM

kvm passthrough

Гипервизор KVM поддерживает так называемый проброс оборудования в виртуальную машину. Называется эта технология passthrough. Для того, чтобы это было возможно, ваше железо должно поддерживать технологию IOMMU. С ее помощью можно, к примеру, пробросить в виртуальную машину видеокарту.

У этой технологии очень много нюансов, так что в рамках данной статьи я не буду ее рассматривать и приводить примеры. У меня под рукой нет подходящего железа, а показывать непроверенные конфиги мне не хочется. Рассказываю об этом, просто чтобы вы знали о существовании такой возможности.

port forwarding

Если вы не создаете свой отдельный сетевой бридж для виртуальных машин, с помощью которого они будут автоматически попадать во внешнюю сеть, вам необходимо будет пробрасывать порты внутрь виртуалок. Я считаю это не очень удобным, поэтому выше и описал способ сразу вывести виртуальную машину во внешнюю сеть. Но если вам по каким-то причинам не хочется это делать и вы остаетесь на дефолтной настройке сети в kvm, то вам придется с помощью iptables делать проброс портов. Это не очень сложно, если вы умеете работать с iptables. Если же нет, то это может стать проблемой.

В рамках данной статьи я тоже не буду рассматривать этот вопрос, так как iptables отдельная большая тема. Просто знайте, что проброс портов в виртуальную машину это обычная настройка iptables. Приведу только один пример, как с помощью iptables пробросить порт ssh для одной из виртуальных машин.

В этом примере я пробросил внешний tcp порт 22122 хоста в виртуальную машину 192.168.122.11, порт 22. В данном случае virbr0 дефолтный бридж, который был автоматически создан при установке kvm на хост.

Основные команды KVM

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

Просмотр всех виртуальных машин:

Запустить неактивную виртуальную машину:

Выключить vm штатно через возможности ОС:

Мгновенная остановка виртуальной машины. Например, если она зависла.

Информация о дисках vm:

Посмотреть информацию о vm:

Краткая информация о хосте гипервизора kvm:

Информация о файле образа диска vm:

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

Давайте теперь создадим и запустим нашу первую виртуальную машину на гипервизоре kvm. Для этого нам достаточно только консоли системы ubuntu и команды virt-install. Но перед тем, как создать саму машину, сделаем для нее диск в формате qcow2.

Отлично, теперь создаем виртуальную машину для гипервизора kvm:

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

Я получил предупреждение о том, что слишком мало выделил оперативной памяти для виртуальной машины Ubuntu20.04

WARNING Requested memory 1024 MiB is less than the recommended 2048 MiB for OS ubuntu20.04

На самом деле это не страшно. Для минимальной конфигурации хватит и таких ресурсов. Рассмотрим теперь подробно параметры, которые я указал при создании vm.

После создания и запуска виртуальной машины, можно подключиться к ее консоли. Для этого надо узнать, к какому порту VNC осуществлять подключение. Запускаем в консоли гипервизора команду:

Вывод :0 означает, что нет отступа от дефолтного порта vnc 5900. Если бы в выводе было :1, значит подключаться нужно было бы к порту 5901. В нашем случае подключаемся через любой vnc клиент к ip адресу гипервизора по порту 5900.

Подключение к консоли виртуальной машины

Пароль для доступа по vnc

После подключения к консоли виртуальной машины, увидим традиционный установщик Ubuntu.

Консоль виртуальной машины с ubuntu в kvm

Можно продолжать установку непосредственно системы внутри vm. На этом установку новой виртуальной машины в kvm закончим. Рассмотрим дополнительно некоторые важные параметры, касающиеся управления.

Автозапуск виртуальной машины

Для того, что виртуальная машина kvm автоматически запускалась при старте гипервизора, можно явно это указать в самом начале. Во время создания vm надо добавить параметр autostart примерно так:

Либо воспользуйтесь встроенной командой:

После этого виртуальная машина vmserver01 будет автоматически запускаться после перезагрузки хоста kvm.

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

Теперь рассмотрим ситуацию, когда вам надо удалить виртуальную машину в kvm, используя только консоль. Сделать это не сложно. Для начала посмотрим на список всех виртуальных машин хоста:

Останавливаем виртуальную машину vmserver01:

Это команда для штатного выключения через операционную систему виртуальной машины. Если в ней не установлены средства интеграции с гипервизором, то она не сработает. В этом случае нужно либо через саму виртуальную машину сделать завершение работы, либо остановить ее принудительно в гипервизоре:

Теперь уже виртуальную машину можно удалить:

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

Эта команда по сути просто удаляет конфигурацию vm из директории /etc/libvirt/qemu . Для полного удаления виртуальной машины вам необходимо отдельно удалить ее диск. Сделайте это вручную сами в зависимости от того, где располагался диск. Если это был обычный qcow2 или raw файл, то удалите его командой rm.

Будьте внимательны с именем файла. Не удалите случайно диск от другой виртуальной машины.

Увеличение размера диска

Для увеличения диска виртуальной машины в kvm достаточно воспользоваться консольной утилитой qemu-img. Если вы не знаете, где располагается диск виртуальной машины, посмотреть можно так:

Увеличение размера диска

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

Увеличил размер диска на 1G. Посмотрим информацию о диске:

Информация о диске virtual machine

В моем примере размер диска vm был изначально 2G, я увеличил его до 3-х.

KVM Agent

Для того, чтобы гипервизор мог получать информацию о виртуальной машине и взаимодействовать с ней, на нее необходимо установить qemu-guest-agent. Он нужен, например, для корректного завершения работы системы командой от гипервизора. Или для создания снепшота диска виртуалки без ее остановки. Для этого в свойствах виртуальной машины его нужно включить.

Сделать это можно отредактировав конфиг виртуальной машины. В него нужно добавить дополнительный channel. Сделаем это.

Добавляем в конфиг:

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

Установка Windows 10 в KVM

Для того, чтобы установить виртуальную машину с Windows 10 в KVM ничего особенного делать не надо. Кладем iso образы системы и virtio драйверов на kvm хост и запускаем виртуальную машину.

Дальше подключаемся по vnc и выполняем установку Windows 10. Узнать порт vnc для подключения можно командой:

В данном случае порт будет 5900. Число после двоеточия добавляется к стандартному порту 5900. Если бы там было :5, то подключаться нужно было бы по порту 5905. Если во время установки в списке дисков будет пусто, необходимо загрузить драйвер с образа virtio-win.iso. Сам драйвер находится в папке E:\viostor\w10\amd64.

После установки Windows 10 на KVM, зайдите в систему и установите драйвера для всего неопознанного оборудования. Драйвер можно поставить автопоиском с диска virtio-win. В самом конце с этого же диска установите Qemu Guest Agent. Он там в отдельной директории лежит в виде приложения.

На этом все, система с Windows 10 готова работать на гипервизоре KVM. Установка немного посложнее, чем в других гипервизорах из-за того, что в стандартном образе виндовс нет драйверов для дисков kvm.

Snapshot виртуальной машины KVM

Отдельно расскажу, как сделать snapshot виртуальной машины в kvm. Для того, чтобы функционал снимков был доступен, ваши диски должны быть в формате qcow2. Именно он поддерживает снэпшоты. Если диски raw, то сделать снимок не получится. Так же необходимо, чтобы в системе был установлен qemu-guest-agent. Если его не будет, то при создании снимка работающей vm получите ошибку:

error: Guest agent is not responding: QEMU guest agent is not connected

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

Отлично, имя диска vda. Теперь делаем его snapshot:

vmserver01 имя виртуальной машины, для которой делаем снэпшот
snapshot-name название самого снепшота, актуально, когда их несколько
vda имя диска виртуальной машины
vmserver01-disk1-snapshot.qcow2 имя и путь для снепшота

После этого в директории /mnt/kvm/disk появится файл vmserver01-disk1-snapshot.qcow2 , куда будут писаться все изменения диска. Сам же диск останется в неизменном виде. В этой ситуации его удобно забэкапить. Рассмотрим это позже. Если сейчас посмотреть список дисков виртуальной машины, то в качестве диска там будет указан снэпшот.

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

Проверьте список дисков. У вас должен исчезнуть snapshot, а основной диск вернется на прежнее место.

Бэкап виртуальной машины

Бэкап виртуальной машины kvm может быть выполнен по-разному. По своей сути это просто копия диска и экспорт настроек vm. Если вы хотите делать backup без остановки виртуальной машины, то необходимо воспользоваться снепшотом. Как его сделать, я показал выше. После того, как снэпшот сделан, вам достаточно просто скопировать основной диск vm. Сделать это можно любым доступным способом. Например, можно его сразу же сжать и положить в директорию с бэкапами.

Мы сжали диск виртуальной машины с помощью tar и gz и положили его в директорию с бэкапами /mnt/backup/ . Для полноты бэкапа, положим туда же и настройки виртуальной машины.

После того, как сделаете backup виртуальной машины, не забудьте объединить снэпшот с основными диском. Не допускайте роста числа снэпшотов. Это приводит к сильному снижению производительности, а когда снимков станет слишком много, могут быть ошибки работы с диском.

Если у вас есть возможность остановить виртуальную машину для создания архива, то снимки вам не нужны. Просто останавливайте виртуалку и копируйте ее диски. А потом запускайте снова. Можно все эти действия объединить в скрипт. Примерно так:

Это просто набросок. По хорошему, сюда нужно добавлять проверки, отправку отчета на почту и т.д.

Web интерфейс (gui) для KVM

Выше я показал, как управлять виртуальными машинами через консоль. В целом, весь необходимый функционал доступен. Но если вам хочется управлять виртуальными машинами kvm через браузер, то можно поставить простую панель управления для этого. В качестве KVM Web Interface я предлагаю использовать VMDashboard. Это обычное веб приложение, написанное на php. В работе использует базу данных MySQL.

Устанавливаем необходимые компоненты сервера для работы Web Interface.

Для того, чтобы работало подключение к консолям виртуальных машин через web интерфейс, необходимо раскомментировать один параметр в /etc/libvirt/qemu.conf .

Продолжаем настройку web панели для kvm. Добавляем пользователя www-data в группу libvirt:

Переходим в директорию www и загружаем исходники панели:

Распаковываем их и готовим к запуску:

Теперь нам нужно создать mysql базу для веб панели.

Далее нужно перезагрузить kvm сервер:

Web интерфейс для KVM

На этом установка и настройка веб панели управления для kvm закончена. Можно переходить в интерфейс и управлять виртуалками.

kvm gui

Заключение

Постарался всесторонне рассмотреть вопрос установки и настройки гипервизора kvm на ubuntu server. Если забыл что-то важное, напомните в комментариях. Я дополню статью.

2 комментариев к записи « Установка и настройка KVM в Ubuntu »

Спасибо за обратную связь. Странно, что vmdashboard не заработал. У меня обычно нет проблем с его настройкой. Ничего особенного настраивать не надо. Сходу все запускается.

date

25.05.2020

directory

CentOS, KVM, Linux

comments

комментариев 7

Virt-Manager – графическая консоль для управления виртуальными машинами KVM от компании Red Hat. С помощью Virt-Manager можно, создавать, редактировать, запускать и останавливать виртуальные машины на гипервизоре KVM. Можно выполнять настройку параметров виртуальных машин, что значительно упрощает работу по сравнению с управлением KVM из интерфейса командной строки.

В статье мы рассмотрим установку Virt-Manager на сервер с KVM, типовые задачи управления виртуальными машинами в графической консоли и покажем, как использовать virt-manager из Windows-клиента.

Установка Virt-Manager в Linux

Прежде всего нужно установить необходимые пакеты из базового репозитория на сервере с KVM (в нашем примере сервер KVM установлен на Linux CentOS). Выполните следующую команду yum (или dnf):

Чтобы удаленно подключаться к virt-manager с Windows-компьютера, нужно дополнительно настроить SSH. Откройте файл sshd_config:

Включите следующие параметры:

включить X11Forwarding в ssh

Перезапустите сервис sshd:

Управление KVM через virt-manager из Windows

Для удалённого подключения к virt-manager с Windows компьютера, вам понадобится следующее ПО:

  • Putty – ssh клиент
  • Xming – порт сервера для ОС Windows.

Enable X11 Forwarding в putty

Теперь на вкладке Session, укажите адрес KVM сервера, имя сессии, укажите порт и сохраните подключение.

Чтобы из Windows удаленно подключаться к KVM серверу через virt-manager, используется следующий порядок:

  1. Сначала запускаете Xming;
  2. Запускаете сохраненную сессию Putty с опцией X11 Forwarding;
  3. Подключаетесь к virt-manager.

После включения Xming у вас в трее должен светиться значок X:

запуск Xming в windows

Далее запустите Putty, и после авторизации на сервере, выполните:

Через несколько секунд у вас должно открыться окно управления virt-manager и окно дополнительной авторизации, где нужно ввести данные для подключения к серверу:

virt-manager аворизация

После авторизации вы должны увидеть список виртуальных машин.

список виртуальнух машин на KVM

Использование Virt-Manager для управления виртуальными машинами KVM

Щелкнув ПКМ по виртуальной машине, вы можете выключить, перезагрузить, включить ВМ.

запустить / выключить виртуальную машину KVM

Далее я хочу изменить директорию для хранения файлов виртуальных машин, так как основное место на диске при установке операционной системы на сервере с KVM, я отдал под директорию VZ. Чтобы поменять стандартную директорию, перейдите в меню “Edit -> Connection Details”.

настройки KVM - Connection Details

В открывшемся окне, нужно перейти во вкладку “Storage”. Для создания нового пула, нужно остановить работу текущего и после чего удалить его:

путь к хранилищу виртуальных машин kvm

После установки пула, кнопка удаления станет активна:

удалить kvm хранилище

Теперь можно создать пул в нужной вам директории или разделе:

создать новый storage pool

путь к хранилищу KVM машин

После этого, у меня стал активным мой основной раздел для файлов ВМ:

новое хранилище для дисков ВМ

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

Теперь можно попробовать создать новую виртуальную машину KVM. Ниже я прикреплю ряд скриншотов, на которых по шагам будет все более-менее понятно. В конце опишу весь процесс создания машины.

создать новую ВМ в kvm через virt-manager

установка виртуалки kvm из iso образа

путь к iso образу

выбрать iso образ с дистрибутовом ОС

задать лимиты памяти и vCPU для виртуальной машины KVM

размер диска вируальной машины в KVM

имя виртуальной машины и сетевой интерфейс

консоль виртуальной машины qemu/kvm

  1. При нажатии кнопки на первом скриншоте, запускается процесс создания новой виртуальной машины KVM;
  2. Затем указываем, откуда запускать установку ОС на виртуальной машине. Я использовал локальный ISO образ с дистрибутивом CentOS 8;
  3. Далее настраиваются ресурсы виртуальной машины: количество памяти и vCPU, размер виртуального диска (при необходимости его можно будет расширить или уменьшить), имя, и указываем сеть;
  4. После создания ВМ к ней сразу будет примонтирован установочный образ ОС, который указали при создании.

Чтобы изменить ресурсы или какие-то параметры уже созданной машины, вам нужно выделить ее и нажать кнопку “Open”. В открывшемся меню нажмите на лампочку и у вас откроется список параметров виртуальной машины KVM.

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

Чтобы добавить новый сервер KVM, выполните следующее “File -> Add Connection” и заполните данные в открывшемся окне:

подключение второго KVM сервера

Red Hat Linux изменила статус virt-manager в RHEL 8 на deprecated, и возможно в следующих релизах OC этот пакет будет недоступен. Вместо него предлагается использовать веб интерфейс Cockpit. Однако на данный момент в модуле управления KVM в Cockpit пока нет хватает всех необходимых функций, доступных в virt-manager.

Типовые проблемы с Virt-Manager

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

libvirt error: cannot execute binary /etc/libvirt/hooks.qemu: No such file or directory

Система ругается на отсутствие файла, который скорее всего должен быть создан при установке KVM на сервер, но в моем случае он отсутствовал. Решился вопрос, созданием файла:

После этого нужно перезапустить сервис libvirtd:

Следующая ошибка ожидала меня сразу же на следующем шаге установки:

Unable to complete install: “NoneType object has no attribute storageVolLookupByPath

Чтобы решить эту проблему и возможно последующие другие, нужно установить пакет qemu-kvm-tools:

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

Управлять KVM через virt-manager очень удобно. Вы значительно сократите время на выполнение рядовых операций с виртуальными машинами, а также сможете подключиться к ним из Windows.

Читайте также: