Краткое описание: Инструкция по настройке KVM на Ubuntu Server 18.04. Настройка netplan, bridge, bonding. Команды virsh. Клонирование, создание снимка(snapshot).
Поддержи автора статьи, просмотри рекламу ↓↓↓
Есть множество разных причин для выбора гипервизора 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 нужно указать
Команды 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
проверка создания клона
adminX@s-vmm-2:/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"