Virtualiseerimine

**Virtualiseerimine** on informaatikas virtuaalse riistvara, operatsioonisüsteemi, andmekandja, võrguressursi vms loomine.

Virtualiseerimine on kasvav trend infotehnoloogias, mis lubab hõlpsasti ressursse (arvutusvõimsust, mälu, jms) vastavalt vajadusele ümber suunata sinna, kus neid parajasti vaja on. Seetõttu on virtualiseerimisega võimalik kulusid kokku hoida.

Virtualiseerimise näited on sümmeetrilised, mitme protsessoriga arvutite arhitektuurid, mis kasutavad rohkem kui üht protsessorit. Operatsioonisüsteem on tavaliselt konfigureeritud nii, et mitu protsessorit esitlevad ühte protsessori moodulit. Sellepärast tarkvara rakendusi saab kirjutada ühele loogilisele (virtuaalsele) arvutimoodulile, mis on palju lihtsam kui töötada paljude erinevate protsessori konfiguratsioonidega. Taoline arvutuspilv pakub klastersüsteemidega võrreldavat töökindlust lihtsamalt ja odavamalt.

## Riistvara virtualiseerimine

Riistvara virtualiseerimise tarkvara abil saab füüsilises arvutis luua ühe või mitu virtuaalmasinat, mis simuleerivad reaalseid arvuteid. Need masinad käituvad ja on kasutatavad samamoodi, nagu füüsilised arvutid – neile saab paigaldada operatsioonisüsteeme ja muud tarkvara.

## Virtualiseerimise põhimõtted

Virtualiseerimine on sisuliselt riistvara muutmine tarkvaraks. Tänu tarkvaralahendustele nagu VMware ESX saab muuta (virtualiseerida) riistvara ressursse x86 baasi peal, sealhulgas keskprotsessor, muutmälu (RAM), kõvaketas ja võrgukontroller, täielikult toimiva virtuaalse masina loomiseks, kuhu saab paigaldada eraldi operatsioonisüsteemi ja rakendada seda kui füüsilist arvutit.

Mitu virtuaalset masinat kasutavad üksteist kahjustamata ühiseid riistvararessursse. Sinna saab kergesti paigaldada mitu virtuaalsüsteemi ja rakendada ühel arvutil mitmeid programme.

## Ajalugu

Esmakordselt kasutas virtualiseerimistehnoloogiat IBM rohkem kui 30 aastat tagasi, meetod oli loogiline jaotus arvuti ressursside üksikuteks virtuaal masinateks. See tehnoloogia on teinud arvuti palju funktsionaalsemaks, st nüüd võiks lubada samaaegselt kasutada mitut programme ja protsesse. Tollel ajal, arvutid olid väga kallid, tehnoloogia, mis jagas ressursse oli kasutatud selleks, et saavutada maksimaalne investeeringutasuvus.

Tänapäevased arvutid põhinevad x86 arhitektuuridel ja on tekkinud samad probleemid nagu
EAM-idel (Elektroonilised Arvutus Masinad ehk arvutid) 1960. aastatel – vähene paindlikkus ja kasutatud on ainult väike osa kõikides olemasolevates ressurssidest. Aastal 1990 firma VMware on ületanud mitmeid raskusi otsides lahendust sellele probleemile ja on loonud virtualiseerimistehnoloogiat arvutitel, mis põhinevad x86 baasil ja mille eesmärk on kõrvaldada probleeme kasutamatu ressurssidega jne.

Tänapäeval on VMware ülemaailmne liider valdkonnas virtualiseerimisel arvutitel, mis põhinevad x86 baasil. Edu selles valdkonnas on motiveerimiseks liikuda suunas, et virtualiseerida kõik arvutid, mis põhinevad sellel arhitektuuril.

## Virtualiseerimise vajadus x86
1980. ja 1990. aastatel oli virtualiseerimistehnoloogia ajutiselt unustatud. Sel ajal etaloniks oli ressursside jaotamine arvutis klient-server, samuti odavate Serverite loomine ja lauaarvutid, mis põhinesid arhitektuuri x86. Aastatel 1990 kasutati laialdaselt Windows ja on ka tekkinud Linux nagu OS serveritele, mis tegi servereid x86 tööstuse standardiks. Arengu kasvamisel serverite ja lauaarvutite baasil x86, tõi uue IT-infrastruktuuri ja uusi probleeme, nagu näiteks:

