0887 371 498 support@itservice-bg.net
06.09.2016 · Самуил Арсов · Ubuntu, Virtualization

Libvirt KVM виртуализация на Ubuntu — инсталация и управление с virsh

Статията е написана за Ubuntu 16.04. Инструкциите важат и за Ubuntu 18.04 / 20.04 / 22.04 с малки разлики в имената на пакетите: libvirt-bin е заменен от libvirt-daemon-system libvirt-clients.

Какво е Libvirt / KVM / QEMU

KVM (Kernel-based Virtual Machine) е модул в Linux ядрото, превръщащ системата в хипервайзор. QEMU осигурява хардуерната емулация, а Libvirt е управляващата библиотека с единен API за различни технологии за виртуализация. Заедно те образуват стабилен и безплатен стек за виртуализация на сървъри в производствена среда.

Виртуализацията значително намалява стойността на сървърната инфраструктура — множество изолирани системи работят на един физически хост, всяка с гарантирани ресурси.

Хардуерът поддържа ли виртуализация

Преди инсталацията проверете дали процесорът поддържа хардуерна виртуализация:

kvm-ok

Очакван отговор при поддръжка:

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

Ако командата не е налична: sudo apt-get install cpu-checker

Конфигуриране на мрежов бридж

За да имат виртуалните машини директен достъп до мрежата (не чрез NAT), хост машината трябва да работи в мрежов бридж режим. Инсталираме:

apt-get install bridge-utils

Описваме мрежовия конфигурационен файл /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# Bridge
auto br0
iface br0 inet dhcp
# За статичен IP коментирайте горния ред и разкоментирайте:
# iface br0 inet static
#  address 192.168.1.10
#  netmask 255.255.255.0
#  gateway 192.168.1.1
#  dns-nameservers 8.8.8.8
   bridge_ports eth0
   bridge_stp off
   bridge_fd 0
   bridge_maxwait 0

Инсталация на Libvirt и KVM

apt-get install qemu-kvm libvirt-bin

Добавяме текущия потребител в групата на libvirt (необходимо за управление без sudo):

adduser $USER libvirtd
# или:
usermod -aG libvirtd $USER

Важно: след добавянето трябва да се излезе и влезе отново в сесията, за да влезе групата в сила.

Изтегляне на ISO образ

Изтегляме ISO образ на Ubuntu Server за инсталация на виртуалната машина:

wget -c http://releases.ubuntu.com/20.04/ubuntu-20.04-live-server-amd64.iso

Инсталация на virtinst и създаване на виртуална машина

virtinst съдържа инструмента virt-install за създаване на нови виртуални машини от командния ред:

apt-get install virtinst

Създаване на виртуална машина с параметри:

virt-install -n server4 -r 4096 --vcpus=4 \
--disk path=/var/lib/libvirt/images/server4.img,bus=virtio,size=20 \
--cdrom ubuntu-16.04.1-server-amd64.iso \
--network bridge:br0 \
--graphics vnc,port=5900,listen=0.0.0.0 \
--noautoconsole -v

Параметри:

  • -n server4 — името на виртуалната машина
  • -r 4096 — RAM в мегабайти (4 GB)
  • --vcpus=4 — брой виртуални ядра
  • --disk path= — път до image файла на диска
  • size=20 — размер на диска в гигабайти
  • --cdrom — ISO файл за инсталация
  • --network bridge:br0 — мрежовият бридж на хост сървъра
  • --graphics vnc,port=5900 — VNC достъп за инсталацията
  • listen=0.0.0.0 — VNC слуша на всички интерфейси
  • --noautoconsole — не отваря конзола автоматично
  • -v — пълна хардуерна виртуализация

Свързване към виртуалната машина по VNC

След стартиране на инсталацията се свързваме с VNC клиент:

Вариант 1: virt-viewer

apt-get install virt-viewer
virt-viewer -c qemu+ssh://192.168.60.17/system server4

virt-viewer инсталация

Вариант 2: Remmina Remote Desktop

Remmina VNC
Remmina VNC конзола

Вариант 3: virt-manager

Графичен инструмент за пълно управление на виртуалните машини:

apt-get install virt-manager

virt-manager
virt-manager статус

Вариант 4: VNC Viewer (Windows)

VNC Viewer Windows
VNC Viewer конфигурация
VNC Viewer инсталация

Управление с virsh

libvirt хост сървър

virsh е основният инструмент за управление на виртуални машини от командния ред.

Списък на работещите виртуални машини:

virsh list
 Id    Name       State
--------------------------
 1     server1    running
 2     server2    running
 3     server3    running

Всички виртуални машини (включително спрените):

virsh list --all

Нормално спиране (graceful shutdown — изпраща ACPI сигнал):

virsh shutdown server1

Принудително спиране (като изключване на тока — незабавно):

virsh destroy server1

Стартиране:

virsh start server1

Рестартиране:

virsh reboot server1

Автоматично стартиране при зареждане на хоста:

virsh autostart server1

Архивиране и възстановяване

Запазване на текущото RAM състояние на виртуалната машина (suspend to disk):

virsh save server1 server1-backup.state

Възстановяване:

virsh restore server1-backup.state

Snapshot (препоръчително за по-пълни архиви):

virsh snapshot-create-as server1 snap1 "Преди обновяване"
virsh snapshot-list server1
virsh snapshot-revert server1 snap1

Пълно изтриване на виртуална машина

# 1. Спираме машината
virsh shutdown server4

# 2. Премахваме дефиницията от libvirt
virsh undefine server4

# 3. Изтриваме дисковия образ
rm /var/lib/libvirt/images/server4.img

Редактиране на параметрите на виртуална машина (XML)

virsh edit server1

virsh отваря XML конфигурацията в системния редактор. Пример за XML конфигурация:


  server1
  83c8a956-7678-4250-87fb-962b02bc68b9
  4194304
  4194304
  8
  
    hvm
    
  
  
    
    
  
  
    SandyBridge
  
  
    
    
    
  
  
    /usr/bin/kvm-spice
    
      
      
      
    
    
      
      
      
    
    
      
    
  

Проверка на информация за виртуална машина

virsh dominfo server1
Id:             1
Name:           server1
UUID:           2f3a3420-b514-4f2e-a6e4-686b03fdcbfa
OS Type:        hvm
State:          running
CPU(s):         4
Max memory:     4194304 KiB
Used memory:    4194304 KiB
Persistent:     yes
Autostart:      disable

Информация за хост сървъра:

virsh nodeinfo
CPU model:      x86_64
CPU(s):         24
CPU frequency:  2000 MHz
Core(s)/socket: 6
Thread(s)/core: 2
NUMA cell(s):   2
Memory size:    198054876 KiB

Закрепване на ядра към виртуална машина (CPU pinning)

При сървър с 24 ядра може да се осигурят конкретни физически ядра за дадена виртуална машина. Редактираме XML конфигурацията с virsh edit server1 и добавяме cputune секция. Важно: броенето започва от 0 (не от 1):

4

  
  
  
  

Мониторинг с virt-top

virt-top е аналог на htop за виртуални машини — показва потреблението на CPU, RAM и I/O в реално време:

apt-get install virt-top
virt-top

virt-top мониторинг