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.

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).

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 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.

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.

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 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 OpenStack sau 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.

  1. web: Amazon Web Services
  2. stocare: Google Drive, Dropbox, Onedrive
  3. 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/concepts.txt · Last modified: 2018/12/03 11:07 by dragos.dimitriu
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