Osnovne komponente koje čine virtulizacionu infrastrukturu su virtuelne mašine i hostovi na kojima se one izvršavaju, tj. čije fizičke resurse one koriste. Osim fizičkih resursa na hostovima, potrebno je obezbjediti i mrežni pristup kako hostovima, tako i virtuelnim mašinama. Takođe, vidjećemo kasnije da je korištenje isključivo lokalnog disk prostora na hostovima za potrebe virtuelizacije prilično nefleksibilno i nepraktično, jer u slučaju pada hosta svi podaci ostaju zarobljeni na njemu samom; zato je često uključena i integracija nekog storage sistema. Konačno, potrebno je definisati metode pristupa infrastukturi i kreirati odgovarajuća softverska rješenja i interfejse za upravljanje hostovima, kreiranje i menadžment same virtuelizacione infrastructure, kao i za pristup i korištenje samih virtuelnih mašina.

Virtuelna mašina

Pod virtuelnom mašinom (VM) možemo smatrati izolovan podskup ukupnih hardverskih resursa dostupnih na host serveru, vidljiv okolini kao nezavisan računar.  Dok operativni sistem instaliran na fizičkom serveru koristi sav njegov raspoloživ hardver, virtuelna mašina na raspolaganju ima, u principu, samo dio raspoloživog hardvera. Ima instaliran neki uobičajeni standardni operativni sistem, tzv. Guest OS, sa svim pripadajućim fajlovima, sadrži korisničke podatke, pristupa joj se uglavnom udaljeno, npr. Remote Desktop ili sličnom tehnikom, kada korisnik maltene i ne primjećuje da nije u pitanju „stvarni,“ tj. fizički server. S druge strane, virtuelna mašina je kolekcija fajlova kojima pristupa i koje po potrebi host otvara i edituje, u kojima je upisano između ostalog i koliko i kojih hardverskih resursa sa hosta treba rezervisati, ali i svi korisnički podaci i podaci operativnog sistema.

Virtuelna mašina se kreira kroz hypervisor, najčešće u grafičkom okruženju putem wizard-a ili pokretanjem (kucanjem) komande u komandno-linijskom modu, pri čemu se unose njene karakteristike u vidu parametara. Na osnovu unesenih parametara se kreiraju fajlovi. Broj fajlova, njihova namjena kao i tip podataka u njima zavisi od vrste hypervisor-a; međutim, tipično, obavezni su neka varijanta konfiguracionog fajla, kao i hard disk fajl.

Konfiguracioni fajl

Konfiguracioni fajl virtuelne mašine sadrži količinu memorije koju želimo dodijeliti virtuelnoj mašini, broj procesora/jezgara, tip hard disk kontrolera, tip mrežne kartice i njihov broj, itd. – u principu, sav hardver koji će biti predstavljen (budućem) operativnom sistemu instaliranom unutar virtuelne mašine, tj. Guest OS-u. Stvaran, fizički hardver u serveru će biti nevidljiv pomenutom OS-u; drugačije rečeno, Guest OS „misli“ da pristupa hardveru definisanom tokom kreiranja virtuelne mašine – tzv. virtuelni hardver – a svaki pristup virtuelnom hardveru hypervisor „hvata,“ „prevodi“ i šalje odgovarajućem fizičkom hardveru na izvršavanje; isto važi i za komunikaciju u obrnutom pravcu. Zavisno od vrste hypervisor-a, Guest OS-u virtuelni hardver može biti predstavljen kao neki opštepoznati hardver (npr. Intel 82545EM Gigabit Ethernet, AMD 79C970 PCnet32 itd.) pa će ga Guest OS tako i prepoznati i instalirati odgovarajući drajver, najčešće integrisan u sam Guest OS. Druga varijanta uključuje da virtuelni hardver, u principu, neće biti prepoznat od strane Guest OS-a (tj. pomenuti ga vidi kao „unknown hardware”), pa se zahtjeva instalacija specijalnog drajvera unutar virtuelne mašine kako bi dotični hardver bio prepoznat. Ovaj metod uglavnom obezbjeđuje mnogo bolje performanse prilikom pristupa virtuelnom (a preko hypervisor-a i odgovarajućem fizičkom) hardveru. Npr. kad govorimo o ESXi-ju – hypervisor rješenju firme Vmware – kolekcija tih optimizovanih drajvera se instalira u sklopu instalacije  „Vmware Tools” paketa unutar virtuelne mašine. Istu namjenu kod Microsoft-ove virtulizacione platforme (Hyper-V) imaju „Integration Services”.

