Рейтинг@Mail.ru

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

adduser virt libvirt
 
Отредактировать файл /etc/libvirt/qemu.conf:
 
user = "virt"
group = "virt"
 
и применить именения:
service libvirtd restart
 
Определить пул хранилища:
virsh pool-define-as --name guest_images --type dir --target /var/data/virt
 
Стартануть пул:
virsh pool-start guest_images
 
Добавить в автозапуск:
virsh pool-autostart guest_images
 
Проверить состояние пула:
virsh pool-list --all
 
И его свойства:
virsh pool-info guest_images
 
Настроить сеть в /etc/network/interfaces.
 
Было:
auto lo
iface lo inet loopback

allow-hotplug eno1
iface eno1 inet dhcp
 
Стало:
auto lo
iface lo inet loopback

auto kvmbr0
allow-hotplug kvmbr0
iface kvmbr0 inet dhcp
bridge_ports eno1

auto eno1
iface eno1 inet manual
 
Настройка bridge:
# 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
 
 
Применить изменения:
service networking restart
 

Создать виртуальные сети:

 
Конфигурации виртуальных сетей расположены в /etc/libvirt/qemu/networks. Также для активации их необходимо линкануть в /etc/libvirt/qemu/networks/autostart.
 
default.xml (простая сеть для связи виртуалок без доступа наружу):
<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'/>
    >
  >
>
 
nat.xml (сеть с nat'лом наружу через eno1):
<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 --help
 
Список доступных сетей:
virsh net-list

Просмотр информации о конкретной сети (с именем nat):
virsh net-info nat
 
 

Создание виртуалки с 1 CPU, 1 Гб RAM и 15 Гб места на диске, подключенную к nat:

 
virt-install \
  --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
 
 Будет забиндить виртуалку на опеределнный IP в виртуальной сети:
virsh net-edit nat
 
После  надо добавить:
<host mac='52:54:00:b3:1e:5d' name='ubunt18' ip='192.168.10.150'/>
 
После этого нужно переинициализировать сеть:
virsh net-destroy nat
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

 

Другие варианты запуска потока.

Поделиться: