KVM
Поднятие и настройка KVM
(пошаговый мануал и справочная информация)
Проверяем поддержку виртуализваии процессора (>0 - OK):
egrep -c '(vmx|svm)' /proc/cpuinfo
Установка для Debian 9:
sudo apt-get update
apt-get install qemu-kvm libvirt-clients libvirt-daemon-system virtinst bridge-utils
Проверка после установки:
smod | grep kvm
virsh sysinfo
Далее желательно, чтобы KVM и libvirt запускались не от пользователя root, а от например virt . Также необходимо определить место хранилица данных и машин, например /var/data/virt.
mkdir -m 700 /var/data/virt
useradd -m -d /var/data/virt -s /bin/bash virt
passwd virt
adduser virt kvm
iface lo inet loopback
allow-hotplug eno1
iface eno1 inet dhcp
iface lo inet loopback
auto kvmbr0
allow-hotplug kvmbr0
iface kvmbr0 inet dhcp
bridge_ports eno1
auto eno1
iface eno1 inet manual
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback #Bridge Name # auto br1 # Bridge Information # iface br1 inet static bridge_ports eth1 eth0 bridge_stp off bridge_fd 9 # Bride IP # address 192.168.12.7 netmask 255.255.255.0 network 192.168.12.0 broadcast 192.168.12.255 gateway 192.168.12.2 dns-nameservers 192.168.12.2 dns-nameservers 8.8.8.8
Создать виртуальные сети:
<network> <name>default> <uuid>08bc57ca-6bcb-42fa-9841-5f8fc61981b7> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:02:d0:4e'/> <domain name='default'/> <ip address='192.168.100.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.100.128' end='192.168.100.254'/> > > >
<network> <name>default> <uuid>08bc57ca-6bcb-42fa-9841-5f8fc61981b7> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:02:d0:4e'/> <domain name='default'/> <ip address='192.168.100.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.100.128' end='192.168.100.254'/> > > >
Полезные команды перед использованием.
virsh net-list
Просмотр информации о конкретной сети (с именем nat):
virsh net-info nat
Создание виртуалки с 1 CPU, 1 Гб RAM и 15 Гб места на диске, подключенную к nat:
--virt-type=kvm \
--name xub18 \
--ram 1024 \
--vcpus=1 \
--hvm \
--cdrom=/var/data/virt/xubuntu-18.04.2-desktop-i386.iso \
--network network=nat,model=virtio \
--graphics vnc \
--disk path=/var/data/virt/ubunt18.qcow2,size=15,bus=virtio
Остальные полезные комманды:
virsh list --all
Получение информации о конкретной виртуалке:
virsh dominfo ubunt18
Запустить виртуалку:
virsh start ubunt18
Остановить виртуалку:
virsh shutdown ubunt18
Принудительно остановить виртуалку:
virsh destroy ubunt18
Ребутнуть виртуалку:
sudo virsh reboot ubunt18
Склонировать виртуалку:
virt-clone -o ubunt18-n ubunt18-clone --file /var/data/virt/images/ubunt18-clone.img
Включить/выключить автозапуск:
virsh autostart ubunt18
virsh autostart --disable ubunt18
Запуск virsh в диалоговом режиме:
virsh
Редактирование свойств виртуалки в XML, в том числе здесь можно изменить ограничение на количество памяти и тд:
virsh edit ubunt18
virsh net-start nat
service libvirt-bin restart
Сравнительная таблица совместимости форматов жестких дисков для разных виртуализаций.
VMDK | VDI |
QCOW/2 |
VHDX | VHD | QED | hdd | RAW | VPC | |
XEN | + | + | |||||||
KVM | + | + | + | + | + | + | |||
VirtulaBox | + | + | + | + | + | + | + | + | |
Hyper-V | + | + |
Подключение к KVM с помощью VirtManager
Данный набор инструментов позволит визуализировать весь commandline процесс создания и обслуживания виртуалок.
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Проще всего использовать подключение по SSH.
Сначала настраиваем авторизацию по ключам.
На клиентской машине, с которой мы будем рулить удаленным сервером KVM запускаем:
ssh-keygen -t rsa
Место сохранения ключей оставляем по-умолчанию, ключевую фразу оставляем пустой.
Затем копируем соотвествующую часть ключа на удаленный хост:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
Тут user - имя пользователя на удаленной машине. Если имя локального пользователя и имя на удаленной машине совпадают - user@ можно не писать.
Проверяем, что все получилось - коннектимся:
ssh user@remote_host
Если имя локального пользователя и имя на удаленной машине совпадают - user@ можно не писать.
Дальше переходим к настройке хоста KVM.
Сначала - отключаем подключения TLS. Для этого в файле /etc/libvirt/libvirtd.conf раскомментируем строку:
#listen_tls = 0
Затем - добавляем пользователя в группу libvirtd, которая имеет права на подключение к соответствующему сокету:
sudo usermod -a -G libvirtd username
Собственно все.
В virt-manager создаем новое подключение. Жмакаем Connect to remote host.
Method - SSH.
Username - имя пользователя на удаленной машине.
Hostname - адрес удаленного компа
Особенности установки Windows на KVM
Требуется скачать
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso
Создание win7
virt-install \ --name windows_7 \ --ram=1024 \ --vcpus=1 \ --os-type windows \ --os-variant win7 \ --disk path=/var/data/virt/windows_7.wmdk,size=15,bus=sata \ --network network=nat,model=rtl8139 \ --graphics vnc,password=XXX\ --disk device=cdrom,path=/var/data/virt/windows7.iso \ --disk device=cdrom,path=/var/data/virt/virtio-win.iso \ --boot cdrom,hd