Software pentru masini virtuale

AdrianB1

Membru Senior
Sugar daddy
Exista o categorie de software proiectata pentru uz special, dar utila si pentru utilizarea acasa. E vorba de software de virtualizare, gen VMware sau MS Virtual Server.

Ce face: emuleaza pe un computer real mai multe computere virtuale, fiecare cu memorie, discuri, sisteme de operare si aplicatii proprii. Acestea pot rula simultan si independent.

Limitari: memoria fizica a computerului real este impartita la masinile virtuale. Daca aveti doar 256 MB RAM nu puteti instala 3 instante de MS Windows Server 2003. De asemenea discul este impartit, dar in general capacitatea unui disc modern este suficienta pentru citeva masini virtuale.

Cerinte:
- difera de la o solutie la alta, dar important este ca memoria disponibila sa fie suficienta pentru masinile virtuale emulate

Posibile utilizari:
- pentru rularea unor aplicatii mai vechi ce necesita o anumita versiune de Windows (95,98) fara sa folositi dual-boot (poate mai aveti si altceva de facut in acest timp)
- pentru programatori, la testarea aplicatiilor pe mai multe platforme fara pierderea de timp data de boot/shutdown in fiecare OS in parte
- pentru useri care vor sa invete un OS nou (ex. Linux) fara sa riste sa faca praf totul cu o configurare gresita a discurilor
- pentru rularea simultana, dar izolata, a unor servere nu foarte pretentioase (ex. daca aveti 2-3 servere cu cite o aplicatie dedicata - telefonie, voice-mail, un mic site de web) in conditii de siguranta.
- pentru agregarea unor servere mai vechi pe o masina noua si puternica (multi-procesor, mult RAM) cu consum de spatiu si energie mai redus. In multe cazuri spatiul din datacenter costa mult.

Tocmai am instalat si incercat MS Virtual Server 2005 Enterprise Edition (trial version, 180 zile) pe o masina cu Windows XP Professional si 512 MB RAM. Evident, nu este genul de computer pentru un mediu de productie, dar este perfect pentru o evaluare.
Am instalat Windows Millennium (era la indemina) si tocmai instalez si Windows 98 (ca sa testez o aplicatie mai veche in Access 2). Viteza este pina acum buna, iar compatibilitatea de asemenea. Am alocat 256 MB RAM (o sa il reduc la 128), 2 unitati CD-ROM si un HDD de 2 GB masinii cu Windows ME si le vede corect. Ce e mai ciudat este ce configuratie hardware raporteaza in Device Manager: chipset i440BX (in loc de Via KT400), retea Intel 21140 (Broadcom), mouse PS/2 (Intellimouse USB) si video S3 Trio 32/64 PCI (nVidia FX 5200).

Partile rele descoperite pina acum sunt:
- nu exista suport pentru placa de sunet ("none detected")
- nu exista suport pentru dispozitive USB (nu vede controller-ul).

Mai foloseste cineva acest tip de tehnologie? Daca da, in ce conditii si cum se comporta? Exista probleme de compatibilitate sau performanta?
 
Maşinile virtuale emulează hardware, nu îl clonează pe cel curent. Majoritatea device-urilor în maşina virtuală sunt diferite de cele din maşina reală.

Eu am folosit destul de mult VMWare. Cel puţin pentru dezvoltarea de drivere e mană cerească o astfel de maşină virtuală, nefiind necesară rebootarea sistemului la orice bug/blue screen/kernel panic (există snapshots), iar fişierele pot fi ţinute pe sistemul gazdă, pentru a nu fi corupte la blocări. În general linux-ul îl ţin în maşină virtuală, nu îmi place să rebootez calculatorul, doar când pică curentul. O maşină virtuală şi câteva putty-uri mi se par suficiente pentru ce am avut nevoie până acum în linux.

Maşinile se pot şi suspenda, făcându-se un fel de hibernare, starea fiind salvată şi maşina oprită, sau se pot face snapshot-uri, fiind salvată starea curentă pentru a se putea reveni la ea. Lucrul cu snapshot-uri e "la noroc" când e vorba de lucrul în reţea (share-uri, logări externe ssh), uneori pierzându-se sincronizarea sau conexiunea.