Apsolutno je moguć, i u praksi čest (doduše, nepreporučljiv) tzv. „overprovisioning, “ pri čemu se virtuelnoj mašini definiše korištenje hard diska većeg kapaciteta nego što je dostupno prostora na fizičkom disku hosta.

Hard disk fajl

Slično kao i kod pristupa ostalom hardveru, Guest OS-u se „podmeće“ i hard disk. Hard disk fajl je ono što Guest OS vidi kao fizički disk, a u realnosti je (tj. na hostu je fizički vidljiv kao) neka vrsta optimizovane arhive (kao npr. .ZIP ili .RAR) u kojoj se nalaze fajlovi Guest OS-a, korisnički podaci unutar virtuelne mašine, itd; u stvari, svi fajlovi koji bi se našli direktno na fizičkom disku kad bi se Guest OS instalirao direktno na hardver i fizički disk.

U principu, u većini virtulizacionih rješenja moguće je virtuelnoj mašini dodijeliti stvaran fizički disk na serveru, ali je u praksi mnogo češće konfiguracija pri kojoj Guest OS pri svakom pristupu hard disku „misli“ da pristupa konfigurisanom hard disku datom mu na korištenje, definisanog kapaciteta, preko „podmetnutog“ tipa kontrolera (IDE, SATA, SCSI, itd.) navedenog u konfiguracionom fajlu, a za koji koristi drajvere integrisane u sam Guest OS, a u stvarnosti pristupa fajlu dodijeljenom toj virtuelnoj mašini. Pojednostavljeno rečeno, svaki  pristup hard disku unutar virtuelne mašine je u stvarnosti pristup odgovarajućem hard disk fajlu, na fizičkom disku hosta. Ovaj metod – korištenje hard disk fajla umjesto fizičkog hard diska ili disk prostora (na storage sistemu, npr.) – ima mnoge prednosti:

  • uvećanje hard diska se svodi na uvećavanje veličine hard disk fajla (često moguće „naživo,“ tj. dok virtuelna mašina radi); dodavanje diska je u stvari kreiranje novog hard disk fajla (također često moguće „naživo“)
  • bekap hard diska se svodi na kopiranje hard disk fajla (opet moguće „naživo“)
  • moguće je zaštititi trenutni sadržaj hard disk fajla od promjena, a virtuelnu mašinu preusmjeriti da promjene upisuje u neki drugi fajl („delta“ fajl) – u slučaju naknadnih problema, lako poništimo sve promjene i vratimo se na originalno stanje hard diska, odnosno na podatke upisane u hard disk prije svih promjena („Snapshot“ ili „Checkpoint“ tehnologija)

Takođe, jedna od često korišćenih tehnologija kod pristupa hard disku je tzv. Thin Provisioning.  Kod thin provisioning-a Guest OS vidi disk definisane veličine, ali u stvarnosti host na fizičkom disku za hard disk fajl alocira samo onoliko prostora koliko trenutno virtuelna mašina stvarno koristi. Npr. Guest OS vidi disk od 120 GB, ali trenutno OS na njemu koristi samo 20 GB – upravo tih 20 GB je zauzeto na fizičkom disku. Ako se unutar virtuelne mašine zauzeće diska uveća, uvećaće se za istu vrijednost i zauzeće fizičkog diska. Tako se drastično štedi disk prostor na fizičkom serveru, pogotovo kad se na njemu nalazi veliki broj virtuelnih mašina. Apsolutno je moguć, i u praksi čest (doduše, nepreporučljiv) tzv. „overprovisioning, “ pri čemu se virtuelnoj mašini definiše korištenje hard diska većeg kapaciteta nego što je dostupno prostora na fizičkom disku hosta. Virtuelna mašina će raditi sve dok je stvarno zauzeće prostora manje od stvarnog slobodnog prostora, ali će doći do (blago rečeno) greške na hostu ako virtuelna mašina pokuša, prema informacijama koje ona ima o slobodnom prostoru na njenom disku – sasvim regularnu operaciju upisivanja količine podataka za koju nema mjesta u realnosti.

