Установка и настройка KVM (Kernel-based Virtual Machine) Ubuntu
Установка и настройка KVM (Kernel-based Virtual Machine) Ubuntu
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
Для подключения к консоли виртуальной машины используется 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
Настройка сетевого моста
Чтобы виртуальная машина могла полноценно работать с сетью, нужно создать мост
Сетевой-мост это устройство используемое для соединения разных сетей между собой так, что эта сеть видится как единая.
--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'.
--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=PORTNUMBER” не определен, то будет назначен первый свободный порт после 5900. Узнать инормацию о запущенномvnc-дисплее можно посредством “virshvncdisplay”.
--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 - автозапуск виртуальной машины при старте хоста.