Fără 512 MB RAM nu e deloc uşor să lucrezi cu maşini virtuale, dar depinde de sistemul de operare instalat virtual. Un linux minimal sau Win 95 se descurcă şi cu 32 MB RAM, însă unui X sau 2003 îi trebuie mult mai mult. Memoria ocupată efectiv de emulator este în jur de 30 de MB. Consumul de procesor al unui proces virtual este doar puţin peste nevoile normale ale aplicaţiilor rulate.

Ca device-uri emulate, placa grafică este "producţie proprie", VMWare SVGA II, cu 16 MB RAM, şi suportă rezoluţii foarte mari (2300x1700). Placa de bază este tot 440 BX. Placa de reţea este AMD, de 100 Mbps. VMWare ştie şi sunet, emulând o Creative ES1371.

Un pachet de unelte (VMWare Tools) ajută sistemul virtual să păstreze într-un fel legătura cu sistemul gazdă. Se pot seta device-uri direct din sistemul virtual sau sincronizarea timpului vm cu timpul maşinii reale.

Am instalat tot felul de sisteme de operare pe maşina virtuală. La linux-uri e uneori importantă versiunea de kernel pentru instalarea vmware tools şi trebuie instalate sursele kernel-ului. Fedora nu se împacă cu modul DMA emulat, dar 2 minute pe google te învaţă parametrii de instalare.

Există mici incompatibilităţi, dar nimeni nu e perfect. Lucrând la un driver de serială, direct în regiştrii COM-ului, sincronizarea nu reuşea, chiar dacă porturile erau mapate peste COM-urile reale. În rest am mai observat probleme la partea de snapshots, uneori nu mai porneşte maşina virtuală la încărcarea unui snapshot. Însă dacă stăm să ne gândim ce înseamnă emularea unui întreg calculator, aceste probleme sunt infime.
 
Şi eu m-am jucat cu VMWare şi cu Fedora Core. S-a instalat ok, n-au fost probleme, aveam X fără să apelez la VMWare tools. Din păcate se mişca destul de greu (am doar 384 MB de rami) aşa că am renunţat destul de repede. Nu am avut vreme să văd cum se comportă în relaţia cu perifericele. Pe partea de reţea, am remarcat că poate folosi placa de reţea a sistemului „mamă” sau poate simula o altă placă de reţea cu IP diferit apărând astfel două IP-uri.
 
Sa zicem ca am 2 partitii bootabile cu un Windows si un Linux si ca folosesc un boot manager sa comut intre ele la pornirea calculatorului. Sa zicem ca sunt in Windows si downloadez ceva mare si important si in acelasi timp am nevoie urgenta sa bootez Linux-ul. Exista vreun emulator de masina virtuala care sa-mi porneasca Linux-ul instalat in cealalta partitie in timp ce rulez Windows (sau invers)? Hardware-ul masinii virtuale trebuie sa fie obligatoriu identic cu ce am in calc. Logic, nu?
 
Mai întâi, nu cred că poţi avea două partiţii bootabile (as in ambele să aibă setat bootable flag). Una e bootabilă şi pe ea e boot manageru. Apoi, treaba cu hardware-ul maşinii virtuale nu cred să fie posibilă, dar eu m-am jucat doar cu VMware. Mai vezi cum stă treaba cu qemu, Xen şi care-or mai fi.
 
Nu cred ca exista masina virtuala care sa emuleze hardware-ul actual. Masinile virtuale din cate stiu eu (tot cu VMWare m-am jucat) emuleaza ceva generic, deci e practic imposibil sa se pupe cu ce ai tu.
 
Parca puteai sa setezi o partitie reala pentru VMWare, in care caz, in principiu, ar trebui sa poti boot-a sistemul de operare de acolo. Dar din cate tin minte mie mi-a crapat Linuxul cand am incercat treaba asta.
 
Eu sunt curios de altceva. Vreau să instalez câteva sisteme de operare: un Server 2003 şi 4-5 Windows XP Pro ca maşini virtuale. Întrebarea de 100 de puncte este următoarea: pot face astfel încât aceste maşini vortuale să formeze o reţea? Mă refer la posibilitatea ca aceste maşini virtuale să se "vadă" una pe cealaltă într-o "reţea" (un workgroup, IP-uri intranet, etc.).
 
Da. Instalezi, by default DHCP (şi NAT) e pornit, le setezi să-şi ia IP-ul dinamic şi voila. La mine, guest-ul îşi ia 192.168.42.128 (iarăşi, default), dar poate fi schimbat.

Nu am încercat cu mai multe să văd dacă se „văd” între ele, dar nu văd de ce nu ar merge. Oricum sunt o grămadă de setări la partea de networking.
 
