Virtuelizacija operativnih sistema

Kljucna rec prosle godine je virtuelizacija. Sta je u stvari virtuelizacija. Najlakse objasnjenje virtuelizacije je mogucnost pokretanja vise medjusobno nezavisnih operativnih sistema na jednom racunaru. Najcesci primer je pokretanje linux operativnog sistema po vec pokrenutim windowsom, gde bi linux bio u svakom pogledu nezavisan od HOST OS-a (to jest operativnog sistema koji je prvi pokrenut, u ovom slucaju windows-a).  Sto to zapravo znaci? Nezavisnost se ogleda u tome da aplikacije ili programi pokrenuti na jednom sistemu ne mogu uticati na rad drugog, pa pri recimo padu jednog virtuelnog operativnog sistema, posledice po druge virtuelne ili host OS ne bi postojale. Dakle stvar je ista kao kada biste imali 5 racunara na kojime bi se vrtelo 5 nezavisnih operativnih sistema. Naravno da stvar nije potpuno isto, jer u slucaju virtuelizacije racunar deli resurse (memoriju i storage) medju virtuelnih racunarima. U praksi performanse zavise naravno od kolicine resursa (memorije, brzine hard diska, prostora, broj procesora i sl.), kao i od vrste virtuelizacije. Postoje dve vrste virtuelizacije. PUNA virtuelizacija i PARA virtuelizacija. PUNA virtuelizacija podrazumeva simulaciju kompletnog hardvera, pa se GuestOS (operativni sistem koji pokrecemo na virtuelnoj masini) moze instalirati i izvrsavati bez izakvih promena. Hypervisor (iliti virtuelni manager) simulira kompletan hardver koji je potreban gostujucem OS-u da bi radio. Od graficke kartice do hard diskova, USB portova i drugih periferija. Ovakvo resenje je najelegantnije i najlakse za koriscenje, medjutim dolazi sa svojom cenom, a to je brzina. Dakle performanse ovakve konfiguracije su sporije zbog toga sto maticni procesor mora da simulira i dodatan hardver. PARA virtuelizacija za razliku od PUNE virtuelizacije podrazumeva sistem gde gostujuci OS (guestOS) komunicira sa  MAticnim OS-om (HostOS)  preko hypervizora (menadzerom virtuelizacije) te gostujuci OS podatke o hardveru dobija direktno od maticnog OS-a, te samim tim simulacija kompletnog hardvera nije potrebna, pa su performanse drasticno vece. U slucaju para virtuelizacije brzina gostujuceg sistema ne bi trebalo da bude sporija od 3-10% u odnosu na maticni OS-a. Medjutim brzina dolazi po ceni toga da gostujuci OS mora biti modifikovan (tako da moze da komunicira sa maticnim OS-om) pa je fleksibilnost takvog resenja mnogo manja.
    Postoji mnogo softvera cija je namena virtuelizacija danas na trzistu za sve glavne operativne sisteme, pa je u principu moguce napraviti bilo koju kombinaciju virtuelizacije. Linux kao host OS gde se u virtuelnim masinama vrste razne verzije Windows-a, DOS-a ili BSD operativnih sistema, ili kombinacije gde se na Windowsu kao maticnom sistemu vrste razne distribucije Linuxa za one koji zele da se po prvi put susretnu sa linuxom bez rizika ili komplikovanja instalacije istog na pravi hardver. Ono sto je takodje popularno je pokretanje istog operativnog sistema. Naprimer pokretanje jos jedne ili dvekopije Windows-a na maticnom windowsu, sto ima mnogo primena, jedna je ta da se internet veza odvija iskljucivo u virtuelnoj masini pa stoga svi virusi i spijunski softver ostaju na virtuelnoj masini, dok je maticna masina zasticena od istih. Cak i u slucaju da se virtuelna masina potpuno zarazi, vas maticni hard disk je potpuno siguran od zaraze, jer je kompletan hard disk virtuelne masine najcesce samo jedan fajl na maticnom hardu. Dovoljno je da obrisete taj fajl, ili dovucete kopiju cistog OS-a, i da nastavite sa radom. Dakle najpoznatiji programi za virtuelizaciju su sledeci: Vmware, xen, qemu, virtualbox, VirtualPC, Hyper-V, parallels i sl.. Moja iskustva su sa Vmwareom, Xen-om i QEMU-om pa cu se najvise zadrzati kod istih.
    Svrha virtuelizacije. Postoji vise razloga zbog kojih je virtuelizacija revolucionarna. Prosecnom desktop korisniku ona donosi pre svega fleksibilnost u koriscenju vise operativnih sistema, bez restarta ili naporne instalacije. Mogucnost da proba i testira bilo koji operativni sistema bez straha i rizika je svakako bitna, mejdutim pravi smisao virtuelizacije se ogleda tek u enterprise uslovima u pre svega velikih mreznih okruzenjima ISP-a (internet provajdera) i drugih firmi  koje pruzaju neku vrstu mreznih IT usluga. Naime do sada je u vecini slucajeva ceo racunar bio zauzet za jednog korisnika ili samo jedan servis. Virtuelizacija u ovom slucaju nam omogucava da na jednom fizickom racunaru omogucimo u zavisnosti od jacine istog nezavisan pristup i odrzavanje vise virtuelnih racunara gde bi svaki klijenat imao takodje nezavisan pristup svom virtuelnom racunaru. Osim organizacijskih usteda u vremenu i odrzavanju JEDNE umesto vise fizickih racunara i hardvera, takodje nisu zanemarljivi troskovi hladnjena i elektricne energije koje bismo ovakvim sistemima ustedeli. Zamislite sobu gde je umesto 100 pravih racunara sve smesteno u 10-ak gde se realno opet vrti 100 nezavisnih operativnih sistema. Dakle primene u ISP sektoru su visestruke i donose smanjenje troskova i vecu fleksibilnost, lakse odrzavanje.
    Licni razlozi. Kao coveka koji godinama istrazuje razne operativne sisteme i iz profesionalnih i iz hobi razloga, virtuelizacija je nacin preko koga mogu vrlo brzo na jednom racunaru testirati skoro neogranicen broj operativnih sistema bez dosadnog restarta. Dosadasnjih 10-ak fizickih racunara u sobi zamenio sam sa 4 jace fizicke koja mi u ovom trenutku zamenjuju oko 25-30 pravih racunara. Na ovom blogu cu se truditi da opisem i konkretna iskustva koja sam imao sa raznim softverom za virtuelizaciju, a trudicu se da pomognem i drugima koji su zainteresovani za tematiku.