Bilo kako bilo,  navedene disk operacije je relativno teško izvesti kad koristimo stvarne, fizičke diskove.

Ostali fajlovi virtuelne mašine

Ostali fajlovi su, tipično:

  • BIOS fajl – Guest OS ga vidi kao BIOS, odakle npr. čita redosljed uređaja prilikom boot procesa)
  • swapfajl – ukolikohostnemadovoljnofizičkememorijezaradvirtuelnemašine, koristi ga kao dodatak fizičkoj memoriji
  • hard disk snapshot fajl – za primjenu pomenute snapshot tehnologije
  • memory snapshot fajl – unapređena snapshot tehnologija, koja omogućuje čuvanje i stanja memorije virtuelne mašine u nekom trenutku, tj. sve pokrenute aplikacije, otvoreni fajlovi unutar nje i njihov sadržaj, itd.
  • log fajlovi – bilježe dešavanja sa virtuelnom mašinom, tipa kad je startovana, modifikovana, eventualni problemi, itd.

Mogući su i dodatni fajlovi, zavisno od tipa hypervisor-a.

Dakle, iako je vrtuelna mašina ono što je vidljivo i što se koristi u infrastrikturi, gotovo sve funkcionalnosti infrastrukture se izvršavaju na hypervisoru i pod njegovom kontrolom.

Hypervisor

Dakle, virtuelna mašina je kolekcija fajlova smještena na nekom (fizičkom) disku dostupnom hostu. Na hostu je instaliran hypervisor, koji se bavi virtuelnim mašinama, arbitrira svu komunikaciju između virtuelnih mašina i stvarnog hardvera na hostu, a također i omogućuje pristup klijentima – i onima koji pristupaju virtuelnim mašinama i koriste ih, kao i onima koji rade na samom hostu – kreiraju nove mašine, konfigurišu host, itd. Dakle, iako je vrtuelna mašina ono što je vidljivo i što se koristi u infrastrikturi, gotovo sve funkcionalnosti infrastrukture se izvršavaju na hypervisoru i pod njegovom kontrolom. Njegove osnovne uloge su:

  • Manipulacija virtuelnim mašinama – njihovo kreiranje, modifikovanje, brisanje, definisanje prava pristupa kao i omogućavanje samog pristupa, startovanje, gašenje, nadgledanje itd.
  • Rezervisanje potrebnih fizičkih resursa sa hosta za potrebe izvršavanja svake virtuelne mašine pojedinačno, i potpuno izolovanje resursa dodijeljenih različitim virtuelnim mašinama, sprovođenje i kontrola komunikacije virtuelne mašine sa fizičkim hardverom
  • Omogućavanje pristupa virtulizacionoj infrastukturi kroz integrisane ili podržane interfejse

Pristup i management hypervizora

Kad govorimo o pristupu i upravljanju, potrebno ih je obezbjediti na više nivoa. Prije svega, potrebno je pristupati hostovima u cilju njihove konfiguracije i managementa, kao i kreiranja virtuelnih mašina, umrežavanja virtuelnih mašina itd – tj. zbog konfiguracije i upravljanja samom virtuelizacionom infrastukturom. Tipično, koriste se web pristup (https), ssh, ali i razni „proprietary“ klijenti koje kreira sam proizvođač virtuelizacionog rješenja. Ti klijenti podrazumijevaju upotrebu grafičkog okruženja, ali često definišu posebne interfejse i komande koje se pokreću iz komandne linije, prije svega za potrebe automatizacije operacija, pisanje skripti, itd. Komande najčešće koriste linux sintaksu, a u novije vrijeme i Microsoft-ov Powershell.