Cu VMWare se pot porni mai multe masini virtuale in acelasi timp si sa setezi la fiecare reteaua, iar ele vor comunica intre ele fara nici o problema.
Se poate configura in asa fel incat sa comunice si cu PC-ul pe care este instalat VMWare, iar netul va fi furnizat de PC-ul gazda.
 
Se pare ca nu numai Intel investeste in VMWare, ci si Cisco.
It’s paying a proper chunk of cash but these days $150 million only buys you a little bit of the master of the x86 virtualisation universe –- 1.6 percent to be precise.
 
Last edited by a moderator:
Dupa ceva experienta acumulata in VMware server (cateva zeci de masini virtuale pe cateva masini gazda), si un pic de MS Virtual Server 2005/Virtual PC 2004/VPC 2007, revin cu scurte impresii:
- VMware Server functioneaza decent, versiunea curenta (1.03) are inca buguri la afisarea consolelor, input multiplu de la tastatura (apesi o tasta si apare de 2-3 ori), consola de administrare intepeneste la masini corupte
- performanta e decenta, nimic mai mult
- memoria alocata masinilor e dinamica (o masina care are alocati 2 GB de RAM poate ocupa doar 200 MB daca nu ii foloseste)
- consola de administrare nu e cea mai prietenoasa cu putinta - nu se pot sorta masinile virtuale in lista (nici macar alfabetic) si daca sunt multe masini cu nume similare iese ceva haos; utilitarele de administrare a discurilor virtuale sunt bine ascunse, nu apar in nici o consola; migrarea masinilor de pe o gazda pe alta sau pe aceeasi gazda de pe un disc pe altul se face exclusiv manual
- e stabil, nici o masina virtuala nu a afectat alta masina virtuala sau serverul gazda
- nu se pot crea masini virtuale cu mai mult de 3.6 GB de RAM chiar sub OS pe 64 de biti si RAM suficient (zeci de GB fizic)
- masinile virtuale multiprocesor (doar 2 procesoare) consuma resurse pe procesorul gazda disproportionat fata de cele uniprocesor: cele UP cam 1% in idle, cele SMP cam 10-15% in idle per VM
- nu se pot aloca/mapa procesoarele masinilor virtuale pe cele ale masinii gazda si nici limite de incarcare
- suportul free e aproape inexistent, dar buguri sunt inca destule

Pentru cine are nevoie de toate facilitatile ce apar ca lipsuri mai sus, iar incarcarea nu e prea mare (max 3-4 VM uni-procesor per server), Virtual Server 2005 R2 poate fi o solutie mai buna. Pentru cine are nevoie de multe masini per gazda (chiar si 15-20) si stabilitate, VMware parca e mai potrivit. Fiecare nevoie are cate o solutie :smile: Cel mai placut insa pare VPC 2007, cu bugurile lui cu tot - hardware virtualization support included.
 
Că veni vorba, Microsoft a publicat Virtual Server 2005 R2 SP1 în 11 iunie, „leveraging hardware-assisted technology and enhanced support”.

Limitarea de 3,6 GB de memorie alocabilă pe maşină virtuală există şi în Virtual Server 2005 (R2).
 
Daca vrei viteza, stabilitate si toate uneltele de administrare pentru VMware atunci trebuie sa folosesti VMware Infrastructure 3. Este un produs absolut superb care functioneaza extrem de bine si care nu are problemele care au fost mentionate la VMware Server dar care are un singur dezavantaj: licenta costa multicel (spre deosebire de varianta VMware Server care este free).
 
Din niste teste ale celor de la VMware, in functie de ceea ce ruleaza in masina virtuala folosirea suportului hardware pentru virtualizare aduce beneficii sau nu. Poate fi mai lenta sau mai rapida pentru ca suportul hardware e incomplet, se accelereaza unele operatii dar nu sunt suportate altele si compensarea software uneori e mai lenta decat daca s-ar face totul software. Astept cu interes generatia noua de virtualizare hardware si soft care sa o foloseasca.

VI3 e in teste acum, dar problema e ca desi costa (nu prea mult, cam $5.000 per server) are destule buguri la randul lui si fiind bazat pe Linux ("badly hacked 2.4 Linux kernel", dupa cum spun unii) unele operatii sunt mai ... diferite. Curba de invatare poate fi costisitoare pentru un tehnician care are in grija o mica ferma de servere de virtualizare, daca masinile virtuale sunt Windows si VI3 Linux poate deveni nerentabil economic (un tehnician bun la ambele e mai scump). In septembrie sunt asteptate o serie de bug-fixuri sau chiar un minor version update, voi vedea atunci cum stau lucrurile.