*	Infrastruktuuri ressursside ebatõhus kasutamine. Vastavalt firma International Data Corporation (IDC) turu-uuringud näitasid, et enamus x86 servereid, keskmiselt kasutavad töös 19–15% koguvahenditest. Enamikul juhtudel, organisatsioonid kasutavad ainul üht tarkvara serveritel, et vältida haavatavust, mis tekib, kui üks tarkvara kahjustab teist, kui neid rakendatakse samas serveris.
*	Füüsilist infrastruktuuri kasvavate kulude tõttu. Tootmiskulud, mis toetasid ainult üht laienevat füüsilist infrastruktuuri, kasvasid järjest rohkem. Enamik IT infrastruktuurid peavad töötama pidevalt, mis toovad kaasa tohutult palju elektrienergia tarbimist, samas jahutamise kulud ja hooldus seotud töötavate seadmetega, olenemata sellest, mis tasemel töötab see seade.
*	Suurenesid kulud IT juhtimisel. Arvutikeskkond muutus keerulisemaks ning olid suurenenud nõuded töötajatelt, kõrgemaharidus valdamisega, kui ka töökogemust seotud infrastruktuuri haldamisega. Samas kasvasid ettevõtete kulud kuna selline tööjõud maksab tohutult palju raha. Ettevõtted kulutasid uskumatult palju aega ja ressursse, et täita käsitsi palju ülesandeid serverite hooldamiseks ja suurt tööjõudu oli selleks tööks vajalik. 
*	Ei olnud piisavalt usaldusväärset süsteemi avariijuhtumitel, kui oli vaja taastada andmeid ja ei olnud kaitset kriitilistes olukordades. Olulist kahju on tekitanud organisatsioonidele tähtsate serverite tarkvara seisakud ja ligipääsmatus tähtsamatele lauarvutitele lõppkasutajatel. Oht, et rünnatakse turvalisusesüsteemi, oht standardriketel ja et alandatakse tõhusust ja terroriaktide oht on kasvatanud väärtust, et lauaarvutid ja serverid pidid pideval töötama.
*	Olulised hooldustööd lõppkasutajate lauaarvutitele. Haldamine ja turvamine ettevõtete lauaarvutitele, sellega on seotud mitmeid probleeme. Üsna raske säilitada kontrolli üle hajutatud lauaarvutite keskkonnas ja rakendada juhtimispoliitikat, juurdepääsu ja julgeoleku, säilitades võime töötada tulemuslikult kasutajatele. Lisaks sellele nõuab see tohutult palju investeeringuid. Töölaua keskkonnas tuleb alati kohaldada palju parandusi ja uuendusi, et vältida turvahaavatavusi.

## Otsus VMware: täis riistvara x86 virtualiseerimine

Aastal 1999 VMware esitas virtualiseerimistehnoloogiat, mis põhineb x86 baasil ja selle tehnoloogiaga saab lahendada eespool kirjeldatud probleemid. Samuti sellega saab luua ühist riistvara infarastruukturi x86 baasil, mis on üldiseks kasutamiseks, mis pakub täielikku isolatsiooni, mobiilsust ja valik OS-i taotlemise keskkonnas.

## Näide kokkuhoiust
Enne serveripargi virtualiseerimist oli KredExis kasutusel seitse füüsilist serverit, mille elektritarve oli 4,9&nbsp;kW. Seega tarbisid serverid kuus 3528&nbsp;kWh energiat. Kui võtta ühe&nbsp;kWh hinnaks 1,2 krooni, siis kulus energiale aastas 50 803 krooni.
Virtualiseeritud serveripark, mis koosneb kolmest serverist ja kettamassiivist, on koguvõimsusega 2,58&nbsp;kW. Seega kulub kuus 1854&nbsp;kWh energiat. Kui võtta ühe&nbsp;kWh hinnaks 1,2 krooni, siis kulub energiale aastas 26 697 krooni.
Seega aastas hoitakse energialt kokku ~25 000 krooni.
Kliendile juurutatud süsteemis on vaba ressurssi veel ~40%. Kui ressursikasutus ületab 85%, siis oleks otstarbekas süsteemi laiendada. Kogu lahendus on väga lihtsasti laiendatav serverite lisamise ning kettamassiivi laiendamisega. Juhul kui klient vahetab kolmeaastase tsükliga välja kõik serverid, siis füüsilise infrastruktuuri korral kuluks kliendil ~ 7 × 50 000 krooni = 350 000 krooni. Virtuaalse infrastruktuuri korral oleks kulu ~1 × 50 000 (keskhaldusserver) + 2 × 70 000 krooni = 190 000 krooni. Kokkuhoid seega 160 000 krooni (eelduseks on võetud, et kettamassiivi eluiga on märkimisväärselt pikem – 5–6 aastat).

