Установка и настройка KVM (Kernel-based Virtual Machine) Ubuntu

Дата: 04/09/2014
Тема: Linux

KVM (или Kernel-based Virtual Machine) — это программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine).

Программное обеспечение KVM состоит из загружаемого модуля ядра (называемого kvm.ko), предоставляющего базовый сервис виртуализации, процессорно-специфического загружаемого модуля kvm-amd.ko либо kvm-intel.ko, и компонентов пользовательского режима (модифицированного QEMU).

Сам по себе KVM не выполняет эмуляции. Вместо этого программа, работающая в пространстве пользователя, использует интерфейс /dev/kvm для настройки адресного пространства гостя виртуальной машины, через него же эмулирует устройства ввода-вывода и видеоадаптер.

KVM позволяет виртуальным машинам использовать немодифицированные образы дисков QEMU, VMware и других, содержащие операционные системы. Каждая виртуальная машина имеет своё собственное виртуальное аппаратное обеспечение: сетевые карты, диск, видеокарту и т. д.

Убедимься что наше оборудование поддерживает необходимые расширения виртуализации.

#kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

Установка

Для установки необходимых пакетов введите

#apt-get update
#apt-get install kvm libvirt-bin virtinst bridge-utils
#apt-get install virt-manager virt-viewer

Настройка VNC для доступа к виртуальным машинам

Для подключения к консоли виртуальной машины используется VNC сервер. Каждая виртуальная машина получает свой порт, начиная с :5900 и будет отвечать на адрес 127.0.0.1:5900, следующая машина на адрес 127.0.0.1:5901 и так далее.

VNC сервер по умолчанию слушает только локальный адрес 127.0.0.1. Чтобы получить доступ к консоли виртуальной машины с другого компьютера надо раскомментировать строку vnc_listen = "0.0.0.0" в файле /etc/libvirt/qemu.conf

Перезапускаем KVM

#service libvirt-bin restart

Теперь можно будет подключаться к консоли виртуальной машины с других компьютеров с помощью VNC клиента Remmina, TightVNC, RealVNC и т.д. указав айпи сервера например: 192.168.1.100:5900

Настройка сетевого моста

Чтобы виртуальная машина могла полноценно работать с сетью, нужно создать мост

Сетевой-мост это устройство используемое для соединения разных сетей между собой так, что эта сеть видится как единая.

отредактируйте файл /etc/network/interfaces

#nano /etc/network/interfaces

iface eth0 inet manual
auto br0
iface br0 inet static
     address 192.168.2.100
     netmask 255.255.255.0
     gateway 192.168.1.1
     dns-nameserver 192.168.1.1
     bridge_ports eth0
     bridge_stp off
     bridge_fd 0
     bridge_maxwait 0

Перезапускаем сеть

#/etc/init.d/networking restart

Командой brctl show посмотрим состояния сетевого моста

Программа brctl предназначена для создания, сопровождения и просмотра конфигурации модуля сетевого-моста "bridge" в ядре Linux.

#brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.f8bc124b0734       no              eth0

Создание виртуальной машины

#virt-install --name=webserver  --ram=2000 --vcpu=4  
--boot=cdrom,hd --disk=path=webserver,size=50,bus=virtio  
--cdrom=ubuntu-14.04-server-i386.iso --os-type=linux  
--graphics=vnc,password=0000 --network=bridge:br0,model=virtio  
--autostart --cpuset=2,4,14,15 --cpu=host --machine=pc-1.1

--name= webserver – Имя для создаваемой машины. Должно быть уникальным.

--ram=2000 – Память (в мегабайтах) выделяемая для машины.

--vcpus=4 – Количество виртуальных процессоров в создаваемой машине.

--cpuset=2,4,14,15 – Задать физические процессоры, которые может использовать виртуальная машина. Нумерация начинаются с нуля, перечисление идет  через запятую.

--cdrom=ubuntu-14.04-server-i386.iso - Образ установочного компакт-диска CD-ROM

--os-type=linux - Тип устанавливаемой ОС, например 'linux', 'unix', 'windows'.

--boot=cdrom,hd - Последовательность загрузки CD-ROM,HDD

--disk=path=/home/andy/webserver,size=50,bus=virtio - путь к виртуальному диску, размер диска в гигабайтах, тип виртуального контроллера "virtio,ide"

