Aparitia programului VMWare Workstation in 1999 a adus un suflu nou in lumea IT si a rezolvat o serie de probleme introducand unele facilitati extrem de utile. De atunci, oferta de software-uri pentru virtualizare a crescut si majoritatea au si versiuni gratuite, mai mult sau mai putin limitate comparate cu versiunile comerciale. Pe langa solutiile VMware pe piata mai putem mentiona Microsoft VirtualPC, Sun VirtualBox si Parallels Workstation. Masinile virtuale ofera:
- posibilitatea de a rula mai multe sisteme de operare pe acelasi computer, simultan
- pentru testarea a diferite programe in medii diferite fara rebooturi
- pentru cresterea securitatii in anumite medii, un exemplu fiind analiza virusilor fara riscul contaminarii sistemului de baza (“host”)
- reducerea costurilor si cresterea eficientei energetice, prin folosirea unui singur echipament fizic pentru rularea concomitenta a mai multor masini virtuale separate
- solutii imbunatatite de disaster recovery
Mai mult, deoarece masinile virtuale pot interactiona la nivel de retea, pe un singur sistem fizic cu mai multe masini virtuale se pot crea miniretele (utile pentru testare sau diverse analize si simulari).
Vom folosi in cele ce urmeaza programul VirtualBox care este gratuit pentru utilizare personala si evaluare (necesita achizitionare doar in cazul folosirii in scopuri comerciale). Mai mult, exista si o versiune Open Source, sub licenta GPL, dar careia ii lipsesc cateva facilitati (suport USB, Remote Desktop, un controller Serial ATA mai eficient decat cel IDE din versiunea open source, etc). VirtualBox, creat si dezvoltat initial de compania InnoTek a fost achizitionat de Sun Microsystems in februarie 2008 si a devenit parte a platformei Sun de virtualizare, Sun xVM; sa trecem asadar la treaba.
Vom instala VirtualBox pe un sistem Windows (“host machine“) si apoi vom crea o masina virtuala cu Ubuntu Linux (“guest machine“). Pentru inceput downloadam VirtualBox si il instalam. Instalarea este de tip next-next, fara sa puna probleme. Trebuie doar sa stiti ca in timpul instalarii este posibila restartarea interfetei de retea, ceea ce va lasa fara conexiune cateva secunde (suparator doar daca in acest timp aveti vreun download activ).
Imediat dupa instalare, fara sa fie nevoie de reboot, sunteti intampinati de fereastra principala:
Putem incepe astfel crearea noii masini virtuale. Apasam “New” accesand astfel wizard-ul de configurare. Dam un nume masinii virtuale si alegem sistemul de operare care va rula in aceasta masina (se activeaza astfel automat anumite setari in functie de sistemul de operare guest, pentru o functionare optima a acestuia).
Urmeaza selectarea RAM-ului alocat masinii virtuale. Pe sistemul de test avem instalati 2GB RAM si vom oferi 512 MB din acestia masinii virtuale Ubuntu Linux.
Urmeaza crearea harddisk-ului virtual folosit de Linuxul guest. Acest harddisk virtual este doar un fisier normal in sistemul de operare host (Windows in cazul nostru), virtualbox fiind o interfata intre sistemul guest (Linux) care vede practic un harddisk si il trateaza ca atare si sistemul de operare host (Windows) care vede un simplu fisier de x GB. Implicit nu este creat nici un harddisk virtual, deci vom apasa “New..” pentru crearea unuia (daca am mai folosit VirtualBox sau alte programe de virtualizare compatibile, avem posibilitatea sa folosim un harddisk virtual creat anterior pentru alta masina, lucru extrem de util pentru crearea mai multor masini identice sau crearea unei masini template). In noul wizard aparut (de creare a unui harddisk virtual) avem acum de ales intre 2 tipuri de harddisk virtual: cu crestere dinamica sau de marime fixa.
Harddisk-urile virtuale dinamice ocupa spatiu doar cat este necesar sistemului din masina virtuala, acesta fiind alocat dinamic in functie de necesitati (doar in crestere, pana la limita pe care o vom preciza.. daca stergem fisiere din sistemul guest, marimea fisierului in care este tinut harddiskul virtual nu va scadea). A doua setare permite inca din momentul crearii harddiskului virtual alocarea intregului spatiu cerut. Vom folosi prima varianta in acest caz, specificand apoi marimea harddiskului virtual (15GB).Bineinteles, acesta trebuie plasat pe o partitie pe care avem liber acest spatiu, chiar daca nu il vom aloca initial pe tot.
Apoi apasam Next si Finish, intorcandu-ne in wizardul de creare a masinii virtuale. Alegand varianta dinamica de harddisk virtual, vom avea in acest moment pe harddisk un fisier de doar 61952 bytes. In momentul rularii si instalarii Linux-ului, bineinteles ca acest fisier va creste in marime in functie de cerintele de spatiu ale acestui SO. Ar mai fi de amintit faptul ca oricand putem adauga unei masini virtuale mai multe harddisk-uri, dar nu putem face asta din acest wizard, ci ulterior.
Dupa ce apasam “Next” si in ecranul unde este selectat noul disk creat, nu mai avem decat de verificat setarile alese si cu “Finish” cream masina virtuala.
Putem verifica in acest moment configuratia de baza a masinii virtuale create de wizard. De asemenea, observam si un buton Snapshots cu care putem accesa diverse stari ale masinii virtuale salvate anterior (pot fi asimilate unor salvari de jocuri).
Observam ca nu avem instalat nici o unitate CD/DVD-ROM, si vom avea nevoie deoarece vom instala Ubuntu Linux de pe o unitate CDROM (sau cel putin asta va crede Linuxul respectiv :). Mai observam ca este dezactivat suportul audio si il vom activa si pe acesta, iar placa de retea a masinii virtuale deja este instalata, in modul NAT, noi preferand modul bridged. Sa le luam pe rand.
Apasam “Settings” pentru a avea acces la setarile avansate si configuratia hardware a masinii virtuale, apoi CD/DVD-ROM. Putem alege sa facem instalarea de pe o unitate a sistemului nostru, daca avem deja un cd bootabil. In acest caz nu ramane decat sa alegem ce unitate din sistemul nostru va putea fi accesata din sistemul guest. Pentru a face lucrurile mai interesante, am downloadat o imagine .iso de Ubuntu Linux 8.10, si o vom folosi pe aceasta ca un fel de CD-ROM virtual (asa cum si alte utilitare de genul Daemon Tools fac). In acest caz, selectam “ISO Image File” si apoi calea catre fisierul .iso. Linuxului din sistemul guest i se va raporta practic o unitate de CDROM cu un CD bootabil inserat. Bineinteles, ulterior dupa instalare putem oricand sa modificam aceasta setare, pentru a putea accesa de pe Linuxul nostru o unitate fizica de CD/DVD de exemplu.
Pentru specificarea imaginii .iso alegem butonul de browse din dreapta
In fereastra aparuta alegem “Add” si apoi fisierul .iso downloadat. Incheiem acest proces cu butonul “Select”. Urmatorul pas este activarea audio in sistemul guest. Sistemul virtual nu va “vedea” direct placa de sunet a sistemului fizic, ci i se va pune la dispozitie de catre VirtualBox o placa mai generica si mai simplu de emulat si controlat de catre software-ul de virtualizare. Avem la dispozitie variantele AC97 si Soundblaster 16, acestea fiind 2 controlere audio extrem de populare si suportate de orice SO actual. Vom alege Windows DirectSound si AC97.
Urmatorul pas, placa de retea. Aici avem putin de discutat variantele puse la dispozitie de VirtualBox. Unui sistem virtual ii putem adauga pana la 4 placi de retea virtuale (facilitate foarte utila atunci cand dorim sa cream o retea virtuala cu mai multe sisteme virtuale conectate pe care sa testam diverse lucruri). Fiecare placa poate fi intr-unul din urmatoarele moduri:
- Not attached – placa de retea din sistemul guest nu va fi atasata sistemului fizic (deci nu va putea accesa nimic practic din lumea reala, este doar prezenta si atat).
- NAT – setare implicita – sistemul guest (Linux in cazul nostru) va putea accesa prin placa de retea orice alt calculator fizic conectat la reteaua reala, sau Internetul, dar i se va face Network Address Translation de catre VirtualBox (va avea astfel o adresa privata si VirtualBox va actiona ca un router cu NAT pentru a translata aceasta adresa privata in adresa IP de pe placa de retea fizica a sistemului nostru). Cum deja sistemul meu fizic acceseaza Internetul printr-un router care face NAT, nu voi alege aceasta varianta.
- Host interface – acesta se mai numeste modul Bridged (in VMWare de exemplu). Astfel, placa de retea virtuala este legata direct in placa de retea fizica, ca si cum ar intra ambele intr-un switch. Astfel, are acces direct la reteaua noastra fizica ca si cum ar fi un alt calculator conectat direct. Orice pachet trimis de sistemul guest, virtual, pe aceasta placa va pleca direct pe placa de retea fizica si apoi in retea, orice pachet care intra in placa de retea fizica si este destinat masinii virtuale ii va fi livrat acesteia in mod transparent. Aceasta este cea mai simpla modalitate de a avea acces la retea din mediul virtual, dar exista cazuri cand nu se poate aplica (daca aveti alocat de la providerul de internet un singur IP si iesiti direct in internet folosind acest IP, fara un router intermediar, nu veti putea folosi aceasta setare, pentru ca ati avea nevoie de inca un IP de la provider, ca si cum ati mai avea un alt PC instalat pe aceeasi conexiune Internet). Atentie ! Daca aveti PC-ul intr-o retea cu IP-uri publice conectata la Internet in mod direct, o masina virtuala cu Windows nou instalat va fi foarte vulnerabila datorita acestui acces direct! Firewall-ul de pe sistemul fizic nu o va putea proteja, si stim deja cat de repede se poate infecta un Windows nou instalat si cu acces direct la Internet, pana sunt facute update-urile de securitate etc.
- Internal Network – pot fi create in VirtualBox mini-retele virtuale interne sistemului fizic (le putem zice mini switch-uri) la care putem conecta dupa preferinta mai multe masini virtuale pentru a putea interactiona intr-un mediu izolat.
Si placa de retea emulata poate fi aleasa, cea implicita, PCnet-FAST III fiind suficienta pentru ceea ce avem nevoie (exista si posibilitatea emularii unor placi Intel Gigabit). Daca avem mai multe placi de retea fizice, vom selecta si placa de retea fizica de care vrem sa legam placa de retea virtuala.
Mai putem selecta din optiuni in functie de nevoi crearea unor porturi seriale (util de exemplu daca dorim sa accesam un port serial fizic din sistemul guest), accesul la device-uri USB (nu strica sa putem avea acces si din sistemul guest la un flash-disk de exemplu), crearea unor asa-numite “Shared Folders”, niste directoare pe sistemul fizic la care sistemul virtual va avea acces direct precum si activarea facilitatii de Remote Desktop (prin care putem accesa oricare din masinile virtuale existente prin remote desktop, de pe alt PC). Configurarea se incheie cu OK, si putem apoi incepe instalarea, folosind “Start” pentru pornirea masinii virtuale.
In treacat mai suntem anuntati si de faptul ca putem folosi oricand tasta implicita din VirtualBox, RightCtrl (tasta Control din dreapta) pentru a “iesi” dintr-o masina virtuala, pentru ca in momentul in care facem click in fereastra unei masini virtuale, tastatura si mouse-ul sunt “capturate” de VirtualBox si puse la dispozitia sistemului guest, majoritatea shortcuturilor din Windows fiindu-ne inaccesibile in acest moment. Aceeasi tasta, RightCtrl (numita si Host Key de VirtualBox) e folosita in multe shortcut-uri, de exemplu RightCtrl-F pentru FullScreen. Ulterior se pot instala in sistemul virtual cateva asa-numite “Guest additions”, cateva programe utile care printre altele usureaza interactiunea noastra cu sistemul Guest.
In acest moment totul este pregatit si instalarea Linux-ului poate incepe. In momentul partitionarii este posibil sa aveti o strangere de inima cand selectati formatarea harddisk-ului, dar va reamintesc ca este vorba de un harddisk virtual, care pentru Windowsul nostru este un simplu fisier. “Formatarea” sa nu are nici un efect asupra sistemului Host, cel putin daca ati urmarit pas cu pas acest tutorial. Bineinteles, exista posibilitatea si adaugarii unui harddisk fizic ca si harddisk in cadrul sistemului guest, caz in care harddiskul va fi accesat/formatat/partitionat in mod direct, dar NU faceti niciodata acest lucru daca nu aveti experienta necesara sau daca aveti date utile pe harddiskul respectiv. In plus, veti vedea ca pe masura ce Linuxul se instaleaza, marimea fisierului in care se afla harddiskul virtual va creste, un lucru bineinteles normal.
Daca ati ajuns pana aici, ati parcurs practic aproape tot drumul catre o masina virtuala functionala. Tot ce ramane este sa mai optimizam putin instalarea si sa exploram cateva facilitati interesante.
Imediat dupa instalare, daca ati rebootat fara sa deconectati CDROM-ul virtual, masina virtuala va boota tot de pe acest CD (de pe .iso-ul nostru). Pentru “scoaterea” din unitate imaginii .iso, alegeti “Devices -> Unmount CD/DVD-ROM” si eventual resetati sistemul virtual (Machine -> Reset). Uneori este posibil ca setarea sa nu fie luata in considerare, asa ca este mai sigur sa inchideti masina virtuala (Machine -> Close urmat de optiunea “Power Off”) si din Settings sa deconectati unitatea CD/DVD virtuala, sau sa o legati de o unitate fizica a sistemului daca veti avea nevoie de acces la CD/DVD din masina virtuala.
Vom descrie in cele ce urmeaza cateva din facilitatile interesante pe care le mai avem la dispozitie.
Prima din ele, accesul transparent la tastatura/mouse in masina virtuala, folosind Guest Additions. Dupa cum ati observat, in momentul in care masina virtuala preia controlul tastaturii si mouse-ului, acestea nu mai pot fi folosite in sistemul host pana la apasarea Host Key (“RightCtrl”). Vom instala acum un pachet de utilitare care contin si o rezolvare pentru aceasta situatie. Dupa alegerea optiunii “Devices -> Install Guest Additions” din meniu, VirtualBox va “introduce” in cdrom-ul virtual al sistemului guest un CD cu aceste utilitare. In Ubuntu Linux, CD-ul va fi recunoscut automat dar din pacate nu va rula automat utilitarul corect astfel ca vom recurge la command line. Deschidem un terminal, accesam directorul in care este montat CD-ul cu additions si rulam cu drept de root executabilul “VBoxLinuxAdditions-x86.run”. Acesta va compila modulele de kernel necesare, va adauga un driver video imbunatatit pentru X11, etc. Dupa executarea cu succes, vom reboota (folositi functia reboot din sistemul guest pe cat posibil intotdeauna, folosind Reset sau Power Off din VirtualBox doar daca aveti probleme cu sistemul guest care va impiedica sa folositi functiile sale de reboot/poweroff; nu uitati ca sistemul virtual este afectat de un poweroff din VirtualBox tot atat de mult pe cat un sistem de pe o masina fizica este afectat de oprirea brusca a alimentarii sistemului).
Linux va reporni intr-o rezolutie mai mare (datorita driverului nou instalat prin Guest Additions) dar din pacate desi ar trebui sa functioneze optiunea “Mouse Integration”, aceasta nu va fi disponibila. Putem rezolva aceasta problema editand ca root fisierul /etc/X11/xorg.conf si adaugand urmatoarele linii:
Section "InputDevice" Identifier "Configured Mouse" Driver "vboxmouse" Option "CorePointer" EndSection
Dupa modificare si salvare, rebootati. Functia va fi functionala si nu va mai fi nevoie de “RightCtrl” pentru scoaterea mouse-ului din masina virtuala (functia functioneaza doar atat timp cat X este pornit si activ, veti primi un warning daca iesiti in consola sau cand dati shutdown).
Un feature extrem de interesant pe care as mai vrea sa-l amintesc sunt Snapshot-urile. Acestea dau posibilitatea capturarii unui anumit moment din rularea unei masini virtuale (incluzand continut RAM, HDD, etc) si posibilitatea reintoarcerii oricand la aceasta stare. De exemplu imediat dupa instalare puteti face un snapshot (daca masina virtuala ruleaza, meniul Machine -> Take Snapshot) si apoi puteti strica orice din sistemul guest respectiv. Oricand va veti putea intoarce la starea salvata (din fereastra principala a VirtualBox, sectiunea Snapshots) daca lucrurile nu au mers chiar ok. Atentie, si continutul harddiskului este salvat, deci daca modificati ceva dupa salvarea unui snapshot, datele respective vor fi pierdute in momentul reincarcarii salvarii. Pentru detalii consultati Help-ul aplicatiei, unde puteti afla cum se poate atasa un HDD fizic unei masini virtuale, HDD al carui continut nu se salveaza in momentul unei salvari de snapshot.
Aici se incheie acest tutorial. Sper ca va va ajuta sa intrati in lumea virtualizarii, lume ce in mod sigur va influenta puternic IT-ul in urmatorii ani.
Salut,
Era interesant daca postai si o comparatie cu Vmware Server sau Vmware ESXI.
Oricum foarte bun articolul.
Felicitari!
Salut, ajuta-ma si pe mine cu ceva !! Vreau un program pentru Linux ca sa dau acces la cineva dar sa umbla doar intr-un singur Folder de ex: tine server de CSS la mine si eu foosesc platforma de Linux Ubuntu server fara interfata Deckstop
Multumesc !!!!
@Florin: din pacate nu am destul de multa experienta cu Vmware Server pentru a face o comparatie, dar nu ar strica sa ma uit pe asta. multumesc pentru aprecieri!
@Ciprian: nu am inteles exact de ce ai nevoie. pentru o solutie de virtualizare completa poti incerca Vserver (http://linux-vserver.org/Welcome_to_Linux-VServer.org), daca doar doresti ca unui user sa-i dai acces doar pe un folder, e de ajuns sa nu-i dai drept de write nicaieri in alta parte a sistemului (lucru care oricum e default pentru orice user pe Ubuntu). Sau poti sa aplici chroot in SSH pentru ca respectivul user sa aiba acces doar intr-un director la logare (acel director va fi directorul lui “/”). Pentru asta poti incepe de aici: http://linux-vserver.org/Welcome_to_Linux-VServer.org
am si eu o problema…am instal ubuntu in virtualbox…merge f bn problema este ca nu pot sa imi activez visual effects…zice ca nu am driverul pt placa video instalat….am incercat sa il intalez din hardware driveres dar nu mi-l gaseste….dak ma poate ajuta cineva va rog
ms mult!
@ktalinoo: VirtualBox pune la dispozitie linuxului din masina Guest (cel din masina virtuala) un sistem foarte basic cu hardware cunoscut dar nespecializat. Asta implica ca nu vei putea folosi (cel putin in viitorul apropiat) facilitati 3D (sau alte facilitati specializate) pe masina Guest. Linuxul acela nu vede direct placa ta video, orice tip sau performanta ar avea, ci o “vede” prin VirtualBox ca o placa video basic cu facilitati minimale de afisare, cel mult accelerare 2D.
Astfel virtualizeaza VirtualBox hardware-ul sistemului si asta ajuta enorm la faptul ca poti oricand sa iei o masina virtuala instalata pe un sistem si sa o rulezi _fara nici o problema_ pe orice alta configuratie pe care virtualbox ruleaza. Masina Guest va vedea mereu aceleasi componente hardware (virtuale).
mai nou (v3.x+) VB suporta si accelerare 2D/3D in guest. il ultima versiune de VB din ubuntu 10.04 (3.1.6) partea 2D inca nu este suportata decat in guest windows, dar cea 3D/OpenGL functioneaza ok cu linux.
http://tombuntu.com/index.php/2009/04/08/3d-acceleration-and-compiz-inside-virtualbox-guests/
thanks!