Curs 8 Virtualizare Nativ˘A
Total Page:16
File Type:pdf, Size:1020Kb
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 '(nptjept)' /proc/cpuinfo Virtualizare nativ˘a(2) I lscpu, variabila Virtualization I grep -E '(vmxjsvm)' /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 '(nptjept)' /proc/cpuinfo Virtualizare nativ˘a(2) I lscpu, variabila Virtualization I grep -E '(vmxjsvm)' /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 '(vmxjsvm)' /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 '(nptjept)' /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 I Virtual Machine Manager 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,..