--cpu=host - Модель ЦПУ и возможности (--cpu=coreduo,x2apic). Узнать возможные типы ЦПУ можно командой

#qemu-system-x86_64 -cpu ?
x86           qemu64  QEMU Virtual CPU version 2.0.0
x86           phenom  AMD Phenom(tm) 9550 Quad-Core Processor
x86         core2duo  Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
x86            kvm64  Common KVM processor
x86           qemu32  QEMU Virtual CPU version 2.0.0
x86            kvm32  Common 32-bit KVM processor
x86          coreduo  Genuine Intel(R) CPU           T2600  @ 2.16GHz
x86              486
x86          pentium
x86         pentium2
x86         pentium3
x86           athlon  QEMU Virtual CPU version 2.0.0
x86             n270  Intel(R) Atom(TM) CPU N270   @ 1.60GHz
x86           Conroe  Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86           Penryn  Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86          Nehalem  Intel Core i7 9xx (Nehalem Class Core i7)
x86         Westmere  Westmere E56xx/L56xx/X56xx (Nehalem-C)
x86      SandyBridge  Intel Xeon E312xx (Sandy Bridge)
x86          Haswell  Intel Core Processor (Haswell)
x86       Opteron_G1  AMD Opteron 240 (Gen 1 Class Opteron)
x86       Opteron_G2  AMD Opteron 22xx (Gen 2 Class Opteron)
x86       Opteron_G3  AMD Opteron 23xx (Gen 3 Class Opteron)
x86       Opteron_G4  AMD Opteron 62xx class CPU
x86       Opteron_G5  AMD Opteron 63xx class CPU
x86             host  KVM Процессор со всеми поддерживаемыми функциями ЦПУ хоста (доступна только в режиме KVM)

Recognized CPUID flags:
  pbe ia64 tm ht ss sse2 sse fxsr mmx acpi ds clflush pn pse36 pat cmov mca pge mtrr sep apic cx8 mce pae msr tsc pse de vme fpu

  hypervisor rdrand f16c avx osxsave xsave aes tsc-deadline popcnt movbe x2apic sse4.2|sse4_2 sse4.1|sse4_1 
dca pcid pdcm xtpr cx16 fma cid ssse3 tm2 est smx vmx ds_cpl monitor dtes64 pclmulqdq|pclmuldq pni|sse3

  smap adx rdseed rtm invpcid erms bmi2 smep avx2 hle bmi1 fsgsbase
  3dnow 3dnowext lm|i64 rdtscp pdpe1gb fxsr_opt|ffxsr mmxext nx|xd syscall
  perfctr_nb perfctr_core topoext tbm nodeid_msr tce fma4 lwp wdt skinit xop ibs osvw 3dnowprefetch misalignsse sse4a abm cr8legacy extapic svm cmp_legacy lahf_lm
  pmm-en pmm phe-en phe ace2-en ace2 xcrypt-en xcrypt xstore-en xstore
  kvm_pv_unhalt kvm_pv_eoi kvm_steal_time kvm_asyncpf kvmclock kvm_mmu kvm_nopiodelay kvmclock
  pfthreshold pause_filter decodeassists flushbyasid vmcb_clean tsc_scale nrip_save svm_lock lbrv npt

--machine=pc-1.1 - Имитируемый тип машины, получить список типов машин можно командой

