+ All Categories
Home > Documents > Capitolul 14 Mas ini virtuale - ERASMUS Pulseelf.cs.pub.ro/uso/res/carte/uso_cap-14-vm.pdf ·...

Capitolul 14 Mas ini virtuale - ERASMUS Pulseelf.cs.pub.ro/uso/res/carte/uso_cap-14-vm.pdf ·...

Date post: 22-Jan-2020
Category:
Upload: others
View: 57 times
Download: 1 times
Share this document with a friend
20
Capitolul 14 Mas , ini virtuale În operat , iunile de zi cu zi, deseori avem nevoie s˘ a rul˘ am mai multe tipuri de sisteme de operare (e.g. Linux s , i Windows) s , i avem la dispozit , ie un singur sistem de calcul. Rularea mai multor tipuri de sisteme de operare este util ˘ a atunci când unele aplicat , ii funct , ioneaz ˘ a doar pe unul sau pe altul. Pentru a rula mai multe sisteme de operare pe acelas , i sistem de calcul, trebuie s˘ a instal ˘ am fiecare sistem de operare pe câte partit , ie într-o configurat , ie dual-boot (vezi Capitolul 9), s , i când dorim s˘ a comut˘ am de pe unul pe altul, trebuie s˘ a reset˘ am calculatorul s , i s˘ a alegem sistemul de operare ce va porni. Aceast ˘ a operat , iuni este consumatoare de timp, iar tot lucrul efectuat pân˘ a în acel moment trebuie salvat. Pentru a preîntâmpina necesitatea folosirii unei configurat , ii dual-boot, se poate folosi tehnologia de virtualizare, central ˘ a în partea de IT&C în zilele noastre. Prin intermediul virtualiz ˘ arii se creeaz˘ a o abstractizare a hardware-ului dând posibilitatea mai multor sisteme de operare a ruleze în acelas , i timp, pe acelas , i sistem hardware. Abstractizarea hardware-ului se refer˘ a la crearea unei instant , e virtuale (ea nu exist˘ a fizic) a fiec˘ arei componente centrale a unui sistem de calcul (procesor, memorie, disc) pentru fiecare sistem de operare care ruleaz ˘ a. În urm˘ atoarele sect , iuni vom extinde modul în care se realizeaz˘ a virtualizarea, diferite tipuri de virtualizare, precum s , i tehnologiile care implementeaz ˘ a virtualizarea. 14.1 Concepte de virtualizare Rularea mai multor sisteme de operare diferite pe acelas , i sistem de calcul se justific ˘ a atât din vedere al funct , ionalit ˘ at , ii cât s , i al securit ˘ at , ii. Funct , ionalitatea este deseori dat ˘ a de faptul c ˘ a aplicat , iile nu sunt compatibile cu sistemul de operare actual. Avem nevoie de o versiune de sistem de operare mai vechi (e.g. unele aplicat , ii scrise în Java funct , ioneaz ˘ a doar pe Windows 7 cu o versiune veche de Java) sau de alt tip de sistem de operare (e.g. jocurile au fost scrise în general doar pentru sistemul de operare Windows, iar noi avem instalat pe calculator Linux). Un alt ˘ a folosint , ˘ a a virtualiz ˘ arii este proeminent ˘ a în domeniul securit ˘ at , ii. În ziua de ast˘ azi, programele malit , ioase sunt distribuite prin diverse canale, deseori împreun ˘ a cu aplicat , ii ce sunt legitime. Dac ˘ a avet , i o astfel b ˘ anuial ˘ a, acele aplicat , ii pot fi rulate pe un sistem de operare diferit de sistemul ce ruleaz˘ a direct pe sistemul de calcul. Daunele provocate de programele malit , ioase vor afecta doar sistemul de operare 254
Transcript

Capitolul 14

Mas, ini virtuale

În operat, iunile de zi cu zi, deseori avem nevoie sa rulam mai multe tipuri de sisteme deoperare (e.g. Linux s, i Windows) s, i avem la dispozit, ie un singur sistem de calcul. Rulareamai multor tipuri de sisteme de operare este utila atunci când unele aplicat, ii funct, ioneazadoar pe unul sau pe altul.

Pentru a rula mai multe sisteme de operare pe acelas, i sistem de calcul, trebuie sainstalam fiecare sistem de operare pe câte partit, ie într-o configurat, ie dual-boot (veziCapitolul 9), s, i când dorim sa comutam de pe unul pe altul, trebuie sa resetamcalculatorul s, i sa alegem sistemul de operare ce va porni. Aceasta operat, iuni esteconsumatoare de timp, iar tot lucrul efectuat pâna în acel moment trebuie salvat. Pentrua preîntâmpina necesitatea folosirii unei configurat, ii dual-boot, se poate folositehnologia de virtualizare, centrala în partea de IT&C în zilele noastre. Prin intermediulvirtualizarii se creeaza o abstractizare a hardware-ului dând posibilitatea mai multorsisteme de operare sa ruleze în acelas, i timp, pe acelas, i sistem hardware.Abstractizarea hardware-ului se refera la crearea unei instant,e virtuale (ea nu existafizic) a fiecarei componente centrale a unui sistem de calcul (procesor, memorie, disc)pentru fiecare sistem de operare care ruleaza.

În urmatoarele sect, iuni vom extinde modul în care se realizeaza virtualizarea, diferitetipuri de virtualizare, precum s, i tehnologiile care implementeaza virtualizarea.

14.1 Concepte de virtualizare

Rularea mai multor sisteme de operare diferite pe acelas, i sistem de calcul se justificaatât din vedere al funct, ionalitat, ii cât s, i al securitat, ii. Funct, ionalitatea este deseori data defaptul ca aplicat, iile nu sunt compatibile cu sistemul de operare actual. Avem nevoie de oversiune de sistem de operare mai vechi (e.g. unele aplicat, ii scrise în Java funct, ioneazadoar pe Windows 7 cu o versiune veche de Java) sau de alt tip de sistem de operare (e.g.jocurile au fost scrise în general doar pentru sistemul de operare Windows, iar noi aveminstalat pe calculator Linux). Un alta folosint,a a virtualizarii este proeminenta în domeniulsecuritat, ii. În ziua de astazi, programele malit, ioase sunt distribuite prin diverse canale,deseori împreuna cu aplicat, ii ce sunt legitime. Daca avet, i o astfel banuiala, acele aplicat, iipot fi rulate pe un sistem de operare diferit de sistemul ce ruleaza direct pe sistemul decalcul. Daunele provocate de programele malit, ioase vor afecta doar sistemul de operare

