Serverite Virtualiseerimine
SISUKORD
SISUKORD 1
SISSEJUHATUS 2
1.VIRTUALISEERIMINE 3
1.1 Miks kasutada Virtualiseerimist? 4
1.2 Virtualiseerimise puudused 5
2.
TEHNIKAD VIRTUALISEERIMISES 7
2.1 Paravirtualiseerimine 7
2.2 Täisvirtualiseerimine 8
2.2.1 Hypervisor 9
2.3 Operatsioonisüsteemi tasemel virtualiseerimine 10
KOKKUVÕTE 12
SISSEJUHATUS
Käesolevas
ainetöös
seletatakse , mida kujutab endast virtualiseerimine ja
lühike ülevaade ajaloost. Uuritakse miks on kasulik virtualiseerida
ja selle negatiivsed küljed, mis võib kaasneda. Samuti seletatakse
lahti kolm enimkasutatud virtualiseerimis
tehnikat , nende töö
põhimõtteid, mille poolest nad üksteisest erinevad ja valdkonnad
kus neid kasutatakse.
Kuna
virtualiseerimine on muutunud viimaste aastakümnete jooksul suureks
kasvavaks trendiks on sellel ettevõtetele palju kasusi. Lubades
lihtsustada serverite käsitlemist, paindlikust ning effektiivsemat
ressurside kasutamist. Kuigi virtualiseerimist rakendada on lihtne on
sellel mitu erinevat tehnikat, mis ei sobi kõigeks. Kasutades
virtualiseerimist valesti, ning halva ettevalmistamise tõttu võib
see tuua rohkem kahju, kui kasu. Käesoleva
ainetöö eesmärgiks on
anda ülevaade kasust, mida
saavutatakse virtualiseerimisest ning
vajalik informatsioon, kuida virtualiseerimine töötab ja mida
tuleks teada virtualiseerimise
alustamisel .
VIRTUALISEERIMINE
Virtualiseerimis tehnoloogia imiteerib reaalseid või nö. füüsilisi andmetöötlus resursse nagu lauaarvuteid, servereid, protsessoreid, mälu,
salvestussüsteeme, võrke ja inviduaalseid rakendusi. Serveri
virtualiseerimine loob “virtuaalseid keskkondi” mis võimaldavad
mitmetel rakendustel või serveritel töötada ühel arvutil nii,
nagu oleks igal oma privaatne arvuti.
Virtualiseerimine
on ühtesi kuumemaid ja kasvavamaid trende tehnoloogia viimaste
aastakümnete jooksul ja jätkub ka tänase päevani, kuigi
virtualiseerimise põhi idee pärineb suurarvutitest
rohkem
kui 40 aastat tagasi.
Aastatel
1960 ettevõtlus tehnoloogia maastik koosnes suurtest ja kallitest
suurarvutitest, tuim terminalidest ja suhteliselt odavatest
klient- server võrkudest kus multigetumtöö serverid ja personaalsed arvutid ei olnud isegi lähedal muutumaks reaalsuseks. Arvutite operaatorid kasutasid perfokaarte ja esitasid partii töid edasi
suurarvutiteni kus need jäid ootama oma järge.
Esimene
samm virtualiseerimiseni võttis aga ajajaotus suurarvuti süsteemide
vormi ja kujunes välja CP-40 operatsiooni süsteemi väljatöötamise jooksul. Iga kasutaja kindlustati virtuaalse masinaga, mis andis
kasutamisõiguse mitmele kasutajale suurarvutisse samaaegselt. Loodi
tarvkara, hypervisor (vt.
pt 2.2.1),
mis haldas mälu jagamist suurarvutis. [2, 10, 12]
Popek
ja Goldbergi nõuded
Popek
ja Goldbergi virtualiseerimise nõuded on piisavate tingimuste kogum
arvuti arhitektuurile, et toetada süsteemi virtualiseerimist
tõhusalt. Need olid tutvustatud Gerald Popeki ja Robert Goldbergi
poolt 1974 aasta artiklis “ Formaalsed nõudmised
virtualiseeritavatele kolmanda generatsiooni arhitektuuridele”.
Artiklis on toodud kolm vajalikku iseloomu, et süsteemi programmi
kutsuda VMM-iks ( Virtual machine monitor ).
- Samaväärsus/täpsus
VMM all töötav programm peaks näitama samasugust käitumist peaaegu identselt kui see demonstreeritud otseselt samaväärsel riistvaral, väljaarvatud ajastu effektid.
- Tõhusus / sooritus
enamus masina instruktsioone tuleb käivitada riistvaral ilma VMM sekkumiseta.
- Ressursi kontroll/turvalisus VMM-il peab olema täielik kontroll virtualiseeritud ressursside üle
Kuigi
need nõuded on tuletatud lihtsustatud eeldustest, esindavad nad
siiamaani käepärase viisi määramaks, kas arvuti arhitektuur
toetab effektiivset virtualiseerimist. [12]
1.1
Miks kasutada Virtualiseerimist?
Füüsilisest
ruumist võib tulla puudust. Tihtipeale on igale inviduaalsele
teenusele, inviduaalsed serverid mida tahetakse arvutivõrgus
pakkuda. Kõik need füüsilised serverid kasutavad ära palju ruumi
ja võib juhtuda, et serveriruumis või andmekeskuses tuleb
füüsilisest ruumist puudus.
Voolutarbimine
on kallis.
Kui
on palju füüsilisi arvuteid siis igaüks neist vajab teatud mahus elektrit ja kuna
elekter
maksab palju, siis voolutarbimisele tuleb palju kulutada.
Serverid
on alatarvitatud.
Tihtipeale
sellistes keskkondades kus on palju füüsilisi servereid igale
inviduaalsele teenusele mida tahetakse pakkuda on väga alakoormatud.
Need arvutid on tihti võimsad kuid teenused, mis seal töötavad on tavalised ja lihtsad. Serverite virtualiseerimine võimaldaks need
üksikud füüsilised serverid, kus kasutatakse ainult väike
protsent nende arvutite võimsusest ühendada üheks füüsiliseks
serveriks, mis kasutaks ära masina täieliku võimsuse.
Elementaar haldamine serveris võib olla tüütu ja aega nõudev.
Võib
näiteks olla, et füüsilisi servereid on mitu, igal oma ülesanne
ja nad asuvad füüsiliselt eri asukohtades või lihtsalt tuleb
nendega ühendust võtta inviduaalselt. Tänu sellele, lihtsad
ülesanded nagu näiteks uuenduste tegemine inviduaalselt igale
masinale võib olla tüütu ja aega nõudev.
Programmide
kokkusobivus võib olla keeruline.
Võib
juhtuda, et on vaja mitut inviduaalset serverit ainult sellepärast,
sest ühes masinas tekib erinevate teenuste vahel konflikt. Samuti
aegub riistvara tehnoloogia ning uuemate programmidega võib tekkida
probleeme. Sellisel juhul on võimalik luua virtuaalne versioon vanemast riistvarast ka mordernsemates serverites.
Migratsioon ühelt masinalt teisele on lihtsam.
Migratsiooni all on mõeldud serveri liigutamist ühest keskkonnast teisele. Õige
riistvara ja tarkvara puhul on võimalik liigutada üht virtuaalset
serverit teisele füüsilisele masinale. Vanasti oli see võimalik
ainult masinatel kui mõlemad füüsilised masinad töötasid samal
riistvaral, operatsioonisüsteemidel ja neil oli sama protsessor.
Nüüd on võimalik migreerida virtuaalseid servereid ühelt
füüsiliselt masinalt teisele isegi kui mõlematel masinatel on
erinevad protsessorid ainult, et samalt tootjalt.
1.2
Virtualiseerimise puudused
Vaatamata
kõigile eelistustele, mida virtualiseerimine pakub on sellele
mitmeid puuduseid ja probleeme, millest tuleks teadlik olla. Enne
virtualiseerimist on tähtis teada oma vajadusi ja võrgu
arhitektuuri.
Vähenenud jõudlus.
Pole
kahtlustki, et virtualiseerimine nõuab rohkem riistvara ressurssi.
Probleem sellega on, et peaaegu võimatu on eelnevalt ette teada kui
palju lisaressuri läheb vaja, kuna iga programm käitub erinevalt
virtualiseeritud keskkonnas. Eriti veel lahendustes, kus kasutatakse
paravirtualiseerimist, sest operatsioonisüsteemidele on tehtud
muudatusi. [18, 20]
Suured
riskid.
Virtualiseerimise
suureks eeliseks on, et ta vähendab vajadust inviduaalsete
füüsiliste masinate vastu kuna virtualiseerituna saavad töödata
inviduaalseid teenuseid ühes füüsilises masinas. Niipalju kui see
on eeliseks võivad olla sellel suured tagajärjed. On suur võimalus,
et see füüsiline masin, mis hostib virtualiseeritud serverid satub
rikke olukorda. Juhtuda võib, et kogemata tõmmatakse vale kaabel,
vajutatakse vale lülitit ning ei saa välistada riistvaralisi
rikkeid. Sellisel juhul oleksid mõjutaud kõik virtuaalsed serverid
ja programmid . [18]
Haldamine
muutub keeruliseks
Virtuaalsete
serverite haldamine võib muutuda küllaltki keeruliseks, kuid uute
virtuaalsete masinate installimine on väga lihtne. Piisab ainult
virtuaalse masina kloonimisest uuele masinale ja ongi valmis
minutitega. Probleem seisneb aga, et servereid tuleb rohkem juurde ja
serveri administreerijad ei suuda neid kõiki hallata. [20]
Pole
standardiseerimist
Virtuaalsete
keskkondade üles seadmine ja haldamine ei ole sama lihtne nagu
füüsiliste serverite haldamine. Kui olla teadlik arvuti
riistvarast, siis ei tohiks olla raske hallata ja konfigureerida
enamus servereid kuid virtuaalses keskkonnas on vaja erilisi
teadmisi, et töötada serverite virtualiseerimis toodetega. Samuti
on virtualiseerimis tooteid palju ning erinevaid kuid nende haldamine
võib üksteistest olla väga teistsugune. [4]
Tarkvara
litsentsimine
Suuremad
serverid sisaldavad rohkem keskprotsessoreid millel igal on palju
töötlus jõudu. Enamus server tarkvara on litsenseeritud iga
keskprotsessori järgi, sest kiipe on lihtsam lugeda ning on väiksem
tõenäsus muutumaks serveri elu jooksul. Tänu sellele võib tekkida
palju väljakutseid ning serveri jõudlus võib kannatada. [4]
TEHNIKAD VIRTUALISEERIMISES
Virtualiseerimise
teostamiseks on mitmeid tehnikaid, kuid kuida ja millist tegelikult
kasutada? Selleks oleks vaja teada kuida guest operatsioonisüsteem
kasutab ära füüsilise riistvara ressursse. Kõikidel nendest tehnikatest on oma eelised ja puudused võrreldes üksteisega kuid,
mis sobib kõige paremini oleneb täielikult situatsioonist.
2.1
Paravirtualiseerimine
Paravirtualiseerimine
(Paravirtualization) lubab mitmel operatsioonisüsteemil töödata
riistvaral samal ajal, kasutades ära süsteemi ressursse tõhusamalt
nagu protsessorid ja mälud läbi effektiivse ressursi jagamise.
Paravirtualiseerimisel, guest operatsioonisüsteemi kernel on
modifitseeritud töötama spetsiaalselt hypervisoril. See sisaldab
tüüpiliselt vahetamast kõiki privileegituid operatsioone, mis
töötavad ainult CPU ring 0 tasemel, kutsetega hypervisorile (tuntud
kui hypercalls). Hypervisor täidab ülesande guest kerneli eest ja
samas varustab hypercall kasutajaliidest teistele kriitilistele
kerneli operatsioonidele nagu mälu haldamine, katkestustööstlus ja
ajast kinni pidamine. Paravirtualiseerimine proovib parandada
probleeme mis on täisvirtualiseerimises, lubades guest
operatsioonisüsteemile otsene ligipääs aluseks olevale riistvarale
samal ajal keelates kõigil teistel guest operatsioonisüsteemidel
ligipääs samale ressursile samal ajal. Paravirtualiseerimises guest
operatsioonisüsteemid teavad, et neid virtualiseeritakse. [5, 6, 9,
12]
Paravirtualisatsiooni
eelisteks on võime guest kernelil suhelda otse hypervisoriga, mis
tuletab palju paremad jõudlus tasemed . Teiseks eeliseks on, et
paravirtualiseerimine ei limiteeri seadmedraivereid sellega mis on
virtualisatsiooni tarkvaras. Selle asemel kasutatakse draivereid, mis
on olemas guest operatsioonisüsteemil.
Kus
ja millal kasutada:
- Arendamine, testimine - Keskondadele kus ei saa eraldada arendussüsteeme, testimis süsteemidest. Paravirtualiseerimine võib pakkuda eraldust, et hoida mõlemaid keskkondi üksteisest eemal.
- Avariitaaste - Paljud keskkonnad plaanivad seda kasutada arendus ning testimis masinatel juhul, kui peaks tekkima avarii olukord. Avariitaaste võib olla niisama lihtne, kui lihtsat liigutada guest operatsioonisüsteem teisele masinale kuni riistvara saab parandatud.
- Migratsioon - Migratsioon uutele või teistele süsteemidele on kiire ja lihtne
- Mahu haldamine - Tänu migratsiooni lihtsusele on parem läbi viia mahu haldamist, baseeruvalt ressurside võimele ja ressursside saadavusele. [5]
Mõned
tuntumad paravirtualiseerimise tooteid ja tehnoloogiaid on Trango
Hypervisor, Xen, LDOMs ja IBM z/VM
2.2
Täisvirtualiseerimine
Täisvirtualiseerimine
( Full virtualization ) tekitab täieliku simulatsiooni allolevast
riistvarast ning emuleerib kõik I/O seadmed ja kohandatud BIOS -i. Samuti toetab see tehnika erinevalt paravirtualiseerimiest
modifitseerimata guest operatsioonisüsteeme. See tähendab, et kõik
operatsioonisüsteemid ning programid mis suudavad töötada
riistvaral niisama, saab ka kasutada virtuaalses masinas. Nii
operatsioonisüsteemid ning sellega kaasnevad programmid töötavadki
sellel virtuaalsel riistvaral. [7, 12, 14]
Täisvirtualiseerimine
kasutab hypervisorit keskprotsessori emuleerimiseks, et käsitseda
ning muuta priviligeerituid ja kaitstuid keskprotsessori
operatsioone, mis on tehtud modifitseerimata guest
operatsioonisüsteemide kerneli poolt. Hypervisor hoiab kõik
virtuaalsed serverid üksteisest täiesti eraldatuna ning
teadmatuses, et füüsilisel masinal töötavad teised virtuaalsed
serverid. Kõik guest serverid töötavad oma operatsioonisüsteemi
peal. Ühel guest-il võib olla näiteks Linux ja teisel Windows . [7,
12, 14]
Täisvirtualiseerimise
pakub parimat isolatsiooni ja turvalisust virtuaalsetel masinatel.
Samuti lihtsustab ta migratsiooni ja teiseldavust kuna sama guest
operatsioonistüsteem saab töötada riistvaral nii
virtualiseeritult või niisama.
Täisvirtualiseerimine
kasutab kahte tüüpi virtualiseerimist: Type 1 Bare metal virtualiseerimine ja Type 2, hosted virtualiseerimine.
2.2.1
Hypervisor
Andmetöötluses
hypervisor või virtuaalsete masinate monitor (Virtual machine
monitor e. VMM) on osa arvuti programmist, püsivarast või
riistvarast, mis loob ja mille peal töötavad virtuaalsed masinad.
Hypervisor töötab arvuti operatsioonisüsteemi ja riistvara kerneli
vahel.
Arvuti
millel hypervisoril töötab üks või enam virtuaalseid masinaid
nimetatakse host masinateks.
Iga virtuaal masinat kutsutakse guest masinaks . Hypervisor
esitab guest operatsiooni süsteemile virtuaalse operatsioonisüsteemi
ja haldab guest operatsioonisüsteemide täidesaatmist. [16]
Hypervisor
on liigitatud 2 tüüpi. Type 1, Native või Bare-Metal
virtualiseerimine ja Type 2, Hosted virtualiseerimine.
- Type 1 (native, bare metal) kus hypervisorid töötavad otse host riistvaral, et juhtida riistvara ja, et hallata guest operatsioonisüsteemi. Nõutud ei ole host operatsioonisüsteemi täielik kohalolekut ja sellel on otsene juurdepääs allolevale füüsilisele riistvarale. Guest operatsioonisüsteem töötab teisel tasemel hypervisorist üleval pool. [16]
Joonis 1. Hypervisor Type 1. native (bare metal) [19]
- Type 2 (hosted) Hypervisior on virtualisatsiooni kiht mis on installeeritud host operatsioonisüsteemist ülespoole, nagu Windows Server, Linux vms. Host operatsioonisüsteemil on otsene juurdepääs serveri riistvarale ja on vastutav juhtimast elementaar operatsioonisüsteemi teenuseid. Type 2 Hypervisor loob virtuaal masina keskkondi ja kordineerib kutseid keskprotsessorist, mälust, kettalt, võrgust ja teisi ressursse läbi host operatsioonisüsteemi. [16]
Joonis
2.
Hypervisor Type 2. Hosted [19]
Mõned
tuntumad täisvirtualiseerimise tooteid ja tehnoloogiaid on WMware
ESX, Microsoft Hyper-V, XenServer, Wmware Workstation, Oracle VM
Virtualbox, Microsoft Virtual Server, Parallels Desktop, QEMU
2.3
Operatsioonisüsteemi tasemel virtualiseerimine
Ühtesi
ühiseid asju täisvirtualiseerimises ja paravirtualiseerimises on
hypervisori kasutamine. Operatsioonisüsteemi tasemel
virtualiseerimine ( Operating system-level virtualization), aga seda
ei kasuta üldse, vaid operatsioonisüsteemi kernel lubab mitmeid
isoleerituid user -space eksemplare ühel füüsilisel masinal. Neid
eksemplare kutsutakse containeriteks või virtuaalseteks
privaatserververiteks (Virtual Private Server). Seda sama kernelit
jagavad kõik virtuaalsed masinad ja igaüks neist saab enda root failisüsteemi. [12, 15]
Suurim limitatsioon selle tehnika juures
on, et kõik guest serverid peavad kasutama sama
operatsioonisüsteemi. Linuxiga teised distributsioonid toimivad aga
operatsioonisüsteeme nagu Windows ei saa koos hostida [12, 17].
Mõnes
mõttes on see ka eelis, kuna tänu sellele ei teki palju üldkulu . Teiseks eeliseks on operatsioonisüsteemi tasemel virtualiseerimisel patch -imine, kus administraatorid peavad ainult
patch-ima
host operatsioonisüsteemi, mille tagajärjel patch-itakes ka kõik
teised eksemplarid.
Mõned
tuntumad operatsioonisüsteemi tasemel virtualiseerimise tooteid ja
tehnoloogiaid on Parallels Virtuozzo, OpenVZ, FreeBSDJail ja Solaris Zones.
KOKKUVÕTE
Serverite
virtualiseerimine on tehnoloogia jaotamaks ühe füüsilise serveri
mitmeks virtuaalseks serveriks. Igal neist virtuaalsetest serveritest
saab olla oma operatsioonisüsteem ja rakendused ning iga eksemplar neist toimib nagu inviduaalne server. Tänu serverite
virtualiseerimisele saavad IT keskkonnad optimiseerida ja kasutada
oma eksisteerivat riistvara täiel võimsusel. Samuti hoitakse kokku
virtualiseerimisel füüsilisest ruumist, elektrist ja ka ajast.
Kõigel
heal on ka oma halvad pooled ja kaheks kõige suuremaks oleks, kui
peaks tekkima riistvaraline rike, siis virtualiseeritud keskkonnas
kannataksid kõik virtuaalsed masinad. Teiseks oleks, kuna
virtuaalseid keskkondi on väga lihtne luua, võib juhtuda, et
virtuaalseid masinaid tekib rohkem kui on inimesi, kes suudaks neid
hallata.
Kolmeks
enim levinumaks virtualiseerimis tehnikateks on
täisvirtualiseerimine, paravirtualiseerimine ja operatsioonisüsteemi
tasemel virtualiseerimine. Nii täisvirtualiseerimine kui
paravirtualiseerimine kasutavad sellist programmi, nagu Hypervisor
mis on
osa arvuti
programmist,
püsivarast või riistvarast, mis loob ja mille peal töötavad
virtuaalsed masinad.
Lühidalt
täisvirtualiseerimine loob terve virtuaalse arvuti. Kuna
täisvirtualiseerimine toetab enamus operatsioonisüsteeme on
võimalik seda kasutada programmide testimiseks erinevatel
operatsioonisüsteemidel. Selle eest on aga suur üldkulu.
Paravirtualiseerimisel
võrreldes täisvirtualiseerimisega on sarnased kasutuskohad, kuid
paravirtualiseerimisel on parem jõudlus. Miinuseks on aga, et
paravirtualiseerimine vajab modifitseeritud operatsioonisüsteemi.
Operatsioonisüsteemi
tasemel virtualiseerimises operatsioonisüsteemi kernel lubab mitmeid
isoleerituid user-space eksemplare ühel füüsilisel masinal. Suureks miinuseks seejuures on, et igal virtuaalsel masinal saab olla
ainult sama operatsioonisüsteem mis on host. Operatsioonisüsteemil
on väga väike üldkulu ja hea paindlikus. Enamasti kasutatakse seda
virtuaalsete serveritena, hostingutes ja teenuste isoleerimiseks.
KASUTATUD
MATERJAL
[1].
Wikipedia [Online] http://et.wikipedia.org/wiki/Virtualiseerimine
[2].
EverythingVM, 2011. History
of Virtualization
[Online] http://www.everythingvm.com/content/history-virtualization [08.01.2011]
[3]. Margaret Rouse, 2012.TechTarget. Type
2 hypervisor (hosted hypervisor) [Online] http://searchservervirtualization.techtarget.com/definition/hosted-hypervisor-Type-2-hypervisor
[02.2012]
[4].
Dinesh, 2011. Sysprobs. Disadvantages of Virtualization, What’s Your Opinion? [Online]
http://www.sysprobs.com/disadvantages-virtualization-opinion [05.09.2011]
[5]. Ronald McCarty, 2007. TechTarget. Paravirtualization
explained
[Online]
http://searchservervirtualization.techtarget.com/tip/Paravirtualization-explained [02.2007]
[6].
Jonathan Strickland. HowStuffWorks. How
Server Virtualization Works
[Online]
http://computer.howstuffworks.com/server-virtualization3.ht m
[7].
CCSK Guide. Full Virtualization [Online]
http://ccskguide.org/full-virtualization/ [04.04.2012]
[8].
AMD White Paper, 2008. Virtualizing
Server Workloads.
AMD
[9].
Margaret Rouse, 2006. TechTarget. Paravirtualization
[Online]
http://searchservervirtualization.techtarget.com/definition/paravirtualization [09.2006]
[10].
Amit Singh, 2004. Kernelthread. An
Introduction to Virtualization
[Online]
http://www.kernelthread.com/publications/virtualization/ [01.2004]
[11].
Brien M. Posey, 2003. TechRepublic. The
pros and cons of server virtualization [Online]
http://www.techrepublic.com/article/the-pros-and-cons-of-server-virtualization/5057662 [04.08.2003]
[12].
David Rule Jr. 2007. The Best Damn Server Virtualization Book Period.
Syngress
[13]. VMware vSphere 5.1 Documentation Center . VMware [Online]
http://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.wssdk.pg.doc%2FPG_VM_Manage.13.2.html
[14].
Rui Natário, 2011. Networks And Servers. Full
Virtualization Explained [Online]
http://networksandservers.blogspot.com/2011/11/full-virtualization-explained.html [11.2011]
[15].
Yang Yu, 2007. OS-level
Virtualization and Its Applications
[16].
Wikipedia [Online] https://en.wikipedia.org/wiki/Hypervisor
[17].
Wikipedia [Online] http://en.wikipedia.org/wiki/Operating_system-level_virtualization
[18].
Jerome Wendt, 2008. Computer
World. The downsides to server virtualization [online]
http://www.computerworld.com/s/article/9081798/Opinion_The_downsides_to_server_virtualization [01.05.2008]
[19].
Yi Zheng, 2010. ECNmag. Can
hypervisors Stand the Test of Real Time?
[Online]
http://www.ecnmag.com/articles/2010/04/can-hypervisors-stand-test-real-time [04.29.2010]
[20].
Denise Dubie, 2008. NetworkWorld. 7 Side effects of sloppy
virtualization. [Online]
http://www.networkworld.com/news/2008/062408-sloppy-virtualization.html?page=1
[24.05.2008]
14
Kõik kommentaarid