**Järeldus:**

Virtualiseerimine – tehnoloogia, mis toob kasu kõikidele arvutikasutajatele. Miljonid inimesed ja tuhanded asutused ja ettevõtted kogu maailmas, sealhulgas Fortune 100, kasutavad virtualiseerimislahendusi, et vähendada IT-kulusid ja samal ajal suurendada tootlikkust, tõhusust ja paindlikkust saadaval riistvaral.

## Viis põhilist põhjust riistvara virtualiseerimiseks
*Serverite konsolideerimine ja infrastruktuuri optimeerimine: virtualiseerimisega saab saavutada palju tõhusamalt resultaati ressursse kasutamisel, sest sellega ületad standardite piirid.
*Kulude vähenemine füüsilise infrastruktuuri jaoks: virtualiseerimine vähendab serverite arvu ja nendega seotud IT riistvara andmekeskuses. Selle tulemusena hoolduse nõuded, elektri ja jahutuse materiaalseid vahendeid vähenevad ja IT peale kulutad vähem raha.
*Suurenevad paindlikkus ja reageerimisvõime süsteemil: virtualiseerimine pakub uut meetodit IT-infrastruktuuri juhtimisel ning aitab IT-administraatoritel kulutada vähem aega korduvatele toimingutele – näiteks algatamine, konfigureerimine, järelevalvele ja hooldusele.
*Suurenevad taotlusete kättesaadavus ja tagab pidevat tööd ettevõtetel: tänu usaldusväärsele varundussüsteemile ja migratsiooni virtuaalses keskkonnas, täiesti ilma katkestuseta kasutusel, saate vähendada kavandatud seisakute perioodid ja suudate tagada kiire süsteemi taastamist kriitilistes olukordades.
*Parandatud süsteem lauaarvutite haldamisel ja turvalisuse andmisel: kus juures siis on võimalik juurutada, hallata ja jälgida protsesse kaitstud töökeskkonnas, mis annab lõpptarbijatele kohaliku või kaugjuurdepääsu kui võrk on ühendatud või ilma võrguta, peaaegu igast standard lauaarvutist, sülearvutist või Tablet PC-st.

## Virtualiseerimise tüübid
Reeglina töötab virtualiseeritud režiimis kasutusel oleval arvutil üks põhiline operatsioonisüsteem (Host), millest kontrollitakse teiste (Guest) operatsioonisüsteemide tegevust. Üldiselt eristatakse nelja põhilist tüüpi virtualiseerimise tehnikaid:
*	**Riistvara emuleerimine** – QEMU (saab kasutada muu riistvara jaoks mõeldud operatsioonisüsteeme)
*	**Täielik virtualiseerimine** – KVM, VMware, VirtualBox (saab kasutada sama riistvaralise platvormi jaoks mõeldud modifitseerimata Guest operatsioonisüsteeme)
*	**Paravirtualization** – Xen, User-mode Linux (UML) (saab kasutada vaid modifitseeritud tuumaga Guest operatsioonisüsteeme, mis on sama riistvaralise platvormi jaoks; guest operatsioonisüsteemis töötavad modifitseerimata rakendused)
*	**Operatsioonisüsteemi tasemel virtualiseerimine** – Solaris Containers, OpenVZ, FreeBSD jails (kõik töötavad operatsioonisüsteemi eksemplarid sh host kasutavad sama tuuma)
ning praktikas esinevad lisaks veel mõningad juhtumid, näiteks
*	**library virtualization** – operatsioonisüsteemi emuleeritakse spetsiaalselt ettevalmistatud teekide abil, nt Wine
*	**application virtualization** – eesmärgiks on kasutada rakendusi virtuaalseses keskkonnas, Java Virtual Machine (JVM)
Guesti modifitseerimine tähendab Xeni puhul seda, et Guest operatsioonisüsteem kasutab vastavalt paigatud tuuma.
Xeni puhul kasutatakse põhimõtteliselt kahte sorti tuumi
*	*dom0* – host operatsioonisüsteem ehk privilegeeritud domeen
*	*domU* – guest operatsioonisüsteem ehk privilegeerimata domeen
Erijuhul, nt Debian GNU/Linux v 5.0 puhul kasutavad dom0 ja domU ühte ja sama spetsiaalselt ettevalmistatud tuuma.
Xeni puhul moodustatakse guestide jaoks füüsilistele seadmetele vastavad lihtsustatud liidesed (ingl. k. interface). Sellise asjakorraldusega kaasneb
*	ainult hostis tuleb ja saab kasutada olemasolevaid riistvarale spetsiifilisi draivereid
*	operatsioonisüsteeme on Xen platvormi guestideks põhimõtteliselt suhteliselt lihtne portida, kuna guestid saavad kasutada lihtsustatud liideseid hosti kaudu füüsiliste seadmete poole pöördumise
*	suhteliselt efektiivne füüsiliste ressursside kasutamine.