Ultimele observatii in VMware server:
- implicit masinile virtuale ruleaza in contul utilizatorului care le-a creat. La Logoff masinile se opresc (POWER OFF). Foarte util pe un shared host :biggrin:
- functia de "memory trimming" care face ca memoria nefolosita de o VM sa revina OS gazda poate produce scaderi de performanta serioase datorita IO generat de ajustarea constanta, accesul concurent la memoria sistemului gazda si fragmentarea memoriei. De asemenea scaderea de performanta se observa si la masina virtuala care incepe sa ruleze ceva si are nevoie de RAM inapoi. Din fericire, se poate dezactiva manual per masina virtuala.
 
Tocmai am intalnit cea mai mare ciudatenie din ultima vreme in materie de computere si benchmarking: masini virtuale mai rapide decat masina fizica pe care ruleaza.

Configuratia de lucru:
- server cu ESX 3.0.2, dual-socket dual-core Opteron 2.6 Ghz, 16 GB RAM. Numit in continuare Host1.
- server identic cu Host1, doar ca are instalat Windows 2003 SP2 x64, folosit ca referinta in unele teste. Numit Host2
- server aproape identic cu Host1 si Host2, doar procesoarele la 2.8 Ghz; OS=Windows 2003 SP2 x64, VMware Server 1.0.4. Numit Host3
- masina virtuala VM1: 768 MB RAM, 1-2-4 CPU (la alegere), OS Windows 2003 SP2 x86, ruleaza pe Host1 sub ESX
- masina virtuala VM2: configuratie identica cu VM1 (clona, de fapt), ruleaza pe Host 3 sub VMware Server

Programe de test folosite (nu prea bune, dar erau la indemana):
- Performance test 6.1, testele: CPU, Disk, Memory, scorurile agregate
- Virtual Dub 1.7.5 x86 cu DivX PRO 6.7 (profil default Home Theatre, Codec compresion: Insane), fisier sursa cam 120 MB format DV

Rezultate encoding cu 1 si 2 procesoare, in minute:secunde:
1 CPU:
- VM2: 0:54
- VM1: 1:51 !!!!
2 CPU:
- VM2: 0:48
- VM1: 1:09
- Host2:
- Host3: 0:54
4 CPU:
- VM1: 0:57
- Host3: 0:53

In Performance Test V6.1 aceeasi situatie, cifrele nu au nici o logica. Daca aveti idei despre alte aplicatii de benchmark mai stabile sau mai relevante si care merg pe Terminal Server sau Remote Desktop (deci, fara 3D sau DirectX) as fi incantat sa mai fac niste teste. Ca observatie desi ruleaza pe un host un pic mai lent masina virtuala VM1 se mica mai bine la nivel de boot time sau shutdown decat VM2, dar diferenta uriasa intre ele la encoding nu are nici o explicatie. Inca :biggrin:
 
Poate în VM, DivX foloseşte nişte instrucţiuni diferite, gen SSE (puţin probabil) sau realizează sarcini diferite atunci când detectează VM-ul (mai probabil). Sau doar în VM e folosit al doilea core.
 
Misterul a fost in mare rezolvat: se pare ca ceasul VM2 sub VMware server are un ritm ... propriu :biggrin: Cele 54 de secunde de uniprocesor si 49 in dualprocesor sunt in realitate (masurate cu un cronometru pe un alt computer) ~1:50 si respectiv ~1:20. Am descoperit asta cand am vazut ca ceasul sistemului ramane serios in urma dupa o runda de encoding.

Ramane deschisa sugestia de a veni cu idei de benchmarking. Mai ales ca urmeaza sa schimb o parte din procesoare cu Barcelona, in functie de nevoi si de frecventele disponibile pe piata (astept versiunea la 2.5 Ghz).
 
Nu e chiar VM, e software pentru desktop multiplier. În Linux asta înseamnă că trebuie să afişeze câte un X server pe fiecare monitor şi să ştie să trimită event-urile de mouse şi tastatură către serverul care trebuie. Problema se reduce la a porni două instanţe XFree86 în paralel, fiecare cu device-urile ei, iar soluţia lor nu este unica.
 
Back
Top