11 Virtualizare 25 aprilie 2011 - 1 mai 2011 Cursul 11 11 Virtualizare 25 aprilie 2011 - 1 mai 2011 25.04.2011 - 01.05.2011
OSC Suport curs 11 Capitolul 2 – Operating-System Structures Secțiunea 2.8 – Virtual Machines 25.04.2011 - 01.05.2011
Cuprins Mașini virtuale Tipuri de virtualizare Full Virtualization VMWare Paravirtualization XEN Operating system-level virtualization OpenVZ 25.04.2011 - 01.05.2011
Premize VM Izolarea aplicaţiilor Performanţă Reducerea costurilor defectele de aplicaţie nu afectează funcţionarea corectă a întregului sistem Performanţă plasarea unui număr redus de aplicaţii pe un sistem permite accesul la resurse mult mai rapid Reducerea costurilor [1]Survey of System Virtualization Techniques, Robert Rose, March 2004 - http://scholarsarchive.library.oregonstate.edu/xmlui/bitstream/handle/1957/9907/rose-virtualization.pdf?sequence=1 25.04.2011 - 01.05.2011
Mașini virtuale Implementări software ale unui sistem hardware Mai multe instanțe de sisteme de operare pot rula simultan Popek & Goldberg - „an efficient, isolated duplicate of the real machine” System virtual machines VMM (Virtual Machine Monitor), hypervisor Process virtual machines Java Virtual Machine 25.04.2011 - 01.05.2011
Mașini virtuale (2) Non-virtual Machine Virtual Machine [1]OSC: 2.8 Virtual Machines Interrupts, p. 65 Non-virtual Machine Virtual Machine 25.04.2011 - 01.05.2011
Mașini virtuale (3) 25.04.2011 - 01.05.2011
Utilitate VM Server consolidation Application consolidation Sandboxing Domenii de execuție multiple Hardware virtual Debugging (kernel development) Software migration [1]OSC: 2.8.2 Benefits, p. 66 25.04.2011 - 01.05.2011
Popek & Goldberg virtualization requirements Echivalență Controlul resurselor Eficiență Setul de instrucțiuni sensibile ale sistemului trebuie să fie un subset al instrucțiunilor privilegiate. instrucțiunile privilegiate fac trap și transmit controlul VMM instrucțiunile neprivilegiate sunt executate nativ IA-32 conține 17 instrucțiuni sensibile, neprivilegiate dynamic recompilation paravirtualization [1]Survey of System Virtualization Techniques, Robert Rose, March 2004 - 1.4 Requirements for Virtual Machines http://scholarsarchive.library.oregonstate.edu/xmlui/bitstream/handle/1957/9907/rose-virtualization.pdf?sequence=1 25.04.2011 - 01.05.2011
VMM – Virtual Machine Monitor Implementare rulare direct pe hardware rulare ca o aplicație pe sistemul gazdă (VMWARE) Funcții virtualizare procesor (CPU, memorie) gestionare evenimente (Ex., trimitere page fault trap către sistemul oaspete) alocare resurse (Ex., maparea memoriei reale pe memoria fizică a fiecărui sistem oaspete) 25.04.2011 - 01.05.2011
JVM – Java Virtual Machine (1) [1]OSC: 2.8.3.2 The Java Virtual Machine, p. 68 25.04.2011 - 01.05.2011
JVM – Java Virtual Machine (2) Programele JAVA sunt binare independente de platforme și executate în cadrul JVM Componență: class loader class verifier runtime interpreter Compilatoare JIT (Just-In-Time) cresc performanța 25.04.2011 - 01.05.2011
Tipuri de virtualizare Full virtualization Hardware-assisted virtualization Paravirtualization Operating system-level virtualization 25.04.2011 - 01.05.2011
Emulatoare Implementare pură software a hardware-ului Pot fi văzute ca hosted virtual machine monitor Încete – toate instrucțiunile trec prin emulator dynamic binary translation Pot emula arhitecturi diferite de sistemul gazdă DOSBox, bochs, qemu [1]http://www.linux.com/news/software/applications/35492-emulation-or-virtualization-which-is-right-for-you 25.04.2011 - 01.05.2011
Full virtualization Simulare completă a hardware-ului Toate aplicațiile ce rulează pe hardware vor rula peste VMM Satisfac cerințele Popek & Goldberg x86 nu putea folosi full virtualization până la AMD-V și Intel VT dar totuși a putut ... VMware, Parallels, Virtual Box binary translation Hardware assisted virtualization (native virtualization - KVM) Izolare, emulare hardware 25.04.2011 - 01.05.2011
VMWare Virtualizarea platformei IA-32 VMDriver - acces mai rapid la device-uri Set-uri generice de device-uri – tastatura și mouse PS/2, floppy, controller IDE, CD-ROM, placă de sunet Soundblaster 16, port serial, porturi paralele, placă video și plăci de reșea AMD PCNet Placa de rețea VMDriver trece placa de rețea în mod promiscuous se crează un bridge virtual ce primește toate pachetele se analizează pachetele și se rutează înapoi spre SO gazdă sau spre interfața de rețea a unui SO oaspete [1] OSC: 2.8.3.1 VMWare, p. 67 [2] Survey of System Virtualization Techniques, Robert Rose, March 2004: 2.3 VMWare http://scholarsarchive.library.oregonstate.edu/xmlui/bitstream/handle/1957/9907/rose-virtualization.pdf?sequence=1 [3]http://www.vmware.com/files/pdf/VMware_paravirtualization.pdf 25.04.2011 - 01.05.2011
Native VM (type1) 25.04.2011 - 01.05.2011
Hosted VM (type 2) 25.04.2011 - 01.05.2011
Paravirtualization Interfața similară apropiată de cea a sistemului fizic (nu identică) Hook-uri pentru a permite rularea într-un mediu non-virtualizat a acțiunilor intense computațional perfomanță sporită hypercalls Sistemul de operare guest trebuie portat la para-API poate fi nemodificat dacă se oferă suport hardware (AMD-V, Intel VT) În general rulează direct peste hardware (hypervisor) Xen, Vmware ESX, Parallels workstation [1]Survey of System Virtualization Techniques, Robert Rose, March 2004: 3 Paravirtualization http://scholarsarchive.library.oregonstate.edu/xmlui/bitstream/handle/1957/9907/rose-virtualization.pdf?sequence=1 25.04.2011 - 01.05.2011
Xen - Arhitectura [1]Xen and the Art of Virtualization - http://elf.cs.pub.ro/soa/res/lectures/lecture-07/xen_and_the_art_of_virtualization.pdf 25.04.2011 - 01.05.2011
Xen Open-source x86, x86-64, PPC Sistem gazdă – Linux sau NetBSD Sistem oaspete – Linux, Minix, NetBSD, OpenBSD, FreeBSD, OpenSolaris, Microsoft Windows XP etc. Domenii XEN Hipervisor CPU scheduling Împărțire memorie 25.04.2011 - 01.05.2011
Xen – Domain0 Creat la pornire Operații de control Crează și închide alte domenii Alocare memorie fizică Accesul la I/O Creare VIF (Virtual Interfaces) & VBD (Virtual Block Devices) 25.04.2011 - 01.05.2011
Xen – Virtualizare Management memorie CPU Device-uri TLB misses la nivel de procesor XEN se află într-un spațiu de adrese de 64MB deasupra fiecărui spație de adrese – evitate TLB flushes când se intră sau iese în hipervisor CPU OS-> hipervisor -> hardware hipervisor-ul are prioritate mai mare decât OS Device-uri abstractizări Informația este pasată între domenii cu ajutorul memoriei partajate 25.04.2011 - 01.05.2011
Xen Acces parțial la tabelele de pagini din hardware Mașinile virtuale au acces de citire pe tabele, iar hipervisorul se ocupă de procesarea modificărilor Nivele de privilegii scăzute Trap handler-ele înregistrate la hipervisor Apelurile de sistem înregistrare la procesor Nu există întreruperi hardware sistem de evenimente Device-uri generice 25.04.2011 - 01.05.2011
Operating system-level virtualization Un singur kernel (același sistem de operare) nu poate fi folosit pentru kernel development Mai multe instanțe de spații utilizator virtual environments (VEs), containers, jails Implementare avansată a chroot sistem de fișiere, procese, I/O, rețea, cote, memorie, procesor Server consolidation Separarea serviciilor și resurselor FreeVPS, OpenVZ, Parallels Virtuozzo, FreeBSD jail, sysjail [1]OS-level Virtualization and Its Applications, Yang Yu, December 2007 - http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.76.4527&rep=rep1&type=pdf 25.04.2011 - 01.05.2011
Virtuozzo/OpenVZ [1]http://download.openvz.org/doc/openvz-intro.pdf 25.04.2011 - 01.05.2011
OpenVZ Sistemele oaspete – diferite distribuții Linux cu același nucleu VE (Virtual Environment) VPS, container, partition Mediu izolat de execuție Copie a unui OS Linux (sisteme de fișier, utilizatori, interfețe de rețea, tabele de rutare, reguli firewall etc.) Nucleul OpenVZ este un nucleu Linux modificat ce adaugă următoarele funcționalități: virtualizare și izolare management-ul resurselor (CPU, RAM, spașiu pe disc) Checkpointing (asemănptor cu Snapshot-urile din VMWare) 25.04.2011 - 01.05.2011
OpenVZ – Virtualizare și Izolare Fiecare VE are: Fișiere – biblioteci, applicații, /proc și /sys virtualizate Utilizatori și grupuri Arbore de procese – procese virtualizate Rețea – adrese IP proprii, tabele de rutare și reguli iptables Device-uri – unele sunt virtualizate, dar VE-urile pot accesa exclusiv la nevoie anumite device-uri reale (interfața de rețea, porturi seriale, partiții) Obiecte IPC – memorie partajată, semafoare și mesaje 25.04.2011 - 01.05.2011
OpenVZ – Management-ul resurselor Resursele fizice trebuie partajate între VE-uri Subsitemul de management conține: Cote pentru disc pe două nivele Primul – se poate aloca dimensiune spațiu și număr de inode-uri Al doilea – folosind mecanisme UNIX se pot seta diverse cote pentru anumiți utilizatori sau anumite grupuri ”Fair” CPU scheduler (2 nivele) Scheduler-ul OpenVZ decide care VE urmează la execuție (bazat pe prioritate sau anumite setări de limitare) Scheduler-ul Linux decide ce proces din VE-ul selectat trebuie să ruleze User Beancounters Contoare, limitări și garanții Parametri pentru a controla memoria și diverse obicte din nucleu 25.04.2011 - 01.05.2011
OpenVZ – Checkpointing Permite migrare ”în viu” a unui VE de pe un server pe altul VE este ”froozen” și starea sa este salvată într-un fișier pe disc Fișierul se poate copia, iar pe baza lui VE-ul poate fi ”unfrozen” (restaurat) Proces rapid 25.04.2011 - 01.05.2011
OpenVZ – Scenarii de folosire Consolidare server micșorare servere fizice – profit Securitate Hostare Dezvoltare software și testare Educație 25.04.2011 - 01.05.2011
virtual machine VMM JVM hypervisor native VM hosted VM Cuvinte cheie virtual machine VMM JVM hypervisor native VM hosted VM full virtualization paravirtualization Xen Operating system-level virtualization OpenVZ VE, VPS, container 25.04.2011 - 01.05.2011
Întrebări ? 25.04.2011 - 01.05.2011