Curs 8 Virtualizare nativ˘a

Servicii avansate pentru ISP

24 aprilie 2017

SAISP Curs 8, Virtualizare nativ˘a 1/37 Outline

Introducere

KVM

KVM s, i

Concluzii

ˆIntreb˘ari

SAISP Curs 8, Virtualizare nativ˘a 2/37 Virtualizare

I abstractizarea resurselor unui sistem de calcul

I memorie virtual˘a

I mas, ini virtuale I emulare I virtualizarea stoc˘arii

I system

I process virtual machine

SAISP Curs 8, Virtualizare nativ˘a 3/37 I paravirtualizare (paravirtualization)

I virtualizare la nivelul sistemului de operare (operating-system level ) I Cu ce difer˘avirtualizarea de emulare?

I la virtualizare, cea mai mare parte a instruct, iunilor se execut˘a pe sistemul fizic I se poate emula o arhitectur˘adiferit˘ade arhitectura sistemului fizic I

I hosted virtualization (type 2 hypervisor) I bare metal virtualization (type 1 hypervisor)

Tipuri de virtualizare

I virtualizare complet˘a(full-virtualization)

I virtualizare asistat˘ahardware (hardware-assisted virtualization)

SAISP Curs 8, Virtualizare nativ˘a 4/37 I virtualizare la nivelul sistemului de operare (operating-system level virtualization) I Cu ce difer˘avirtualizarea de emulare?

I la virtualizare, cea mai mare parte a instruct, iunilor se execut˘a pe sistemul fizic I se poate emula o arhitectur˘adiferit˘ade arhitectura sistemului fizic I hypervisor

I hosted virtualization (type 2 hypervisor) I bare metal virtualization (type 1 hypervisor)

Tipuri de virtualizare

I virtualizare complet˘a(full-virtualization)

I virtualizare asistat˘ahardware (hardware-assisted virtualization)

I paravirtualizare (paravirtualization)

SAISP Curs 8, Virtualizare nativ˘a 4/37 I la virtualizare, cea mai mare parte a instruct, iunilor se execut˘a pe sistemul fizic I se poate emula o arhitectur˘adiferit˘ade arhitectura sistemului fizic I hypervisor

I hosted virtualization (type 2 hypervisor) I bare metal virtualization (type 1 hypervisor)

Tipuri de virtualizare

I virtualizare complet˘a(full-virtualization)

I virtualizare asistat˘ahardware (hardware-assisted virtualization)

I paravirtualizare (paravirtualization)

I virtualizare la nivelul sistemului de operare (operating-system level virtualization) I Cu ce difer˘avirtualizarea de emulare?

SAISP Curs 8, Virtualizare nativ˘a 4/37 Tipuri de virtualizare

I virtualizare complet˘a(full-virtualization)

I virtualizare asistat˘ahardware (hardware-assisted virtualization)

I paravirtualizare (paravirtualization)

I virtualizare la nivelul sistemului de operare (operating-system level virtualization) I Cu ce difer˘avirtualizarea de emulare?

I la virtualizare, cea mai mare parte a instruct, iunilor se execut˘a pe sistemul fizic I se poate emula o arhitectur˘adiferit˘ade arhitectura sistemului fizic I hypervisor

I hosted virtualization (type 2 hypervisor) I bare metal virtualization (type 1 hypervisor)

SAISP Curs 8, Virtualizare nativ˘a 4/37 Virtualizare nativ˘a

I Native virtualization

I hardware-assisted virtualization I accelerated virtualization I hardware virtual machine I native virtualization

I asigur˘afull virtualization

I x86 nu avea suport de virtualizare complet˘a

I Intel VT-x, AMD-V

I 3.x, KVM, Hyper-V, ESXi/vSphere

SAISP Curs 8, Virtualizare nativ˘a 5/37 I ulterior, un mecanism pentru virtualizarea memoriei

I EPT (Extended Page Tables) - Intel I NPT (Nested Page Tables) - AMD I nu toate platformele au suport pentru EPT/NPT

