Краткое описание: Инструкция по настройке KVM на Ubuntu Server 18.04. Настройка netplan, bridge, bonding. Команды virsh. Клонирование, создание снимка(snapshot).

Понравилась статья, отблагодари автора, посмотри рекламу. СпасибоПоддержи автора статьи, просмотри рекламу ↓↓↓

Нужна консультация или помощь в решении IT вопроса?

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

Проверка аппаратной поддержки виртуализации

Понравилась статья, отблагодари автора, посмотри рекламу. СпасибоПоддержи автора статьи, просмотри рекламу ↓↓↓

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

egrep -c '(vmx|svm)' /proc/cpuinfo

числа отличные от нуля говорят о том, что данный сервер имеет поддержку. Также можно способом

sudo apt install cpu-checker
kvm-ok

вывод примерной такой

INFO: /dev/kvm exists
KVM acceleration can be used

Установка основных пакетов QEMU-KVM

Понравилась статья, отблагодари автора, посмотри рекламу. СпасибоПоддержи автора статьи, просмотри рекламу ↓↓↓

sudo apt install qemu qemu-kvm libvirt-bin bridge-utils virtinst

sudo service libvirtd start
sudo update-rc.d libvirtd enable
service libvirtd status

Настройка сети KVM

Сервер имеет на борту две сетевые карты(статья по настройке netplan). Сетевые карты будут сгруппированы(bonding, LACP) для балансировки нагрузки. Кроме этого, для работы гостевых виртуальных машин будет создан bridge:

sudo nano /etc/netplan/50-cloud-init.yaml
network:
    bridges:
        br0:
            addresses:
            - 192.168.1.59/24
            dhcp4: no
            dhcp6: no
            gateway4: 192.168.1.1
            nameservers:
                addresses:
                - 192.168.1.1
                search: []
            interfaces:
                - bond0
    bonds:
        bond0:
            interfaces:
            - enp3s0
            - enp5s0
    ethernets:
        enp3s0:
            addresses: [192.168.1.57/24]
            dhcp4: no
            dhcp6: no
        enp5s0:
            addresses: [192.168.1.58/24]
            dhcp4: no
            dhcp6: no
sudo netplan apply

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

Понравилась статья, отблагодари автора, посмотри рекламу. СпасибоПоддержи автора статьи, просмотри рекламу ↓↓↓

sudo mkdir -p /kvm/{vhd,iso,./vhd/S-COS-01}
sudo virt-install -n S-COS-01 \
--autostart \
--noautoconsole \
--network=bridge:br0 \
--ram 512 --arch=x86_64 \
--vcpus=1 --cpu host --check-cpu \
--disk path=/kvm/vhd/S-COS-01/S-COS-01-disk-part-1.img,size=5 \
--cdrom /kvm/iso/CentOS-7-x86_64-DVD-1804.iso \
--graphics vnc,listen=0.0.0.0,password=VNC-PASSWORD \
--boot cdrom,hd,menu=on

На этом этапе настройка KVM окончена, остаётся только подключиться к VM и ознакомиться с командами управления VM.

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

sudo virsh vncdisplay S-COS-01

Понравилась статья, отблагодари автора, посмотри рекламу. СпасибоПоддержи автора статьи, просмотри рекламу ↓↓↓

Данная команда выводит номер гостевой виртуальной машины, который нужно прибавить к значению 5900 и результатом станет номер порта, который нужно указать при подключении. К примеру если выведется номер 5, то в подключении VNC нужно указать

Настройка KVM Ubuntu, VNC подключение

Команды Virsh