254

CAPITOLUL 14. MAS, INI VIRTUALE 255

respectiv, nu s, i sistemul de operare principal. Se observa astfel ca exista nenumarateaplicat, ii ale rularii mai multor sisteme de operare în acelas, i timp, pe acelas, i sistem decalcul.

În nomenclatura virtualizarii avem urmatoarele cuvinte cheie:

• sistem gazda sau host sau mas, ina fizica: cel care a fost instalat prima data s, ideasupra caruia rulam un alt sistem de operare

• sistem oaspete sau guest sau mas, ina virtuala: sistem de operare ce îl rulam încadrul sistemului gazda

Necesitat, ile prezentate anterior pentru rularea concomitenta a mai multor sisteme deoperare pe acelas, i sistem de calcul au existat înca de la începutul unitat, ilor de calcul,dar resursele limitate nu au permis acest lucru (daca ar fi fost implementata sistemul deoperare ce rula pe framework-ul de virtualizare ar fi fost imposibil de folosit).Un primpas spre rularea unui sistem de operare într-un altul (conceptul de virtualizare) a fostfacut în anii 2000 atunci când puterea de calcul a procesoarelor a crescut facândposibil acest lucru. Una dintre primele implementari a fost dezvoltata de companiaVMware, produsul denumit Workstation. VMware Workstation oferea capabilitatearularii unui alt tip de sistem de operare, alaturi de cel de baza (de exemplu rularea uneidistribut, ii Linux pe un calculator ce are instalat Windows). Pentru a oferi izolareacorespunzatoare, acesta va rula ca un nou proces în sistemul de operare gazda(sistemul fizic). Astfel va fi izolat de celelalte procese sau sisteme de operare gazdacare ar putea rula. Problema cu aceasta abordare o constituie accesul la resurselehardware (instruct, iunile privilegiate): acest lucru se poate întâmpla doar din cadrulnucleului sistemului de operare gazda, nu s, i din context proces. Încercarea de a accesaresursele hardware din context proces vor genera o except, ie (semnal). Pentru a rezolvaacest lucru, s-a creat un modul de kernel care este inserat/instalat împreuna cuaplicat, ia VMware Workstation. La fiecare acces la instruct, iunile privilegiate alesistemului oaspete, modulul de kernel va trata except, iile s, i le va executa în numelesistemului gazda. Acest lucru determina o viteza scazuta a mas, inii virtuale, mai alescând aceasta executa multe instruct, iuni privilegiate. Pentru a veni în întâmpinareaacestui neajuns, producatorii de hardware (procesoare) au introdus o noua facilitatenumita virtualizare nativa (în cazul procesoarelor Intel acesta se numes, te VT-X -Virtualization Extensions, iar în cazul procesoarelor AMD poarta numele de SVM -Secure Virtual Machine). Acest lucru a permis implementarea unor module softwaresuplimentare pentru a diminua overhead-ul indus de except, iile cauzate de execut, iainstruct, iunilor privilegiate. De aceea, în zilele noastre, atunci când pornit, i o aplicat, ie devirtualizare (fie ca e vorba de VMware fie ca e vorba de VirtualBox), primit, i o notificaredaca nu avet, i activate din BIOS aceste extensii de virtualizare (vezi Capitolul 9 pentrudetalii despre configurare a BIOS-ului). Majoritatea versiunilor aplicat, iilor de virtualizarenu mai ofera suport de rulare fara prezent,a acestor extensii.

Virtualizarea nu este folosita doar pe calculatoarele personale pentru a acoperi diversedeficient,e de securitate sau incompatibilitat, i între diverse versiuni de software s, isisteme de operare. Virtualizarea este folosita s, i în aria serverelor pentru a rezolvadoua probleme importante:

• Consolidarea resurselor: de multe ori un server este alocat doar unei aplicat, ii, iaraceasta aplicat, ie nu foloses, te întreaga capacitate a serverului. Astfel resurseleramân nefolosite. Rularea unei alte aplicat, ii pe acelas, i server este considerata

256 INTRODUCERE ÎN SISTEME DE OPERARE

de multe ori o problema de securitate (daca una din aplicat, ii e compromisa, oafecteaza inevitabil s, i pe cealalta). Folosind conceptul de virtualizare împreuna cuextensiile hardware de virtualizare, putem rula mai multe mas, ini virtuale, câte unapentru fiecare aplicat, ie dorita.

• Securitate: izolarea fiecarei aplicat, ii într-o mas, ina virtuala pentru a preveni furtulde date de la una la alta

• Mentenant,a serverele: mas, inile virtuale pot fi migrate (mutate) fara a întrerupefunct, ionarea acestora de pe o mas, ina fizica pe alta. Astfel se pot aplicaactualizarile necesare pentru sistemul fizic (e.g. Cluster Aware Updating de laMicrosoft) sau se poate face mentenant,a hardware dorita (e.g. upgrade dememorie)

14.1.1 Clasificarea virtualizarii

În terminologia virtualizarii, toate operat, iunile necesare acestui proces suntadministrate de o entitate denumita hipervizor (în engleza: hypervisor). Hipervizoruleste componenta din sistemul de operare ce se ocupa de virtualizare. O alta denumiredes întâlnita a hipervizorului, mai ales în diagramele arhitecturale este Virtual MachineMonitor (VMM ) - numele este intuitiv întrucât rolul unei hipervizor este acela de amonitoriza toate operat, iile privilegiate ale unei mas, ini virtuale s, i de a le executa înnumele acesteia. În continuare vom realiza o clasificare a hipervizoarelor strâns legatade diferite tipuri de virtualizare.