#qemu-system-x86_64 -machine ?
Supported machines are:
pc-0.13              Standard PC (i440FX + PIIX, 1996)
pc-i440fx-2.0        Standard PC (i440FX + PIIX, 1996)
pc-1.0               Standard PC (i440FX + PIIX, 1996)
pc-q35-1.7           Standard PC (Q35 + ICH9, 2009)
pc-1.1               Standard PC (i440FX + PIIX, 1996)
q35                  Standard PC (Q35 + ICH9, 2009) (alias of pc-q35-2.0)
pc-q35-2.0           Standard PC (Q35 + ICH9, 2009)
pc-i440fx-1.4        Standard PC (i440FX + PIIX, 1996)
pc-i440fx-1.5        Standard PC (i440FX + PIIX, 1996)
pc-0.14              Standard PC (i440FX + PIIX, 1996)
pc-0.15              Standard PC (i440FX + PIIX, 1996)
xenfv                Xen Fully-virtualized PC
pc-q35-1.4           Standard PC (Q35 + ICH9, 2009)
isapc                ISA-only PC
pc-0.10              Standard PC (i440FX + PIIX, 1996)
pc                   Ubuntu 14.04 PC (i440FX + PIIX, 1996) (alias of pc-i440fx-trusty)
pc-i440fx-trusty     Ubuntu 14.04 PC (i440FX + PIIX, 1996) (default)
pc-1.2               Standard PC (i440FX + PIIX, 1996)
pc-0.11              Standard PC (i440FX + PIIX, 1996)
pc-i440fx-1.7        Standard PC (i440FX + PIIX, 1996)
pc-i440fx-1.6        Standard PC (i440FX + PIIX, 1996)
none                 empty machine
xenpv                Xen Para-virtualized PC
pc-q35-1.5           Standard PC (Q35 + ICH9, 2009)
pc-q35-1.6           Standard PC (Q35 + ICH9, 2009)
pc-0.12              Standard PC (i440FX + PIIX, 1996)
pc-1.3               Standard PC (i440FX + PIIX, 1996)

--graphics=vnc,password=0000 - VNC доступ к виртуальной машине. Если параметр port=PORT NUMBER” не определен, то будет назначен первый свободный порт после 5900. Узнать инормацию о запущенном vnc-дисплее можно посредством “virsh vncdisplay”.

--network=bridge:br0,model=virtio - Подключиться к сетевому мосту "br0", модель сетевого контроллера, возможные значения можно узнать, введя команду

#qemu-system-x86_64 -device ?
...
Network devices:
name "e1000", bus PCI, desc "Intel Gigabit Ethernet"
name "i82550", bus PCI, desc "Intel i82550 Ethernet"
name "i82551", bus PCI, desc "Intel i82551 Ethernet"
name "i82557a", bus PCI, desc "Intel i82557A Ethernet"
name "i82557b", bus PCI, desc "Intel i82557B Ethernet"
name "i82557c", bus PCI, desc "Intel i82557C Ethernet"
name "i82558a", bus PCI, desc "Intel i82558A Ethernet"
name "i82558b", bus PCI, desc "Intel i82558B Ethernet"
name "i82559a", bus PCI, desc "Intel i82559A Ethernet"
name "i82559b", bus PCI, desc "Intel i82559B Ethernet"
name "i82559c", bus PCI, desc "Intel i82559C Ethernet"
name "i82559er", bus PCI, desc "Intel i82559ER Ethernet"
name "i82562", bus PCI, desc "Intel i82562 Ethernet"
name "i82801", bus PCI, desc "Intel i82801 Ethernet"
name "ne2k_isa", bus ISA
name "ne2k_pci", bus PCI
name "pcnet", bus PCI
name "rtl8139", bus PCI
name "usb-bt-dongle", bus usb-bus
name "usb-net", bus usb-bus
name "virtio-net-device", bus virtio-bus
name "virtio-net-pci", bus PCI, alias "virtio-net"
name "vmxnet3", bus PCI, desc "VMWare Paravirtualized Ethernet v3"
...

С таким соединением гостевая машина имеет полноценное соединение с внешней сетью. Может создавать исходящие соединения и принимать входящие.

--autostart - автозапуск виртуальной машины при старте хоста.

Управление виртуальными машинами

Получить список запущенных виртуальных машин:

#virsh -c qemu:///system list

Запустить виртуальную машину:

#virsh -c qemu:///system start webserver

Перегрузить виртуальную машину:

#virsh -c qemu:///system reboot webserver

Принудительно перезагрузить виртуальную машину:

#virsh -c qemu:///system reset webserver

Выключить виртуальную машину:

#virsh -c qemu:///system shutdown webserver

Принудительно выключить виртуальную машину:

#virsh -c qemu:///system destroy webserver

Подключение образа компакт-диска:

#virsh attach-disk svhs /home/andy/windows2003r2.iso hdc --type cdrom --mode readonly

Извлечение образа:

#virsh change-media webserver hdc --eject


Это статья "Домашняя страничка Andy"
https://andy.od.ua

URL этой статьи: https://andy.od.ua/news_53.html

Яндекс.Метрика