I se emuleaz˘aacolo unde nu exist˘a I performante mai sc˘azute

I grep -E ’(npt|ept)’ /proc/cpuinfo

Virtualizare nativ˘a(2)

I lscpu, variabila Virtualization

I grep -E ’(vmx|svm)’ /proc/cpuinfo

I posibil s˘afie nevoie de activarea suportului din BIOS

I virtualizare doar la nivelul procesorului

SAISP Curs 8, Virtualizare nativ˘a 6/37 I nu toate platformele au suport pentru EPT/NPT

I se emuleaz˘aacolo unde nu exist˘a I performante mai sc˘azute

I grep -E ’(npt|ept)’ /proc/cpuinfo

Virtualizare nativ˘a(2)

I lscpu, variabila Virtualization

I grep -E ’(vmx|svm)’ /proc/cpuinfo

I posibil s˘afie nevoie de activarea suportului din BIOS

I virtualizare doar la nivelul procesorului I ulterior, un mecanism pentru virtualizarea memoriei

I EPT (Extended Page Tables) - Intel I NPT (Nested Page Tables) - AMD

SAISP Curs 8, Virtualizare nativ˘a 6/37 Virtualizare nativ˘a(2)

I lscpu, variabila Virtualization

I grep -E ’(vmx|svm)’ /proc/cpuinfo

I posibil s˘afie nevoie de activarea suportului din BIOS

I virtualizare doar la nivelul procesorului I ulterior, un mecanism pentru virtualizarea memoriei

I EPT (Extended Page Tables) - Intel I NPT (Nested Page Tables) - AMD I nu toate platformele au suport pentru EPT/NPT

I se emuleaz˘aacolo unde nu exist˘a I performante mai sc˘azute

I grep -E ’(npt|ept)’ /proc/cpuinfo

SAISP Curs 8, Virtualizare nativ˘a 6/37 Xen

I dezvoltat init, ial la University of Cambridge

I suport veritabil ˆınnucleul (dom0) de la v2.6.37 (Xen 4.1)

I paravirtualizare

I hardware-assisted virtualization de la Xen 3.0.2 ˆınsus

I Xen Source, Citrix

I Guest OS: Linux, Windows, NetBSD

SAISP Curs 8, Virtualizare nativ˘a 7/37 Microsoft Hyper-V

I lansat prima oar˘aˆın2008, ˆıncadrul Windows 8

I produs stand-alone (Microsoft Hyper-V Server 2008/2012) I rol instalabil

I (R2) I Windows Server 2012 (R2)

I procesoare x86-64

I suport de virtualizare hardware

SAISP Curs 8, Virtualizare nativ˘a 8/37 Microsoft Hyper-V - features

I Live Migration

I Cluster Shared Volumes

I Hot Add Storage

I Virtual Networking (jumbo frames)

I High Availability I Management folosind Microsoft System Center

I

SAISP Curs 8, Virtualizare nativ˘a 9/37 VMware ESX/ESXi

I ruleaz˘adirect peste hardware

I foloseste un kernel de Linux propriu (vmkernel)

I gratuit pentru desc˘arcare

I VMware afirm˘ac˘a vmkernel este un microkernel I ESX contine cu consola de management

I nu mai exist˘asuport de la versiunea 5.0 pentru ESX I ESXi a ajuns la versiunea 6.0 si este singurul pentru care se asigur˘asuport

I se poate configura folosind VMware vSphere Client

I suport˘alive migration (vMotion)

SAISP Curs 8, Virtualizare nativ˘a 10/37 VMware vSphere

I nume de produs

I contine hypervisor-ul ESXi

I contine feature-uri suplimentare (e.g. migrarea storage-ului)

I include si un server de vCenter I vCenter este aplicatia de management centralizat

I echivalent cu Microsoft System Center

SAISP Curs 8, Virtualizare nativ˘a 11/37 Outline

Introducere

KVM

KVM s, i libvirt

Concluzii

ˆIntreb˘ari