De-a lungul timpului, procedeele de virtualizare au evoluat, existând în ziua de astazidoua tipuri de virtualizare:

• Hosted - virtualizarea se realizeaza în cadrul unui sistem de operare existent.Hipervizorul în cadrul acestui tip de virtualizare se mai numes, te s, i Type-2hypervisor (hipervizor de tipul 2).

• Baremetal - este dezvoltat un nou sistem de operare, numai pentru a realizavirtualizarea, care ruleaza deasupra hardware-ului. Hipervizorul în cadrul acestuitip de virtualizare se mai numes, te s, i Type-1 hypervisor (hipervizor de tipul 1).

În Figura 14.1 sunt reprezentate cele 2 tipuri de virtualizare, iar în Figura 14.2 suntreprezentate cele 2 tipuri de hipervizoare (se observa echivalent,a). În stângavirtualizarea de tip hosted în care avem sistemul de operare ce ruleaza deasuprahardware-ului, iar nivelul de virtualizare a fost dezvoltat deasupra acestuia, având unhipervizor de tipul 2 (Type-2 Hypervisor). De asemenea în paralel cu mas, inile virtualepot rula s, i alte aplicat, ii obis, nuite. Acest tip de virtualizare este deseori folosit însistemele desktop. În partea dreapta a Figura 14.1, respectiv a Figura 14.2 estereprezentata o arhitectura folosind virtualizarea de tip baremetal: practic codul devirtualizare ruleaza deasupra hardware-ului, având un hipervizor de tipul 1 (Type-1Hypervisor). Acest tip de virtualizare este folosit de obicei în servere (unde nu avemaplicat, ii ce trebuie sa ruleze în paralel) s, i este apreciat pentru faptul ca are uncode-base (numarul de linii de cod) mult mai mic decât al unui sistem de operare s, i nueste predispus gres, elilor de programare.

În ambele figuri se observa ca la virtualizarea baremetal s, i hipervizor de tip 1 exista omas, ina virtuala de management. Aceasta este necesara pentru a putea administra

CAPITOLUL 14. MAS, INI VIRTUALE 257

Figura 14.1: Virtualizare de tip Hosted vs. Baremetal

Figura 14.2: Hypervisor tip 2 vs tip 1

258 INTRODUCERE ÎN SISTEME DE OPERARE

hipervizorul s, i de a implementa funct, ionalitat, ile non-critice din acesta. Faptul ca ruleazaca o mas, ina virtuala diferita este un lucru bun întrucât daca exista probleme înfunct, ionarea acestuia, nu va afecta întregul nod (implicit s, i celelalte mas, ini fizice).

14.1.2 Aplicat, ii/hipervizoare pentru rularea mas, inilor virtuale

În continuare vom prezenta cele mai importante (cu o cota de utilizare semnificativa)hipervizoare din ziua de astazi. Astfel avem hipervizoare de tipul 2:

• KVM (Kernel Virtual Machine) - vine ca un modul de kernel în cadrul sistemelorLinux care implementeaza extensiile neceare pentru a realiza virtualizarea. Existasuport de virtualizarea KVM atât pentru procesoarele cu arhitectura x86 (Intel s, iAMD) cât s, i pentru procesoarele ARM (vezi Capitolul 8)

• Hyper-V - hipervizor asociat sistemelor de operare Windows Server. Acesta vineca un rol (Role) instalabil în cadrul disitribut, iile Windows Server. Prima versiune lacare a aparut este Windows Server 2008, fiind ulterior introdus în 2008R2, 2012,2012R2 s, i în acest moment în 2016. Hyper-V este livrat în mod gratuit s, i ca unsistem de operare de sine statator (practic este un sistem de operare MicrosoftWindows fara interfat,a grafica s, i cu rolul Hyper-V instalat)

• Virtual Box - este un hipervizor de tipul 2 adresat sistemelor desktop. Acestase instaleaza pe orice sistem de operare existent (Windows, Linux saa MacOS).Poate rula orice sistem de operare gazda, are opt, iuni de snapshot (salvarea stariiunei mas, ini virtuale), posibilitat, i avansate de a control configurat, iile de ret,ea. Poatefi folosit în mod gratuit.

• VMware Workstation/Player/Fusion - este un hipervizor de tipul 2 adresat deasemenea sistemelor desktop. VMware Workstation se instaleaza pe sistemeleWindows s, i Linux s, i ofera aceleas, i facilitat, i ca s, i VirtualBox. VMware Fusion seadreseaza sistemelor de operare gazda MacOS oferind aceleas, i funct, ionalitat, i caVMware Workstation. Ambele versiuni necesita achizit, ionarea unei licent,e. Cuajutorul versiunii VMware Player se pot rula mas, inile virtuale create cu VMwareWorkstation dar acesta nu det, ine facilitat, i avansate (e.g. snapshot). Acest estedistribuit grauit.

Hipervizoarele de tip 1 sunt folosite s, i au aplicabilitate în domeniul centrelor de date(datacenter). Printre acestea putem enumera:

• Xen - dezvoltat de Univeristatea din Cambridge, ruleaza direct peste hardwares, i are nevoie de o mas, ina virtuala pentru management s, i pentru a rula driverelevirtualizate. Mas, ina de management poarta denumirea de Dom0 (Domain 0 - înterminologia Xen mas, inile virtuale poarta denumirea de domenii). Ca s, i KVM, Xenofera suport de virtualizare atât pentru procesoarele cu arhitectura x86 cât s, i ARM.

• VMware ESXi - hipervizorul de tip 1 al celor de la VMware. Acesta se instaleazadirect peste hardware s, i ofera suport doar pentru procesoarele cu arhitectura x86.Varianta gratuita ofera un set limitat de funct, ionalitat, i (e.g. nu ofera posibilitatea dea migra o mas, ina virtuala de pe un nod fizic pe altul). Pentru a beneficia de toatefacilitat, ile trebuie sa achizit, ionat, i varianta comerciala denumita VMware vShpereîmpreuna cu aplicat, ia de management VMware vCenter.