## Virtualiseerimise kasutuskohad
### OS-i tasemel virtualiseerimine
Virtualiseerimine OS-i tasemel – virtualiseerib füüsilist serverit OS-i tasemel, mis võimaldab käivitada isoleeritud ja turvaliseid virtuaalservereid ühel füüsilisel serveril. See tehnoloogia ei võimalda OS käivituda tuumadega, vaid teiste tuumadega, mis on erinevad baas OS tuumadest. Virtualiseerimine operatsioonisüsteemi tasemel ei ole hypervisor kihti. Selle asemel hosti operatsioonisüsteem ise vastutab riistvara ressursside jagamisel kahe virtuaalserverite vahel ja toetab nende sõltumatust üksteisest.

**Solaris Containers / Zones**
**FreeBSD vangi**
**Linux-VServer**
**FreeVPS**
**OpenVZ**
**Virtuozzo**
**VDSmanager**
**iCore Virtual Accounts**

### Virtual Machines
Virtual Machine – on keskkond, mis on esitatud "Guest" operatsioonisüsteemile nagu riistvara. Aga tegelikult on see tarkvara keskkond, mis emuleerib hostisüsteemi tarkvaraga. See imiteerimis viis peaks olema piisavalt tugev, et Guest operatsioonsüsteemi draiverid võiksid töötada stabiilselt. Kui kasutate paravirtualizationi, virtuaalne masin ei jemuleeri riistvarat, kuid selle asemel pakkub kasutada spetsiaalset API.

**Näited:**
laboratoorsed testid ja koolitused: virtuaalseid masinates testimiseks on otstarbekas seada rakendused, mis mõjutavad operatsioonisüsteemi konfigureerimist, näiteks programmide installimine. Tänu sellele, et virtuaalseid masinaid on lihtne kasutada, neid kasutatakse koolitustel.

jaotamine eelinstallitud tarkvara: paljud tarkvaraarendajad loovad valmis virtuaalseid masinaid, kus on eelinstallitud tooted ja pakuvad neid tasuta või kommertseesmärgil. Neid osutavad VMware VMTN või Parallels PTN.

  
### Serverite virtualiseerimine
paigutamine mitu loogilist serverit ühte füüsilisse (Consolidation) ühendades mitu füüsilist serverit ühtsesse mahusse, et lahendada konkreetset ülesannet.

Näide: *Oracle Real Application Cluster, võrgutehnoloogia, tippjõudlusega klastrid.*
*	**Bochs**
*	**FAUmachine**
*	**KVM**
*	**Parallels**
*	**Qemu**
*	**SVISTA**
*	**twoOStwo**
*	**VirtualBox**
*	**Virtual Iron**
*	**Microsoft (Hyper-V)**
*	**VMware (ESX Server)**
*	**Xen**
*	**Red Hat Enterprise Virtualization for Servers**