SAISP Curs 8, Virtualizare nativ˘a 12/37 I bhyve

I inclus ˆınnucleu ˆınfebruarie 2007, v2.6.20

I dezvoltat de Qumranet, cump˘aratde RedHat ˆın2008

I folosit implicit de RHEL > 5.4

KVM

I Kernel-based Virtual Machine

I x86, x86-64, PowerPC, IA-64, ARM I portat pe FreeBSD (proiect abandonat)

I au ˆınceputs˘adezvolte propriul hypervisor

SAISP Curs 8, Virtualizare nativ˘a 13/37 KVM

I Kernel-based Virtual Machine

I x86, x86-64, PowerPC, IA-64, ARM I portat pe FreeBSD (proiect abandonat)

I au ˆınceputs˘adezvolte propriul hypervisor I bhyve

I inclus ˆınnucleu ˆınfebruarie 2007, v2.6.20

I dezvoltat de Qumranet, cump˘aratde RedHat ˆın2008

I folosit implicit de RHEL > 5.4

SAISP Curs 8, Virtualizare nativ˘a 13/37 Emulare

I foloses, te /dev/kvm pentru pentru configurarea spat, iului de

adres˘as, i a dispozitivelor I/O

I foloses, te QEMU pentru configurare I user-ul care va porni masina virtual˘atrebuie s˘aaib˘aacces la /dev/kvm

I uzual se ad˘aug˘aˆıngrupul din care face parte /dev/kvm

SAISP Curs 8, Virtualizare nativ˘a 14/37 Intern

I virtualized CPU & memory

I modulul kvm.ko – core infrastructure I modulele specifice procesorului kvm-intel.ko, kvm-amd.ko I posibil s˘anecesit˘aconfigur˘ariBIOS de activare a suportului de virtualizare hardware I virtualized I/O (network, disk, video, cdrom)

I

SAISP Curs 8, Virtualizare nativ˘a 15/37 Instalare

I apt-get install qemu-kvm libvirt-bin virtinst virt-top

I qemu-kvm: is the new name for the kvm package in squeeze

I modprobe -l ’kvm*’: kvm, kvm-amd, kvm-intel

I adduser YourUserName kvm

SAISP Curs 8, Virtualizare nativ˘a 16/37 Creare mas, in˘avirtual˘asimpl˘a

I qemu-img create -f qcow2 virtualdisk.qcow2 10G

I qemu-img info virtualdisk.qcow2

I kvm -hda virtualdisk.qcow2 -cdrom cdrom.iso -m 256

I ,,pe vremuri” se folosea comanda qemu-kvm

I dac˘ase ˆınlocuies, te kvm cu qemu se foloses, te QEMU, f˘ar˘a ,,accelerarea” dat˘ade kvm

I ˆınmod implicit se foloses, te ,,user networking”, o form˘a simplificat˘a(stiv˘aˆınuser space)

SAISP Curs 8, Virtualizare nativ˘a 17/37 I pentru flexibilitate se poate folosi optiunea -drive option[,option[,option[,...]]]

I pentru disc: -drive file=file,index=0,media=disk

I pentru cdrom: -drive file=file,index=2,media=cdrom

Selectarea discului

I specificarea discului se face cu -hda,-hdb,-hdc,-hdd

I specificarea cdrom-ului se face cu -cdrom

SAISP Curs 8, Virtualizare nativ˘a 18/37 Selectarea discului

I specificarea discului se face cu -hda,-hdb,-hdc,-hdd

I specificarea cdrom-ului se face cu -cdrom

I pentru flexibilitate se poate folosi optiunea -drive option[,option[,option[,...]]]

I pentru disc: -drive file=file,index=0,media=disk

I pentru cdrom: -drive file=file,index=2,media=cdrom

SAISP Curs 8, Virtualizare nativ˘a 18/37 Virtualizarea discului - imagini qcow2

I format folosit de QEMU pentru imagini de mas, ini virtuale

I cel˘alaltformat este raw I copy-on-write