CAPITOLUL 14. MAS, INI VIRTUALE 259

14.1.3 Containere (lightweight virtualization)

Virtualizarea aduce un overhead important. Pentru aplicat, iile care au nevoie sa rulezedoar într-un mediu izolat, dar sa foloseasca acelas, i nucleu (kernel) a fost introdusconceptul de containerizare sau lightweight virtualization. Containerele suntreprezentate printr-o noua ierarhie de fis, iere root (/) separata de cea a mas, inii gazda s, icare foloses, te nucleul mas, inii gazda pentru a efectua apeluri privilegiate catre hardwares, i nu numai. Container-ele, în comparat, ie cu mas, inile virtuale, sunt mai rapide,consuma mai put, ine resurse întrucât nu trebuie decât sa porneasca o noua ierarhie deprocese (practic un nou proces init, precum s, i demonii aferent, i - vezi Capitolul 4).Dezavantajul containerelor îl reprezinta faptul ca nu putem rula sisteme de operarediferite (Windows în cadrul unei mas, ini fizice ce ruleaza Linux) întrucât este nevoie deacelas, i tip de nucleu. În Figura 14.3 este reprezentata diferent,a între mas, ini virtuale s, icontainere. Se observa ca în primul caz (mas, ini virtuale - stânga) avem un hipervizordeasupra caruia ruleaza mas, inile virtuale cu nucleele aferente, iar în cel de-al doilea(containere) avem mecanism de containerizare (în exemplul din figura tehnologia senumes, te Docker) peste care ruleaza direct aplicat, iile. Se observa ca mecanismul decontainer nu cont, ine propriul nucleu (kernel).

Figura 14.3: Mas, ini virtuale vs. containere

Tehnologii ce implementeaza mecanismul de container în sistemele Linux:

• LXC (Linux Containers) - util pentru rularea unor servicii izolat de sistemul de baza

• OpenVZ - similar LXC, dar nu este prezent în mod implicit în nucleul Linux.

• Docker - ofera posibilitatea rularii într-un cotainer doar a unei singure aplicat, ii

260 INTRODUCERE ÎN SISTEME DE OPERARE

14.2 Operat, ii cu mas, ini virtuale

Crearea mas, inii virtuale de obicei se face printr-o comanda CLI sau printr-un clickfolosind interfat,a GUI a solut, iei de virtualizare aleasa. La crearea trebuie specificat, i maimult, i parametri pentru a descrie configurat, ia virtualizata a hardware-ului acesteia:

• Numele mas, inii virtuale

• Numarul de procesoare (nuclee/core-uri)

• Cantitatea de memoriei care va fi disponibila

• Marimea discului

• Daca va avea CD-ROM s, i de imagine .iso va fi asociata (întocmai unui CD/DVDfizic)

• Tipul de ret,ea (vezi sect, iunea urmatoare)

O data creata mas, ina virtuala, aceasta poate fi pornita. La prima pornire, atunci cânddoar ce am creat mas, ina, nu avem un sistem de operare instalat. Daca am configurats, i un CD-ROM cu imaginea unui sistem de operare atas, ata, putem realiza instalareasistemului de operare. De obicei solut, ia de virtualizare ofera un ecran direct la mas, inavirtuala prin care sa putet, i interact, iona cu aceasta. Acest ecran deseori poarta numelede consola. Dupa instalarea sistemului de operare, putet, i folosi mas, ina virtuala.

Daca dorit, i modificarea configurat, iei hardware, trebuia sa oprit, i mas, ina virtuala, samodificat, i resursele alocate (numar procesoare, cantitate memorie, marime disc,adaugare disc nou). Atent, ie, daca at, i modificat marimea discului, aceasta nu se vareflecta automat în sistemul de operare întrucât partit, ionarea a fost facuta folosinddimensiunea init, iala (vezi. Capitolul 10). De asemenea adaugarea unui nou discimplica partit, ionarea s, i formatarea acestuia. În general modificarea numarului deprocesoare precum s, i a cantitat, ii de memorie se va reflecta automat în mas, ina virtualadupa pornire.

O alta operat, ie ce poate fi efectuata în decursul rularii unei mas, ini virtuale estesnapshot-ul. Snapshot-ul este operat, ia prin care se salveaza starea mas, inii virtuale(atât a memorie cât s, i a discului) cu scopul de a ne întoarce înapoi la aceasta în cazulîn care se întâmpla ceva în funct, ionarea sistemului. Aceasta funct, ie este asemanatoarecomenzii “Sleep” atunci când dorim sa închidem calculatorul s, i sa pastram toateaplicat, iile deschise, dar ofera posibilitatea refacerii unei mas, ini virtuale folosindsnapshot-ul creat. Un caz aplicat al acestei facilitat, i o reprezinta chiar partea didactica:pregatim o mas, ina virtuala cu o configurat, ie data, cream un snapshot s, i dam acces deadministrare student, ilor. Aces, tia pot sa execute s, i sa testez absolut orice comanda, iardaca strica sistemul de operare se pot întoarce la snapshot-ul creat.

14.2.1 Configurarea ret,elei virtuale

Ca orice sistem fizic, o mas, ina virtuala necesita o conexiune la ret,ea, respectiv laInternet (pentru instalare de aplicat, ii, actualizari, comunicare cu alte stat, ii din ret,eaualocala). Pentru acest lucru, orice solut, ie de virtualizare ofera opt, iunea de a adauga oplaca de ret,ea virtuala. Acesta placa de ret,ea face în general legatura între mas, ina

CAPITOLUL 14. MAS, INI VIRTUALE 261

virtuala s, i mas, ina fizica (este practic un fir logic între acestea doua). Mas, ina fizicatrebuie sa ofere o modalitate de conectare a firului la ret,eaua fizica precum s, i alocareade resurse (e.g. adresa IP ). Solut, iile de virtualizare ofera în general trei tipuri deconfigurat, ii (sau moduri) ale placii de ret,ea virtuale, ilustrate s, i în Figura 14.4:

