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 libvirt
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 virtual machine
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 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)
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 Xen 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 Linux (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 Windows Server 2008 (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
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 qemu
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