Установка KVM на Ubuntu 20.04
Подготовка
Проверка поддержки виртуализации (Intel-VT или AMD-V) , если что то нет так, то включите виртуализацию в UEFI/BIOS
lscpu | grep VT-x # проверяем наличие флага vmx или svm lscpu | grep -E 'vmx|svm' apt install cpu-checker kvm-ok INFO: /dev/kvm exists KVM acceleration can be used
Установка
apt install qemu qemu-kvm libvirt-daemon libvirt-daemon-system libvirt-clients bridge-utils libosinfo-bin virtinst # Если установлена графическая оболочка, то можно дополнительно установить GUI apt install virt-manager # проверка модулей ядра lsmod | grep -i kvm kvm_intel 286720 0 kvm 712704 1 kvm_intel # проверка сервисов systemctl status libvirtd systemctl status qemu-kvm # проверка подключения к libvirtd virsh sysinfo
Проверьте, что ваш пользователь включен в группу libvirt
# вывод списка групп id -nG <пользоватль>
Создание пула хранилища
# все выполняется под root-ом sudo su chown -R root:root /path/to/KVM-Store chmod 711 /path/to/KVM-Store chmod 600 /path/to/KVM-Store/* virsh pool-define-as KVM-Store dir - - - - "/path/to/KVM-Store" virsh pool-build KVM-Store virsh pool-start KVM-Store virsh pool-autostart KVM-Store virsh pool-list --all virsh pool-info KVM-Store
Настройка хранилища ISO образов
chown -R sysop:libvirt-qemu "/path/to/KVM-ISO" chmod -R 755 "/path/to/KVM-ISO"
Настройка сети
Желательно иметь не менее двух сетевых интерфейсов. Один сетевой интерфейс оставляем физическому серверу и не связываем с ним никаких виртуальных сетей. Остальные сетевые интерфейсы связываем с виртуальными сетями KVM. Если требуется разделение на VLAN-ы, то на физическом сервере создайте подчиненные интерфейсы связанные с нужными VLAN-ами и связывайте с ними соответствующие виртуальные сети KVM. Примечание: Настройка в рамках одного сетевого интерфейса возможна, но она более сложна и может иметь ряд проблем или особенностей, поэтому здесь мы этот вариант не рассматриваем.
Ссылки по теме
# проверьте что запущен сетевой менеджер systemctl status NetworkManager # управление сетевыми интерфейсами осуществляется через утилиту nmcli # проверка статуса nmcli general status # показать имя хоста nmcli general hostname # список интерфейсов и их статус nmcli device status # список доступных подключений nmcli connection show # свойства подключения nmcli connection show "Проводное соединение 1" # выключить/отключить подключение nmcli connection down "Проводное соединение 1" nmcli connection up "Проводное соединение 1" # команды можно сокращать nmcli conn up "Проводное соединение 1" # создание подключения с включенным DHCP nmcli connection add con-name "LAN" ifname enp24s0 type ethernet # создание подключения со статическим IP nmcli connection add con-name "LAN" ifname enp2s0 type ethernet autoconnect no ip4 192.168.0.210 gw4 192.168.0.1 nmcli conn modify "LAN" ipv4.dns 8.8.8.8 nmcli conn modify "LAN" +ipv4.dns 8.8.4.4 nmcli conn modify "LAN" +ipv4.addresses 192.168.0.240/24
Создание виртуальной сети связанной с нужным сетевым интерфейсом
Если вы используете выделенный под KVM интерфейс, то желательно на нем отключить IPv4 и IPv6. Если используется интерфейс хоста, то необходимо иметь ввиду, что в данном случае хост и гостевая машина не будут видеть друг друга по сети.
Создайте файл конфигурации сети KVM-имя_интерфейса.xml
<network> <name>KVM-имя_интерфейса</name> <forward mode='bridge'> <interface dev='имя_интерфейса'/> </forward> </network>
Создайте виртуальную сеть
virsh net-define KVM-имя_интерфейса.xml virsh net-autostart KVM-имя_интерфейса virsh net-start KVM-имя_интерфейса # проверьте список виртуальных сетей virsh net-list --all
После манипуляций с интерфейсами и виртуальными сетями желательно перегрузить сеть и KVM
# остановите все гостевые машины virsh list virsh shutdown <вирт.машина> # жесткий вариант остановки virsh destroy <вирт.машина> # перегрузите сеть systemctl restart network # перегрузите libvirtd systemctl restart libvirtd
Создание подчиненного сетевого интерфейса с привязкой к VLAN nmtui Добавить VLAN Имя профиля: [<имя_интерфейса>-vlan<номер>] Устройство: [<имя_интерфейса>.<номер>] Родительский: [<имя_интерфейса>] VLAN ID: [<номер>] Конфигурация IPv4 <Отключено> Конфигурация IPv6 <Игнорировать>
Создание виртуальной машины
Создание виртуальной машины
virt-install \ --network network=<KVM_сеть1>,model=virtio \ ... --network network=<KVM_сетьN>,model=virtio \ --name <имя_машины> \ --ram=<память_МБ> \ --vcpus=<кол-во_CPU> \ --disk path='<путь_к_файлу_диска>',size=<размер_ГБ>,format=qcow2,bus=virtio \ --os-variant <тип_ОС> \ --graphics spice,password=<пароль> \ --cdrom '<путь_к_iso_образу_установки>' \ --boot hd,cdrom,menu=on
Для определения типа ОС, используйте команду
osinfo-query os
win10 | Microsoft Windows 10 win2k19 | Microsoft Windows Server 2019 win2k16 | Microsoft Windows Server 2016 win2k12r2 | Windows Server 2012 R2 win2k8r2 | Microsoft Windows Server 2008 R2 ubuntu20.04 | Ubuntu 20.04 debian10 | Debian 10 centos8 | CentOS 8 freebsd11.1 | pfsense (нужно уточнять, pfsense периодически обновляет базовую ОС)
Добавление сетевого интерфейса к уже созданной виртуальной машине
virsh edit <имя_машины> добавьте в соответствующий раздел, остальные параметры будут назначены автоматически. <interface type='network'> <source network='имя_KVM_сети'/> <model type='virtio'/> </interface> virsh attach-interface gate2 network KVM-eno4 --model virtio --persistent # отключить интерфейс от работающей машины нельзя # можно только убрать из конфигурации и перегрузить virsh domiflist gate2 virsh detach-interface gate2 network --mac 52:54:00:a1:40:22 --config
Драйвера для гостевых систем
Описанное ниже относится к CentOS, нужно переделать под Ubuntu
Дополнительную информацию смотрите по ссылке https://fedoraproject.org/wiki/Windows_Virtio_Drivers # добавлен репозиторий с virtio драйверами для гостевых Windows wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo yum install virtio-win Данный пакет содержит драйвера в следующем виде /usr/share/virtio-win/*.iso: ISO CDROM containing all the drivers. See details below /usr/share/virtio-win/*.vfd: VFD floppy images for using during install of Windows XP /usr/share/virtio-win/drivers: Copy of the extracted VFD driver contents /usr/share/guest-agent/*.msi: QEMU Guest Agent 32bit and 64bit MSI installers Для установки драйверов в гостевой Windows, необходимо подключить актуальный образ с драйверами /usr/share/virtio-win/virtio-win.iso