• NAT (Network Address Translation - vezi Capitolul ??)

• Host-only

• Bridge

Modul de funct, ionare NAT aloca o adresa IP automat (prin DHCP ) mas, inii virtuale s, iîn acelas, i timp realizeaza s, i funct, ia de NAT pentru a acorda acces la Internet mas, iniivirtuale. Dupa cum se poate vedea s, i în Figura 14.4 traficul care iese în afara ret,elei saucel care intra este colorat cu ros, u, în comparat, ie cu cel din interior: acest lucru dores, tesa reliefeze faptul ca la ies, ire se face o translat, ie de adrese (nu se pastreaza adresasursa a mas, inii virtuale) folosind mecanismul NAT.

Modul de funct, ionare Host-only asigura o adresa IP prin intermediului serviciului DHCPdar comunicat, ia este limitata doar între mas, ina fizica (HOST) s, i mas, ina virtuala dupacum se poate vedea în Figura 14.4 (se observa ca traficul nu va ies, i în afara sistemului).

Modul de funct, ionare Bridged unifica ret,eaua externa cu placa de ret,ea a mas, inii virtuale.Adresarea IP este asigurata de ret,eaua externa. Mas, ina virtuala este vazuta ca o altastat, ie normala în cadrul ret,elei externe s, i poate fi accesata în mod direct. Se observa înFigura 14.4 desenat cu ros, u faptul ca pachetele nu sunt alterate.

Figura 14.4: Moduri de funct, ionare a placii de ret,ea virtualizate

14.2.2 Servicii de integrare

În mod normal sistemul de operare al mas, inii virtuale nu este cons, tient de faptul caruleaza într-un mediu virtualizat. Acest lucru limiteaza anumite funct, ionalitat, i s, i aducepenalitat, i de performant,a. Un exemplu îl constituie facilitatea de a dat Copy/Paste dinhost (mas, ina fizica) în ecranul mas, inii virtuale. Acest lucru în mod normal nu este

262 INTRODUCERE ÎN SISTEME DE OPERARE

posibil întrucât mas, ina virtuala nu s, tie faptul ca ruleaza într-un mediu virtualizat. Pentrua rezolva aceasta problema, solut, iile de virtualizare ofera aplicat, ii specializate (agent, isoftware) care trebuie instalate în cadrul mas, inii virtuale pentru ca aceasta sa învet,efaptul ca ruleaza într-un mediu virtualizat s, i sa comunice cu hipervizorul cu scopul de aaduce noi facilitat, i de utilizare s, i performant,a crescuta. Aceste aplicat, ii software sauagent, i poarta numele de servicii de integrare (integration services). Serviciile deintegrare sunt specifice fiecarei solut, ii de virtualizare s, i sunt oferite în general în modgratuit. Putet, i observa un exemplu de instalare a serviciile de integrare pe Virtual Box înAnexa: Crearea unei masini virtuale in VirtualBox.

14.3 Tehnologii cloud si virtualizarea

În comparat, ie cu aplicat, iile de virtualizare pentru calculatoarele personale, instalarea s, iconfigurarea serviciilor de virtualizare pe servere este un proces complicat, necesitacunos, tiint,e tehnice avansate atât de sisteme de operare cât s, i de calcul distribuit s, iret,elistica. S, i dupa procesul de instalare, crearea, instalarea s, i pornirea unei mas, inivirtuale pe un sistem server este anevoioasa. Pentru a rezolva aceste lucruri s, i a facilitaun management us, or de înt,eles pentru utilizatori, noi framework-uri intermediare auaparut. Acestea poarta denumirea de cloud. Cloud-ul reprezinta o abstractizare aresurselor pentru utilizatorul final: acesta nu este obligat sa s, tie unde se afla serverele,ce tipuri de servere sunt, daca mai e loc pe ele sau nu, s, amd. Utilizatorul doar cereresursele (procesor, memorie, disc, adresa IP), iar acestea sunt automat alocate. Un altavantaj al tehnologiilor cloud îl reprezinta elasticitatea: daca la un moment dat unutilizator dores, te mai multe resurse (mai multe core-uri, mai multa memorie), poatecere acest lucru furnizorului s, i va plati doar pentru timpul în care le foloses, te efectiv.

Exista doua tipuri de servicii cloud:

• private: o organizat, ie det, ine multe servere pe care dores, te sa ruleze mas, inivirtuale. Pentru a facilita management-ul acestora va instala o solut, ie de cloud s, io va configura sa ruleze pe acele servere. Printre solut, iile de cloud private (sauon-premise) putem enumera Openstack s, i Opennebula. În general solut, iile decloud privat pot interact, iona cu oricare tip de hipervizor prezentat anterior (KVM,Xen, Hyper-V)

