Differences

This shows you the differences between two versions of the page.

Link to this comparison view

uso:laboratoare:new:09-vm:concepts [2018/11/30 17:07]
octavian.guzu created
uso:laboratoare:new:09-vm:concepts [2018/12/03 11:07] (current)
dragos.dimitriu [Cum a apărut virtualizarea și de ce avem nevoie de ea?]
Line 1: Line 1:
-Liza+===== Concepte ===== 
 + 
 +==== Ce este virtualizarea?​ ==== 
 + 
 +**Virtualizarea** este o tehnologie care partajează și alocă resursele hardware ale unui sistem de calcul în mai multe “mașini virtuale”  
 +(VM = Virtual Machine) și creează posibilitatea rulării **simultane** a mai multor sisteme de operare pe un singur calculator. Practic,  
 +prin intermediul virtualizării se crează o abstractizare a hardware-ului. 
 + 
 +<​note>​ 
 +Abstractizarea hardware-ului se referă la faptul că se creează câte o instantă virtuală pentru fiecare componentă dintr-un sistem de  
 +calcul (procesor, memorie, disc). 
 +</​note>​ 
 + 
 +==== Cum a apărut virtualizarea și de ce avem nevoie de ea? ==== 
 + 
 +Se întâmplă adesea să avem nevoie să folosim o aplicație care să nu fie compatibilă cu vesiunea curentă a sistemului de operare pe care  
 +îl folosim (sau chiar cu sistemul de operare în sine). Spre exemplu, majoritatea jocurilor pe calculator sunt făcute să ruleze pe  
 +sistemul de operare Windows, iar pentru un utilizator Linux, acestea ar fi inaccesibile.  
 + 
 +În situația prezentată mai sus, am avea nevoie, ideal, de câte o stație pentru fiecare versiune sistem de operare de care avem nevoie.  
 +Acest lucru este foarte costisitor și de cele mai multe ori nu ar fi rentabil întrucât sistemele de operare evoluează foarte rapid. Mai  
 +rentabil ar fi să avem un singur sistem de calcul cu resurse puternice, decât să avem mai multe sisteme cu resurse standard, suficiente  
 +pentru a rula un singur sistem de operare. 
 + 
 +Există mai multe soluții pentru a rezolva acest neajuns. Prima variantă ar fi să instalăm fiecare sistem de operare de care avem nevoie  
 +pe câte o partiție într-o configurație dual-boot. Acestă soluție ne dezavantajează în momentul în care vrem să folosim mai multe sisteme  
 +de operare simultan, acest lucru fiind imposibil de realizat așa. Putem totuși să comutăm de pe unul pe altul, dar trebuie să resetăm  
 +calculatorul și să alegem ce sistem de operare vrem să pornim. 
 + 
 +A doua variantă propusă este **virtualizarea**. Instalarea unei **mașini virtuale** ne permite folosirea mai multor sisteme de operare  
 +**simultan**,​ folosindu-ne de o un singur sistem de calcul (mașină, stație, calculator). Un avantaj major al folosirii unei mașini virtuale  
 +este faptul că în eventualitatea apariției unei probleme în cadrul ei, sistemul de operare nativ (cel care rulează într-adevăr pe mașina  
 +fizică) nu va fi afectat. De exemplu, dacă avem un program pe care îl suspectăm a fi **malițios**,​ îl putem rula pe o mașină virtuală și  
 +în cazul în care premisa de la care am pornit este adevărată,​ știm să nu o rulăm pe sistemul de operare principal unde ne-ar putea afecta  
 +informații sensibile (e.g. un [[https://​en.wikipedia.org/​wiki/​Ransomware|Ransomware]] care ne criptează toate fișierele de pe disc). 
 +Revenind la ideea de mai sus, ca o completare, putem spune că e mai eficient să avem un calculator puternic pe care să putem rula mai multe  
 +mașini virtuale simultan decât să avem câte un calculator pentru fiecare sistem de operare. 
 + 
 +De asemenea, dacă serverul hardware se prăbușește,​ virtualizarea are abilitatea de a migra în timp real toate informațiile pe un alt  
 +server fără a afecta funcționalitatea programelor. 
 + 
 +<​note>​ 
 +De reținut este faptul că deși rulăm mai multe sisteme de operare simultan pe aceeași resursă hardware, sistemele sunt izolate unul de  
 +celălalt, astfel încât este prevenit furtul de informații de la unul la celălalt. 
 +</​note>​ 
 + 
 +==== Arhitectura mașinilor virtuale ==== 
 + 
 +Când vorbim despre mașini virtuale, aduce mai în discuție mai mulți termeni pe care ar trebui să-i clarificăm înainte de a trece mai  
 +departe. În această secțiune vom vorbi despre **host (sistem gazdă)**, **guest (sistem oaspete)** și **hypervizor (virtual machine monitor**. 
 + 
 +=== Host === 
 +**Host-ul** sau **sistemul gazdă** este, de fapt, **sistemul fizic** pe care am instalat prima oară un sistem de operare (cel pe care îl folosim cel mai  
 +des, de bază) peste care vom rula o mașină virtuală care rulează un alt sistem de operare. Sistemul gazdă este cel peste care rulează  
 +soluția de virtualizare - **hipervizorul**. 
 + 
 +=== Guest === 
 +**Guest-ul** sau **sistemul oaspete** este, de fapt, **mașina virtuală** cu sistemul de operare secundar pe care vrem să-l avem. Mașina  
 +virtuală rulează peste **hipervizor**,​ dând impresia de sistem complet. Deși hardware-ul este virtualizat,​ utilizatorul nu își poate da  
 +seama dacă sistemul de operare rulează direct pe sistemul fizic sau comunică cu acesta prin intermediul hipervizorului. 
 + 
 +=== Hypervisor === 
 +**Hypervisor-ul** sau **VMM (Virtual Machine Monitor)** poate fi văzut ca un intermediar între host și guest și este compomenta care se  
 +ocupă de virtualizare. Orice operație care se executa pe mașina virtuală (care desigur necesită accesarea unei sau mai multe resurse  
 +hardware) trece prin hipervizor, care mai departe se ocupă de execuția operației în numele mașinii virtuale. Hipervizorul oferă guest-ului  
 +o interfață compatibilă cu hardware-ul sistemului. 
 + 
 +Hipervizorul poate fi de două tipuri: ''​hosted''​ sau ''​baremetal''​. Mai multe detalii despre diferențele dintre cele 2 tipuri de VMM-uri  
 +pot fi găsite [[http://​elf.cs.pub.ro/​uso/​res/​carte/​uso_cap-14-vm.pdf|aici]]. 
 + 
 +==== Ce este cloud-ul? ==== 
 + 
 +Cloud-ul repreztină tot o formă de virtualizare a resurselor, însă vine cu câteva diferențe față de mașinile virtuale despre care am  
 +vorbbit până acum.  
 + 
 +=== Cloud vs. Virtual Machines vs. Internet Services === 
 +Spre deosebire de o mașină virtuală locală, când vorbim de cloud, utilizatorul nu știe unde se află mașina fizică peste care rulează  
 +mașina sa virtuală, ce tip de server e, care este capacitatea maximă a lui șamd. Utilizatorul știe doar cum se poate conecta la mașina  
 +virtuală (username, adresă IP) și resurele alocate pentru el (procesor, memorie, disc). 
 + 
 +O altă diferență vine din faptul că procesul de instalare a unei mașini virtuale locale este un proces dificil, în special pentru o  
 +persoană care nu este de profil tehnic, fără cunoștințe de sisteme de operare, virtualizare sau rețelistică. În condițiile în care  
 +acesta doar are nevoie de o astfel de mașină virtuală pentru a-și face treaba, este mult mai eficient să apeleze la soluția **cloud**. 
 + 
 +Există două tipuri de cloud: private și publice. Cele private sunt cele care aparțin unei organizații care are nevoie să ruleze mai multe  
 +mașini virtuale. Printre soluțiile de cloud private putem enumera [[https://​www.openstack.org|OpenStack]] sau [[https://​opennebula.org|Opennebula]]. Cele publice sunt deținute de  
 +companii și sunt oferite, în general, utilizatorilor care nu dețin suficient hardware sau resurse materiale pentru a menține un astfel de  
 +server. Câteva companii care se ocupă cu distribuirea de servicii de cloud publice sunt: Google, Amazon, Oracle, DigitalOcean. 
 + 
 +Până acum am vorbit doar de diferențele dintre **cloud** și **mașini virtuale**. Am reținut faptul că serviciul cloud ne oferă posibilitatea  
 +deținerii unei mașini virtuale pe un server care nu e al nostru, dar pe care o putem folosi cu ce scop dorim. Serviciul cloud, însă, ne  
 +oferă mai mult decât mașini virtuale. Serviciile web, de stocare sau de computing sunt alte tipuri care ne pot fi oferită prin cloud. 
 +    - web: Amazon Web Services 
 +    - stocare: Google Drive, Dropbox, Onedrive 
 +    - computing: Google Compute Engine 
 +==== Emulare vs. Virtualizare ==== 
 + 
 +Prin intermediul virtualizării putem rula mai multe sisteme de operare pe aceeși mașină fizică. Sistemele de operare sunt proiectate  
 +să ruleze pe același tip de arhitectură (ARM, x86). Prin intermediul virtualizării nu este posibil să rulăm pe același sistem fizic  
 +sisteme de operare concepute pentru diverse arhitecturi (nu putem rula un sistem de operare Android proiectat pentru o arhitectură  
 +de tip ARM pe o stație cu un procesor din gama x86).  
 + 
 +Pentru a rezolva acest neajuns, a fost introdusă **emularea**. Emularea este procedeul prin care fiecare instrucțiune este tradusă  
 +(interpretată) de un software specializat denumit emulator. Instrucțiunile nu sunt rulate direct pe procesor, acest lucru fiind imposibil,​ 
 +ci trecute prin emulator care se ocupă mai departe de executarea lor într-un mediu al său. Emularea este un procedeu mult mai lent ca  
 +virtualizarea. 
 + 
 +==== Docker și containere vs. Virtualizare ==== 
 + 
 +Câteodată putem avea nevoie ca o aplicație să ruleze într-un mediu izolat, dar nu neapărat pe un alt sistem de operare față de cel pe care  
 +îl avem instalat pe sistemul fizic. Am putea instala o mașină virtuală în care să rulăm aplicația, însă overhead-ul adus este mult prea  
 +mare. Soluția se găsește în conceptul de **light virtualization** sau **containerizare**. Containerele sunt caracterizare print-o nouă  
 +ierarhie de fișiere, separată de cea a mașinii gazdă. Ele sunt mult mai rapide decât mașinile virtuale, însă au dezavantajul că nu  
 +pot rula un alt sistem de operare față de cel de pe mașina gazdă întrucât este nevoie de același tip de nucleu. În imaginea de mai jos  
 +se poate observa mai clar diferența dintre rularea a 3 mașini virtuale pe un sistem și existența a 3 containere pe un sistem. 
 +Se observă faptul că în primul caz (mașini virtuale - stânga) avem un hipervizor deasupra căruia rulează mașini virtuale cu nucleele aferente,  
 +iar în cel de-al doilea (containere) avem mecanism de containerizare (în exemplul din figură se numește Docker) peste care rulează direct aplicațiile. 
 + 
 +{{ :​uso:​laboratoare:​new:​09-vm:​virtualizare_vs_container.png?​500 |}} 
uso/laboratoare/new/09-vm/concepts.1543590445.txt.gz · Last modified: 2018/11/30 17:07 by octavian.guzu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0