Lisaks sellele serverite virtualiseerimine lihtsustab süsteemide taastamist (kui süsteemil tekkis kriitiline olukord), mis tahes olemasoleval arvutil, sõltumata arvuti konfiguratsioonist.

## Ressursside virtualiseerimine
Ressursside jagamine (partitioning). Ressursside virtualiseerimist saab esitada nagu üks füüsiline server on jagatud mitmeks osaks, millest igaüks on nähtav omanikule eraldi serverina. See ei ole virtuaalsete masinate tehnoloogia, vaid toimub operatsioonisüsteemi tuuma tasandil.

Süsteemides hypervisorite teise tüübiga mõlemad OS (Guest ja hypervisor) tarbivad füüsilisi ressursse ja nõuavad eraldi litsentseerimist. Virtual serverid, mis töötavad OS tuuma tasandil, peaaegu kiirust ei kaota, mis võimaldab ühel füüsilisel serveril panna tööle sadu virtuaalseid, ei nõua täiendavaid litsentse (näiteks nagu seda praegu teeb Microsoft).
Näiteks ressursside jagamiseks võib olla OpenSolaris Network virtualiseerimine ja Allika Control (projekt Crossbow), mis võimaldavad teil luua mitu virtuaalset võrguliidest ühelt füüsiliselt.

Liitmine, levitamine või lisamine mitme ressursse ühte suurte ressurssi või ressursside ühendamine.
Näiteks sümmeetrilised mitme protsessoriga süsteemid ühendavad palju protsesse; RAID ja kettahaldus ühendavad palju kettaid ühte suure loogilise kettasse; RAID ja võrgu seadmed kasutavad palju kanale, nad on ühendatud, nii et ilmuvad nagu üks lairibakanal. Metataseme arvuti klastrid teevad kõike eespool nimetatut. Vahel hõlmab see võrgustiku failisüsteeme abstraheeritud andmebaasist, mille peal nad on ehitatud, näiteks **VMware VMFS, Solaris / OpenSolaris ZFS, NetApp WAFL.**

## Rakenduste virtualiseerimine
Rakenduste virtualiseerimine – protsess, milles kasutatakse ümbertehtud rakendust kohustusliku paigaldamist OS-sse nüüd ei ole (pead vaid tööle panna). Rakenduse virtualiseerimiseks määrab virtualisaatori tarkvara paigaldamisel, missuguseid OS-i komponente on vaja, ja emuleerib neid, luues seega vajaliku spetsialiseerutud keskkonda, selle konkreetse virtualiseeritud rakenduse jaoks ja seega on tagatud isoleeritud rakenduse töö. Et luua virtuaalse rakenduse virtualiseeritud paigutatakse konteinerisse, mis on tavaliselt kausta kujuga. Kui te käivitate virtuaalne application, käivitub virtualiseeritud rakendus ja konteiner, mis on töökeskkond, sellele rakendusele. Töökeskkond käivitub ja sätestab eelnevalt loodud ressursse, mis sisaldavad registri võtmeid, faile ja muud, et käivitada rakendus. See virtuaalne keskkond toimib nagu kiht rakenduse ja operatsioonisüsteemi vahel, vältides konflikte nende vahel. Rakenduste virtualiseerimist hõlmavad selliseid süsteemid nagu **SoftGrid, Thinstall.**

Plussid:
*isolatsioon töötamisel: puuduvad vastuolud ja konfliktid;
*iga kord oma algsel kujul: ei täida reestri, ei ole konfiguratsioonifaile – see on vajalik serveri jaoks; madalamad ressursside tarbimised võrreldes kogu OS-i emulatsiooniga.

## Vaata ka
*Töölaua virtualiseerimine

## Välislingid
*Virtualiseerimine
*Virtuaalarvutid (vene keeles)
*Virtualiseerimine
*Virtualiseerimise info

**Serverite virtualiseerimine**
*Serverite virtualiseerimine. Нейл Макаллистер (vene keeles)
*Serverite virtualiseerimine standardse arhitektuuriga. Леонид Черняк (vene keeles)

**Riistvara virtualiseerimine**
*Tehnoloogia riistvara virtualiseerimisel. (vene keeles)
*Spiraalid ristvara virtualiseerimisel. Александр Александров (vene keeles)