• public: organizat, iile care nu det, in suficient hardware s, i nu vor sa cheltuie bani pepe acesta, precum s, i pe mentenant,a acestuia, pot apela la serviciile cloudpublice. Companii specializate precum Amazon (AWS-EC2:https://aws.amazon.com/ec2/), Google (https://cloud.google.com/), Oracle (OCI:https://cloud.oracle.com/cloud-infrastructure), DigitalOcean(https://www.digitalocean.com), ofera servicii de cloud publice. Practic oferaposibilitatea crearii unor mas, ini virtuale, rulând sistemul de operare dorit s, i avândalocate resursele dorite.

Cloud-ul nu ofera doar mas, ini virtuale, ci ofera s, i servicii specifice: serviciu de web(Amazon Web Services), serviciu de stocare (Dropbox, Google Drive), serviciu decomputing (Google Compute Engine). Astfel se ofera o interfat,a catre utilizator careofera doar serviciul dorit. Acest lucru are avantajul de a scuti utilizatorul sa îs, iconfigureze el mas, ina virtuala pentru ce ar avea nevoie (stocare, calcul).

CAPITOLUL 14. MAS, INI VIRTUALE 263

Pornind de la cele enumerate mai sus, serviciile de cloud poate fi clasificat în:

• IaaS (infrastructure as a service) - oferirea atât de mas, ini virtuale utilizatorilor,precum s, i a unui mijloc prin care poate sa îs, i gestioneze singur infrastructura decloud pusa la dispozit, ie. Ca exemplu aici intra operatorii de public cloud prezentat, imai sus (AWS-EC2, OCI, DigitalOcean)

• PaaS (platform as a service) - servicii ce pun la dispozit, ie un framework pentrudezvoltarea aplicat, iilor (tool-uri de dezvoltare) fara a mai fi nevoie sa realizaminstalarea acestora local. Un astfel de exemplu îl reprezinta Overleaf(https://www.overleaf.com/): utilizatorul doar introduce template-ul s, i codul LaTeX,iar serviciul realizeaza verificarea s, i compilarea acestuia.

• SaaS (software as a service) - oferirea de servicii/aplicat, ii care sunt gazduite înmedii cloud s, i utilizatorul trebuie sa s, tie detalii despre platforma, sisteme deoperare, mod de stocare, etc. Un exemplu de astfel de serviciu este Google Apps.

În Anexa: Openstack în UPB vom descrie pas, ii pe care un utilizator trebuie sa îi urmezepentru a-s, i crea un cont s, i a face operat, ii cu mas, ini virtuale (creare, autentificare,s, tergere).

14.4 Emulare s, i virtualizare

Prin intermediul virtualizarii putem rula mai multe sisteme de operare pe aceeas, imas, ina fizica. Sistemele de operare sunt proiectate sa ruleze pe aceeas, i arhitectura(e.g. x86, ARM). Prin intermediul virtualizarii nu putem rula pe acelas, i sistem fizic maimulte sisteme de operare concepute pentru diverse arhitecturi: nu putem rula un sistemde operare Android compilat pentru arhitectura ARM ca o mas, ina virtuala pe un laptopcu procesor x86. Acest lucru poate fi realizat prin emularea. Emularea este procedeulprin care fiecare instruct, iune este tradusa (interpretata) de un software specializatdenumit emulator. Instruct, iunile nu se executa în mod direct pe procesor. Astfel fiecareinstruct, iune este interpretata de catre emulator s, i emulatorul executa instruct, iunilenecesare pentru a întreprinde efectul dorit. Emularea este un procedeu mult mai lent cavirtualizarea. În cadrul virtualizarii, sunt interpretate doar instruct, iunile privilegiate,restul sunt executate direct de catre unitatea hardware.

Printre solut, ii de emulare, putem enumera:

• QEMU (prescurtare de la Quick Emulator) - acesta poate emula un numar variatde arhitecturi: x86, ARM, Sparc, PowerPC, s, .a.

• BOCHS - acesta poate emula arhitectura x86 s, i este util în a face debugging încadrul sistemelor de operare atunci când sunt portate pe arhitectura x86. Aresuport inclusiv pentru extensiile de virtualizare (sa le emuleze)

Wine (acronim recursiv: Wine Is Not an Emulator) este un tip de emulator care permiterularea aplicat, iilor Windows pe sistemele de operare Linux. Dupa cum se poate vedeas, i în acronim acesta nu este un emulator în adevaratul sens al cuvântului. Deasemenea suplimentar, acesta pune la dispozit, ie o biblioteca (Winelib) care sa fiefolosita în compilarea aplicat, iilor Windows pentru a fi rulate pe Linux.

264 INTRODUCERE ÎN SISTEME DE OPERARE

14.5 Anexa: Crearea unei masini virtuale in VirtualBox

Operat, iile cu mas, inile virtuale se pot face us, or folosind aplicat, ia de virtualizareVirtualBox. VirtualBox asigura o interfat,a grafica utilizatorului pentru a crea, configura s, is, terge o mas, ina virtuala. VirtualBox ofera de asemenea suport pentru virtualizarehardware (nativa) fara de care nu poate funct, iona. În cazul în care aceasta estedezactivata din BIOS, VirtualBox va va notifica acest lucru s, i trebuie sa o activat, i (acestlucru este descris în Capitolul 9).

VirtualBox se poate descarca s, i instala gratuit pe orice sistem de Operare (Windows,Linux, MacOS) de la adresa: https://www.virtualbox.org/. Acesta este întret, inut s, idezvoltat de catre Oracle.

În Figura 14.5 este reprezentata fereastra principala a aplicat, iei VirtualBox. Se observaca exista o mas, ina virtuala deja creata denumita Windows 7 care este închisa (PoweredOff ).

Figura 14.5: Fereastra principala VirtualBox

Pentru a crea o mas, ina virtuala noua merget, i pe meniul Machine -> New. O nouafereastra va aparea în care trebuie sa introducet, i un nume pentru mas, ina virtualaprecum s, i tipul sistemului de operare s, i varianta dorita. În Figura 14.6 esteexemplificata crearea unei mas, ini virtuale ce va rula un sistem de operare Linux, bazape distribut, ia Debian pe 64 de bit, i.

Dupa selectarea sistemului de operare, trebuie sa specificat, i cantitatea de memorie lacare va avea acces mas, ina virtuala (poate fi modificata s, i dupa creare) precum s, idimensiunea discului unde se va instala sistemul de operare. Exista trei tipuri dediscuri: VDI (specific VirtualBox), VHDX (specific Hyper-V), VMDK (specific VMware).Recomandam folosirea tipului de disc specific VirtualBOX (VDI) întrucât aceasta va fiaplicat, ia folosita. Dupa selectarea tipului discului, avem doua alte opt, iuni:

• Fixed size (dimensiune fixa): tot spat, iul va fi alocat pe disc de la crearea mas, iniivirtuale. Acest mod ofera performant,a mai buna, dar spat, iul trebuie sa fie disponibilde la creare.

• Dynamically allocated (alocat dinamic): spat, iul va fi alocat pe disc pe masura cemas, ina virtuala va scrie date. În acest fel putem crea discuri oricât de mari laînceput, fara sa avem spat, iu disponibil pe discul fizic.

CAPITOLUL 14. MAS, INI VIRTUALE 265

Figura 14.6: Meniul de creare a unei mas, ini virtuale

În ultima instant,a trebuie sa specificat, i dimensiune pe care o dorit, i pentru disc. Dupa s, iacest ecran, mas, ina virtuala va fi creata. Înainte de a o porni, trebuie sa mai realizamsetari privind ret,eaua. Executat, i Right-click pe mas, ina virtuala creata s, i apasat, i pebutonul Settings. În ecranul nou deschis putet, i configura fiecare componenta hardwarevirtualizata (vezi Figura 14.7.

Figura 14.7: Setarile unei mas, ini virtuale VirtualBox

Printre cele mai relevante setari enumeram:

• System - putem configura cantitatea de memoriei, numarul de procesoare

• Display - cantitatea de memorie utilizata de placa video

• Storage - putem vedea ce discuri sunt atas, ate, ce proprietat, i au. Tot aici putemadauga s, i un disc virtual necesar instalarii mas, inii virtuale. În Figura 14.8 estereprezentat modul prin care putet, i selecta o imagine de tip ISO pentru a fi montataca s, i un disc virtual în mas, ina virtuala cu scopul de a instala sistemul de operare.

266 INTRODUCERE ÎN SISTEME DE OPERARE

• Audio - activare/dezactivare a placii audio pentru mas, ina virtuala

• Network - configurarea placii/placilor de ret,ea pe care mas, ina virtuala le poatefolosi. Implicit doar adaptorul 1 (Adapter 1) este activat s, i pus în modul NAT (veziSect, iunea 14.2.1 pentru mai multe detalii despre modurile de funct, ionare).Recomandam folosirea parametrilor implicit, i.

• USB - configurarea dispozitivelor USB disponibile mas, inii virtuale. Se poate daacces dispozitivelor USB hardware direct mas, inii virtuale. Procesul se numes, tepass-through.

Figura 14.8: Introducere unei imagini ISO ca disc virtual într-o mas, ina virtuala

Dupa configurarea mas, inii virtuale, aceasta poate fi pornita. Selectat, i mas, ina virtuala s, iapasat, i butonul Start din stânga sus. Aceasta va porni s, i va boota de pe discul virtualinserat (vezi Figura 14.8). În Figura 14.9 este ilustrata pornirea mas, inii virtuale s, ipornirea sistemului de operare Windows în vedere instalarii.

Figura 14.9: Instalarea unui sistem de operare în VirtualBox

Dupa instalarea sistemului de operare, este important sa instalat, i serviciile de integrare(vezi Sect, iunea 14.2.2 pentru a întelege scopul acestora). Pentru a le instala merget, ipe meniul Devices -> Insert Guest Additions CD Image. Aceasta comanda va montaautomat în mas, ina virtuala un disc virtual ce cont, ine software-ul de instalat pentruserviciile de integrare. În Figura 14.10 se poate observa noua disc virtual s, i cont, inutulacestuia. De exemplu, dupa instalarea serviciilor de integrare vet, i putea facecopy/paste din/în mas, ina virtuala atât a fis, ierelor cât s, i a textului.

O operat, ie foarte utila cu o mas, ina virtuala este cea de snapshot prezentata s, i înSect, iunea 14.2. Pentru a realiza acest lucru în VirtualBox, merget, i pe meniul Machine

CAPITOLUL 14. MAS, INI VIRTUALE 267

Figura 14.10: Guest Additions pentru mas, ini virtuale VirtualBox

Figura 14.11: Snapshot-ul unei mas, ini virtuale în VirtualBox

tools din dreapta sus s, i selectat, i butonul Snapshot, exact ca în Figura 14.11. Pentru arealiza un snapshot apasat, i butonul Take.

Va aparea un meniu în care trebuie sa introducet, i numele snapshotului s, i o descriererelevanta. În Figura 14.12 se poate observa snapshot-ul creat. Pentru a ne întoarcela snapshot-ul dorit, apasam click-dreapta pe mouse pe acesta s, i selectam opt, iuneaRestore. Se poate observa dupa aceea ca mas, ina a revenit la starea anterioara

Figura 14.12: Snaptshot creat în cadrul VirtualBox

268 INTRODUCERE ÎN SISTEME DE OPERARE

14.6 Anexa: Openstack în UPB

Din perspectiva Openstack, un student face parte dintr-un tenant (vezi Multitenancy). Înacest context, not, iunea de tenant poate fi asociata cu un proiect. Crearea proiectului seface prin apasarea butonului Create user, buton aflat în blocul Openstack de pe platformaMoodle a Facultat, ii de Automatica s, i Caculatoare (acs.curs.pub.ro - acest lucru estespecific doar pentru student, ii facultat, ii, vezi Figura 14.13). Odata tenant-ul creat, putemaccesa Dashboard pentru crearea mas, inilor virtuale.

Figura 14.13: Crearea proiect Openstack

14.6.1 Accesarea Openstack Dashboard

Interfat,a de administrare a Openstack (Openstack Dashboard) se poate accesa folosindlink-ul https://cloud-controller.grid.pub.ro/. Autentificarea se face folosind utilizatorul s, iparola furnizate de catre facultate.

14.6.2 Crearea unei perechi de chei ssh publica-privata

Autentificarea în cadrul unei mas, ini virtuale se face folosind ssh cu chei publice-private.Acest mod de autentificare asigura cel mai înalt grad de securitate fiind folosit s, i deAmazon EC2 în mod implicit. Generarea de chei se va face pe fep.grid.pub.ro astfel

1 ssh [email protected] mkdir .ssh3 cd .ssh4 ssh-keygen -t rsa -b 2048 -f openstack.key -C "openstack-ssh-key"

În acest moment în directorul /.ssh ar trebui sa existe 2 fis, iere:

• openstack.key – cheia privata

• openstack.key.pub – cheia publica

CAPITOLUL 14. MAS, INI VIRTUALE 269

Figura 14.14: Dashboard-ul Openstack

14.6.3 Crearea unui keypair

Un keypair reprezinta o asociere între un nume s, i o cheie publica. În Openstack, cheiapublica se va identifica printr-un nume, specificat la creare. Cheia publica creata lapasul anterior trebuie încarcata în Openstack. Acest lucru se face din OpenstackDashboard -> Project -> Compute -> Access & Security -> Key Pairs -> Import Key Pair(vezi Figura 14.15).

Figura 14.15: Alegerea unui keypair la crearea unei instant,e

14.6.4 Crearea unei mas, ini virtuale

Crearea unei masini virtuale se poate face atât din Openstack Dashboard cât s, i din liniade comanda. În acest tutorial va fi prezentata varianta folosind Openstack Dashboard.

270 INTRODUCERE ÎN SISTEME DE OPERARE

Pentru a lansa o instant,a, accesat, i Openstack Dashboard -> Project -> Compute ->Instances -> Launch Instance (vezi Figura 14.16)

Figura 14.16: Crearea unei instant,e Openstack

În exemplul de fat,a, am folosit template-ul “Ubuntu 14.04”. Un flavor reprezinta marimeaunei instant,e virtuale din punct de vedere al resurselor: numar de procesoare, memories, i spatiu pe disk. Din tabul Access & Security, aleget, i Keypair-ul creat anterior (veziFigura 14.17). În final, apasat, i pe Launch pentru a crea mas, ina virtuala.

Figura 14.17: Importarea unei perechi de chei în Openstack

14.6.5 Accesarea masinii virtuale

Accesarea mas, inii virtuale se va face prin ssh de pe fep.grid.pub.ro astfel:

1 ssh [email protected] ssh -i ~/.ssh/openstack.key [email protected] #(in cazul de fata)

Adresa IP 10.9.0.138 reprezinta adresa publica a mas, inii virtuale (vezi Figura 14.18). Omas, ina virtuala se va accesa întotdeauna folosind adresa publica. Aceasta va fi din clasa10.9.0.0/16 în cazul instalarii Openstack din facultate. Utilizatorul folosit la autentificare

CAPITOLUL 14. MAS, INI VIRTUALE 271

Figura 14.18: Informat, ii despre mas, ina virtuala

este student. Pentru alte template-uri gasiti aici lista cu username-urile pentru fiecaretemplate: https://cloud.curs.pub.ro/2014/12/17/username-uri-implicite/.

14.6.6 S, tergerea masinii virtuale

Odata ce at, i finalizat procesul de folosire a mas, inii virtuale trebuie sa o s, terget, i peaceasta. Acest lucru se face folosind butonul Terminate Instance, dupa ce at, i selectatinstant,a pe care dorit, i sa o s, terget, i. În urma apasarii butonului Terminate Instance toatedatele stocate în acea instant,a se vor pierde.

14.7 Anexa: Rularea unui sistem de operare compilatpentru ARM pe x86

Pentru rularea unui sisteme de operare compilat pentru arhitectura ARM pe un sistemde operare ce ruleaza pe o arhitectura x86, avem nevoie de un emulator. Vom folosiemulatorul qemu ce are suportul de emulare pentru arhitectura ARM. Vom instalaaplicat, ia (comanda este valida pe un sistem Debian-based):

1 student@uso~:$ sudo apt-get install qemu qemu-kvm qemu-system-arm

Pentru a rula un sistem de operare, avem nevoie de un nucleu (kernel) precum s, i de unbinarele aferente (sistemul de fis, iere). O imagine de kernel Linux pentru arhitecturaARM se poate descarca de la adresa http://uso.cs.pub.ro/virtualizare/kernel-qemu.Pentru sistemul de fis, iere vom folosi o imagine de numita Raspbian (mas, ina virtuala deDebian care merge pe un sistem de fis, iere tip Raspberry Pi), descarcabila de la adresahttp://uso.cs.pub.ro/virtualizare/2012-10-28-wheezy-raspbian.zip. Dupa ce descacat, ifis, ierul, îl dezarhivat, i pentru a obt, ine sistemul de fis, iere. Vom porni sistemul de operarefolosind urmatoarea comanda:

1 student@uso~:$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -Mversatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1

rootfstype=ext4 rw" -hda 2012-10-28-wheezy-raspbian.img

Printre parametrii relevant, i folosit, i în comanda, putem enumera:

• -kernel - specifica imaginea de kernel de va rula

• -cpu - specifica modelul procesorului pe care îl va emula

• -m - defines, te cantitatea de memorie ce va fi alocata

• -hda - specifica imaginea sistemului de fis, iere ce va fi utilizata

272 INTRODUCERE ÎN SISTEME DE OPERARE

În Figura 14.19 se observa cum booteza sistemul de operare emulat. Pornirea acestuiadureaza în jur de 60 de secunde, mai lent decât pornirea unei mas, ini virtuale (30secunde).

Figura 14.19: Pornirea unui sistem de operare emulate

Pentru a va autentifica în consola sistemului de operare emulat, folosit, i utilizatorul pi s, iparola raspberry :

1 raspberry pi login: pi2 Password:3 ...4 pi@raspberrypi:~$

Dorim sa comparam performant,a unui sistem virtualizat cu ce a unuia emulat. Vomconsidera urmatorul fis, er sursa:

1 int main()2 {3 int i;4

5

6 for (i=0; i<1000000; i++)7 i++;8 }

Vom masura durata timpului de compilare pe un sistem emulat:

1 pi@raspberrypi:~$ time gcc test.c2

3

4 real 0m1.103s5 user 0m0.800s6 sys 0m0.280s

Pentru un sistem virtualizat durata compilarii este:

1 [root@monitor ~]# time gcc test.c2

CAPITOLUL 14. MAS, INI VIRTUALE 273

3

4 real 0m0.077s5 user 0m0.036s6 sys 0m0.028s

Se observa ca pe un sistem de operare virtualizat, operat, ia de compilare s-a executatmult mai rapid (a durat 77ms), iar pe un sistem emulat a durat compilarea aceluias, i fis, iermai mult de o secunda. Acest lucru se întâmpla din cauza faptului ca fiecare instruct, iunitrebuie interpretata de catre emulator.


Recommended