Kad govorimo o pristupu samim virtuelnim mašinama od strane klijenata, treba se samo sjetiti da su virtuelne mašine, ukoliko im je na neki način dozvoljena mrežna komunikacija preko mrežnih adaptera na hostu – vidljive na potpuno isti način kao i fizički serveri, i na isti način im se može konfigurisati pristup, zavisno od Guest operativnog sistema. Tipično, koristi se Remote Desktop konekcija, telnet, ssh, http/https ako je unutar virtuelne mašine podignut web server, itd. Pošto virtuelna mašina ipak nije fizička, nema ni svoju tastaturu ni monitor, tako da se direktan (tzv. konzolni) pristup razlikuje u u odnosu na direktan pristup fizičkom serveru. Većina hypervisora omogućuje otvaranje specijalne softverske konzole u okviru koje se može vidjeti ekran predhodno izabrane virtuelne mašine, ali postoje i komande (dugmad) za izvršavanje nekih dodatnih akcija, npr.

  • Power on – „simulacija“ pritiska na dugme za paljenje na serveru
  • Nasilno (forced) gašenje – „simulacija“ držanja power dugmeta na serveru nekoliko sekundi dok se on „na silu“ ne ugasi
  • Restart – ali bez logovanja unutar virtuelne mašine; nekad elegantno rješenje, ali može biti security problem, jer na ovaj način restart može uraditi administrator host servera, bez obzira kakva su prava za gašenje definisana unutar virtuelne mašine. Zato treba pažljivo definisati prava pristupa hostu kao i pristupa virtuelnim mašinama putem ove konzole
  • Slanje CTRL ALT DEL kombinacije virtuelnoj mašini – naime, fizička mašina, prije svega sa instaliranom nekom verzijom windowsa, ima prioritetnu kontrolu nad CTRL ALT DEL sekvencom, tj. pritiskom tih tipki se poziva sekvenca na fizičkoj mašini na kojoj je pokrenuta (tj. na koju je tastatura povezana). Osim slanja pomenute kombinacije kroz konzolu, hypervisori često definišu prečicu za CTRL ALT DEL koja tu sekvencu prosljeđuje virtuelnoj mašini. Npr, kod Vmware virtuelizacije, ta prečica je CTRL ALT INSERT, kod Microsoft Hyper-V virtuelizacije je CTRL ALT END
  • Povezivanje virtuelne mašine sa uređajima hostu, ili na fizičkom kompjuteru na kome je pokrenuta konzola – ovako je najlakše povezati virtuelnu mašinu sa USB drajvom, CD ili DVD uređajem, ISO fajlom ili floppy disk image fajlom. Naime, ISO (image) fajl je kopija sadržaja CD-a ili DVD-a „blok po blok,“ čime se čuvaju njegovi fajlovi ali i kompletna struktura – između ostalog i npr. njegov boot sektor koji ne možemo iskopirati ako sve fajlove sa CD-a iskopiramo na lokalni hard disk. U svakom slučaju ISO fajl može direktno da se poveže (tj. mount-uje) u virtuelnu mašinu, čime se „simulira“ ubacivanje CD-a u nju. Ovako je omogućena elegantna instalacija Guest OS-a na sličan način kako bi instalirali i OS na fizičkom serveru: otvorimo konzolu virtuelne mašine, startujemo VM, mount-ujemo ISO fajl sa instalacionom verzijom OS-a, i boot-ujemo VM sa CD-a – dalje vršimo instalaciju onako kako smo navikli na fizičkom serveru. Isto tako postoji i floppy image fajl – blok kopija „diskete.“

U sljedećem članku bavićemo se tipovima hypervisora i metodima pristupu harveru.

[mc4wp_form id=”736″]