I util pentru dezvoltare s, i testare sau pentru scenarii ˆıncare ai

nevoie de mai multe mas, ini virtuale

I imaginea init, ial˘aeste nealterat˘a

I se creeaz˘aextensii qcow2 pentru fiecare mas, in˘avirtual˘a

I imaginea init, ial˘ase numes, te, ˆınacest caz, template

SAISP Curs 8, Virtualizare nativ˘a 19/37 Creare imagini qcow2

I qemu-img create -f qcow2 -b winxp.qcow2 winxp-test.qcow2

I imaginea winxp.qcow2 va r˘amˆanenealterat˘a(read-only) I imaginea winxp-test.qcow2 va fi transmis˘aca argument

pentru pornirea mas, inii virtuale

I orice operat, ie de scriere ˆıncadrul imaginii de baz˘arezult˘aˆın actualizarea imaginii celei noi

SAISP Curs 8, Virtualizare nativ˘a 20/37 I interfat, a virtual˘adin GuestOS

I -device TYPE,netdev=NAME I -device ? I tipul device-ului default depinde de utilitar (qemu sau qemu-kvm) I entitatea de la cel˘alalcap˘at(interfat˘avirtual˘aˆınhypervisor)

I -netdev TYPE,id=NAME,...

I Opt, iuni obsolete: -net nic, -net TYPE

Virtualizarea ret, elei

I mas, ina virtual˘anu poate r˘amˆaneizolat˘a

I acces la retea folosind o leg˘atur˘ade ret, ea virtual˘a

I componentele leg˘aturii

SAISP Curs 8, Virtualizare nativ˘a 21/37 I entitatea de la cel˘alalcap˘at(interfat˘avirtual˘aˆınhypervisor)

I -netdev TYPE,id=NAME,...

I Opt, iuni obsolete: -net nic, -net TYPE

Virtualizarea ret, elei

I mas, ina virtual˘anu poate r˘amˆaneizolat˘a

I acces la retea folosind o leg˘atur˘ade ret, ea virtual˘a

I componentele leg˘aturii

I interfat, a virtual˘adin GuestOS

I -device TYPE,netdev=NAME I -device ? I tipul device-ului default depinde de utilitar (qemu sau qemu-kvm)

SAISP Curs 8, Virtualizare nativ˘a 21/37 Virtualizarea ret, elei

I mas, ina virtual˘anu poate r˘amˆaneizolat˘a

I acces la retea folosind o leg˘atur˘ade ret, ea virtual˘a

I componentele leg˘aturii

I interfat, a virtual˘adin GuestOS

I -device TYPE,netdev=NAME I -device ? I tipul device-ului default depinde de utilitar (qemu sau qemu-kvm) I entitatea de la cel˘alalcap˘at(interfat˘avirtual˘aˆınhypervisor)

I -netdev TYPE,id=NAME,...

I Opt, iuni obsolete: -net nic, -net TYPE

SAISP Curs 8, Virtualizare nativ˘a 21/37 Virtio

I driver-e paravirtualizate pentru Linux

I infrastructur˘acomun˘apentru virtualizarea ret, elei s, i a block-device-urilor

I implementarea este f˘acut˘aˆınutilitarul qemu

I trebuie activate CONFIG-urile ce t, in de VIRTIO (CONFIG_VIRTIO_*)

I retea: -device virtio-net-pci,netdev=net0

I disc: -drive file=/images/xpbase.qcow2,if=virtio

SAISP Curs 8, Virtualizare nativ˘a 22/37 Outline

Introducere

KVM

KVM s, i libvirt

Concluzii

ˆIntreb˘ari

SAISP Curs 8, Virtualizare nativ˘a 23/37 Instalare

I virtinst: virt-install tools etc.

I libvirt-bin: is what will control kvm and start guests on boot etc.

I adduser YourUserName libvirt

SAISP Curs 8, Virtualizare nativ˘a 24/37 libvirt

I virt-manager

I virt-viewer

I virtinst

I libvirt-bin

I virt-top