Команда Описание
help Краткая справка
list Краткая Просмотр всех виртуальных машин
dumpxml Вывести файл конфигурации XML для заданной виртуальной машины
create Создать виртуальную машину из файла конфигурации XML и ее запуск
start Запустить неактивную виртуальную машину
destroy Принудительно остановить работу виртуальной машины
define Определяет файл конфигурации XML для заданной виртуальной машины
domid Просмотр идентификатора виртуальной машины
domuuid Просмотр UUID виртуальной машины
dominfo Просмотр сведений о виртуальной машине
domname Просмотр имени виртуальной машины
domstate Просмотр состояния виртуальной машины
quit Закрыть интерактивный терминал
reboot Перезагрузить виртуальную машину
restore Восстановить сохраненную в файле виртуальную машину
resume Возобновить работу приостановленной виртуальной машины
save Сохранить состояние виртуальной машины в файл
shutdown Корректно завершить работу виртуальной машины
suspend Приостановить работу виртуальной машины
undefine Удалить все файлы виртуальной машины
migrate Перенести виртуальную машину на другой узел
Команда Описание
edit Редактирование конфигурационного файла xml
setmem Определяет размер выделенной виртуальной машине памяти
setmaxmem Ограничивает максимально доступный гипервизору объем памяти
setvcpus Изменяет число предоставленных гостю виртуальных процессоров
vcpuinfo Просмотр информации о виртуальных процессорах
vcpupin Настройка соответствий виртуальных процессоров
domblkstat Просмотр статистики блочных устройств для работающей виртуальной машины
domifstat Просмотр статистики сетевых интерфейсов для работающей виртуальной машины
attach-device Подключить определенное в XML-файле устройство к гостю
attach-disk Подключить новое дисковое устройство к гостю
attach-interface Подключить новый сетевой интерфейс к гостю
detach-device Отключить устройство от гостя (принимает те же определения XML, что и attach-device)
detach-disk Отключить дисковое устройство от гостя
detach-interface Отключить сетевой интерфейс от гостя

Клонирование гостевых виртуальных машин KVM

Ниже описан ручной способ клонирования и как вариант можно воспользоваться отдельной утилитой virt-clone.

virsh shutdown S-COS-01
sudo mkdir -p /kvm/vhd/S-COS-02
sudo cp /kvm/vhd/S-COS-01/S-COS-01-disk-part-1.img /kvm/vhd/S-COS-02/S-COS-02-disk-part-1.img

virsh dumpxml S-COS-01 > /tmp/S-COS-02.xml.temp

Понравилась статья, отблагодари автора, посмотри рекламу. СпасибоПоддержи автора статьи, просмотри рекламу ↓↓↓

очистка старых значений, новые же будут созданы автоматически при запуске:

sed -i /uuid/d /tmp/S-COS-02.xml.temp
sed -i '/mac address/d' /tmp/S-COS-02.xml.temp
sed -i s/S-COS-01/S-COS-02/ /tmp/S-COS-02.xml.temp
sed -i s/S-COS-01-disk-part-1.img/S-COS-02-disk-part-1.img/ /tmp/S-COS-02.xml.temp

sudo cp /tmp/S-COS-02.xml.temp /etc/libvirt/qemu/S-COS-02.xml

определения файла конфигурации для новой виртуальной машины

virsh define /etc/libvirt/qemu/S-COS-02.xml

проверка создания клона

[email protected]:/kvm/vhd$ virsh list --all
Id Name State
----------------------------------------------------
- S-COS-01 shut off
- S-COS-02 shut off

Создание снимка snapshot

Создание снимка помогает оперативно восстановить предыдущее состояние ОС в случае непредвиденных ситуаций: изменение конфигурации самой ОС и приложений.

virsh snapshot-create-as --domain "domain-name" --name "snapshot-name"

восстановление состояния из снимка

virsh snapshot-revert --domain "domain-name" --snapshotname "snapshot-name"

удаление снимка

virsh snapshot-delete --domain "domain-name" --snapshotname "snapshot-name"

вывод списка снимков

virsh snapshot-list --domain "domain-name"

Понравилась статья, отблагодари автора, посмотри рекламу. СпасибоПоддержи автора статьи, просмотри рекламу ↓↓↓

Если у вас есть профессиональный интерес в расширении данной статьи — заполните форму запроса.