SAISP Curs 8, Virtualizare nativ˘a 25/37 Configurarea init, ial˘alibvirt

I daemon-ul libvirt: /etc/init.d/libvirt-bin

I fis, iere de configurare ˆın /etc/libvirt/qemu/

I fis, iere de ,,output” ˆın /var/lib/libvirt/

I fis, iere de ,,rulare” (socket, i Unix) ˆın /var/run/libvirt/

I pentru conexiune se foloses, te --conect qemu:///

I sudo virsh -c qemu:///system net-start default

SAISP Curs 8, Virtualizare nativ˘a 26/37 Crearea unei mas, ini virtuale

I discul poate fi creat anterior sau ˆıncadrul comenzii

I virt-install --connect qemu:///system --name debian-squeeze --hvm --ram 512 --disk path=squeeze.qcow2,format=qcow2 --network network=default --vnc --os-variant debiansqueeze --cdrom ∼/Downloads/debian-6.0.4-amd64-netinst.iso

SAISP Curs 8, Virtualizare nativ˘a 27/37 Vizualizarea unei mas, ini virtuale

I vncviewer – vncviewer :0

I virt-viewer

I virt-manager

SAISP Curs 8, Virtualizare nativ˘a 28/37 Controlul/comandarea unei mas, ini virtuale

I virsh – CLI (the kitchen sink)

I virt-manager – GUI

SAISP Curs 8, Virtualizare nativ˘a 29/37 virt-manager

I gestiunea mas, inilor virtuale (start, stop, suspend, resume)

I crearea de noi mas, ini virtuale

I interfat, ˘agrafic˘apentru folosirea mas, inilor virtuale

SAISP Curs 8, Virtualizare nativ˘a 30/37 virsh

I virsh --connect qemu:///system

I virsh --connect qemu+ssh://hostname/system

I comenzi transmise c˘atredaemonul libvirt

I start, stop/destroy, suspend, resume, list, list --all

SAISP Curs 8, Virtualizare nativ˘a 31/37 Crearea/definirea unei mas, ini virtuale ˆınvirsh

I crearea unui fis, ier XML de domeniu

I definirea sa ˆın virsh: define /path/to/file.xml

I dup˘adefinire, fis, ierul apare ˆın /etc/libvirt/qemu/

I undefine pentru nedefinire

SAISP Curs 8, Virtualizare nativ˘a 32/37 XML ˆınlibvirt

I fis, ierele de configurare sunt constituite ˆınXML

I domenii, ret, ele, spatiu de stocare, activarea cript˘arii, snapshot-uri

SAISP Curs 8, Virtualizare nativ˘a 33/37 Outline

Introducere

KVM

KVM s, i libvirt

Concluzii

ˆIntreb˘ari

SAISP Curs 8, Virtualizare nativ˘a 34/37 Cuvinte cheie

I native virtualization I qemu-img hardware-assisted I libvirt virtualization I I virt-install I Intel VT-x I virt-viewer I AMD-V I virt-manager I Xen I virsh I Hyper-V I libvirt XML I KVM I qcow2 I QEMU

SAISP Curs 8, Virtualizare nativ˘a 35/37 Link-uri utile

I http://www.linux-kvm.org/page/Main_Page I http://libvirt.org/ I http://en.wikibooks.org/wiki/QEMU/Images I http://www.palegray.net/tutorials/debian-6-kvm-howto/ I http://wiki.debian.org/KVM I http://wiki.debian.org/QEMU I http://en.gentoo-wiki.com/wiki/KVM I http://wiki.kartbuilding.net/index.php/KVM_Setup_on_Debian_ Squeeze I http://www.ibm.com/developerworks/linux/library/ l-kvm-virtual-server/ I http://virt-manager.org/page/Main_Page

SAISP Curs 8, Virtualizare nativ˘a 36/37 Outline

Introducere

KVM

KVM s, i libvirt

Concluzii

ˆIntreb˘ari

SAISP Curs 8, Virtualizare nativ˘a 37/37