Kernel based Virtual Masin

From EIK wiki

Dineta Mahno A21 29.10.2012

KVM

Tuumapõhise virtuaalmasina (Kernel-based Virtual Machine, KVM) projekt kujutab endast avatud lähtekoodiga virtualiseerimislahenduse viimast põlvkonda. Projekti eesmärk oli luua uudne hüperviisor, mis toetub eelmiste tehnoloogiapõlvkondade kogemusele ja kasutab ära tänapäeval saadaolevat eesrindlikku riistvara. KVM on realiseeritud laaditava tuumamoodulina, mis teisendab Linuxi tuuma otse riistvaral töötavaks hüperviisoriks. KVM-i projekti puhul võeti aluseks kaks olulist projekteerimispõhimõtet, mis aitasid KVM-il küpseda kiiresti stabiilseks ja suure jõudlusega hüperviisoriks ning jõuda ette teistest avatud lähtekoodiga hüperviisoritest. Esiteks projekteeriti KVM pärast riistvarale tugineva virtualiseerimise kasutuselevõtmist, mistõttu ei olnud vaja realiseerida riistvara pakutud funktsioone. KVM-i hüperviisor nõuab Intel VT-Xi või AMD-V võimelisi protsessoreid ja kasutab neid funktsioone ära protsessori virtualiseerimiseks.

Teiseks võttis KVM-i meeskond arvesse järeleproovitud ja õiget kõnekäändu „Pole vaja hakata uuesti ratast leiutama”. Peale protsessori ja mälu virtualiseerimise võime vajab hüperviisor veel paljusid komponente, näiteks mäluhaldurit, protsessiajastit, sisend-väljundpinu, seadmedraivereid, turbehaldurit, võrgupinu jne. Tegelikult on hüperviisor spetsiaalne operatsioonisüsteem, mis erineb oma üldotstarbelistest ametivendadest ainult selle poolest, et käitab virtuaalmasinaid, mitte rakendusi. KVM-i meeskonna teiseks oluliseks otsuseks oli lülitada KVM Linuxi „ülesvoolu” tuuma. KVM-i kood esitati kogukonnale, kes Linuxi tuuma välja töötab, detsembris 2006 ja see aktsepteeriti tuuma 2.6.20 jaanuaris 2007. Sellega sai KVM-ist Linuxi põhiosa ja see suudab pärida põhifunktsioonid Linuxi tuumast.

KVM-i arhitektuur

KVM-i arhitektuuris on virtuaalmasinad realiseeritud tavaliste Linuxi protsessidena, mida ajastab standardne Linuxi ajasti. Tegelikult paistab iga virtuaalprotsessor tavalise Linuxi protsessina. See võimaldab KVM-il kasutada kõiki Linuxi tuuma funktsioone.

Pic1.png

Turve

Et virtuaalmasin on realiseeritud Linuxi protsessina, kasutab see isolatsiooni ja ressursikontrolli tagamiseks ära Linuxi standardset turbemudelit. Linuxi tuum hõlmab SELinuxit (Security-Enhanced Linux, täiustatud turbega Linux) – projekti, mille on välja töötanud USA riiklik julgeolekuagentuur, et lisada nii kohustuslikud pääsu reguleerimise vahendid, mitmetasandiline ja mitme kategooriaga turve kui ka poliitika jõustamine. SELinux tagab Linuxi tuumas töötavate protsesside jaoks ressursside range isoleerimise ja piiramise. Projekti sVirt eesmärk oli töötada SELinuxi baasil välja taristu, mis võimaldaks administraatoritel määratleda virtuaalmasinate isoleerimise poliitikat. Standardseadistusega sVirt tagab, et ühegi virtuaalmasina ressurssidele ei pääse juurde muu protsess (ega virtuaalmasin). Administraator saab neid võimalusi laiendada ja määratleda väga täpsed õigused, näiteks luua ressursside ühiskasutamiseks virtuaalmasinate rühmad.

Mäluhaldus

Pic2.png

KVM pärib Linuxi võimsad mäluhaldusfunktsioonid. Virtuaalmasinale eraldatud mälu talletatakse samamoodi nagu igale muule Linuxi protsessile eraldatud mälu ja seda on võimalik saalida, kasutades jõudluse suurendamiseks suuri saalefaile, ühiskasutusse anda või toetada kettal asuva faili abil.


Riistvaratugi

Kuna KVM on Linuxi osa, on selle käsutuses kogu riistvara ökosüsteem, nii et KVM saab kasutada iga riistvaraseadet, mida toetab Linux. Linux võib nautida üht suurimat riistvaramüüjate ökosüsteemi ja tänu avatud lähtekoodiga tarkvara kogukonna iseloomule, mis võimaldab riistvaramüüjatel osaleda Linuxi tuuma väljatöötamises, lisatakse uusimad riistvarafunktsioonid Linuxi tuumale kiiresti. Seetõttu saab KVM kasutada väga mitmesuguseid riistvaraplatvorme.

Salvestus

KVM suudab virtuaalmasina tõmmiste salvestamiseks kasutada iga salvestit, mida toetab Linux, sealhulgas kohalikke IDE-, SCSI- ja SATA-kettaid, NFS-i ja SAMBA-t/CIFS-protokolli kasutavaid võrgusalvesteid (NAS) ning iSCSI ja Fibre Channeli toega salvestivõrke. Et KVM on Linuxi tuuma osa, on selle käsutuses järeleproovitud ja töökindel salvestustaristu, mida toetavad kõik juhtivad salvestimüüjad, ning salvestuspinu, mis on end tootmisjuurutustes üleilmselt tõestanud. Samuti toetab KVM virtuaalmasinate tõmmiste salvestamist ühiskasutusega failisüsteemidesse, näiteks failisüsteemi Global File System (GFS2), et oleks võimalik virtuaalmasina tõmmise ühiskasutus mitme hosti vahel või loogiliste draivide abil.

Pic3.png

Live Migration

Pic4.png

KVM toetab reaalajas migreerimise tehnoloogiat Live Migration, mis võimaldab teisaldada töötava virtuaalmasina ühest füüsilisest hostist teise, ilma et katkeks teenuse osutamine. Lõppkasutajale on Live Migration läbipaistev: virtuaalmasina uude füüsilisse hosti ümberpaigutamise ajal jääb virtuaalmasin tööle ja võrguühendused aktiivseks ning kasutaja rakendused töötavad edasi. Reaalajas migreerimise kõrval toetab KVM virtuaalmasina hetkeoleku kettale salvestamist, et oleks võimalik see talletada ja hiljem seda edasi kasutada.

Külalissüsteemide tugi

KVM toetab laia valikut külalisoperatsioonisüsteeme alates sellistest peavoolu operatsioonisüsteemidest nagu Linux ja Windows ning lõpetades muude platvormidega, muu hulgas OpenBSD, FreeBSD, OpenSolaris, Solaris x86 ja MS DOS. Ettevõtetele mõeldud Red Hati toodete puhul on KVM sertifitseeritud Microsofti valideerimiskava Server Virtualization Validation Program (SVVP) kohaselt, et tagada Microsofti täielik äritugiteenus kasutajatele, kes tarvitavad Microsoft Windows Serverit operatsioonisüsteemi Red Hat Enterprise Linux ja Red Hat Enterprise Virtualization Hypervisori (RHEV-H) platvormil.

Seadmedraiverid

KVM toetab hübriidvirtualiseerimist, mille puhul külalisoperatsioonisüsteemi installitakse paravirtualiseeritud draiverid, et virtuaalmasinad saaksid kasutada optimeeritud sisend-/väljundliidest, mitte emuleeritud seadmeid. See tagab võrgu- ja plokkseadmetele suurema sisend-/väljundjõudluse. KVM-i hüperviisor kasutab paravirtualiseeritud draiverite jaoks VirtIO standardit, mille on välja töötanud IBM ja Red Hat koos Linuxi kogukonnaga. See on hüperviisorist sõltumatu liides seadmedraiverite loomiseks ja võimaldab kasutada mitme hüperviisori puhul sama seadmedraiverite komplekti. Tänu sellele saavutatakse külalissüsteemide parem koostalitlusvõime.


Kasutatud kirjandus

http://www.techopedia.com/definition/28437/kernel-based-virtual-machine-kvm http://rus-linux.net/nlib.php?name=/MyLDP/vm/KVM/kvm_introduction.html http://www.redhat.com/rhecm/rest-rhecm/jcr/repository/collaboration/jcr:system/jcr:versionStorage/5e7884ed7f00000102c317385572f1b1/1/jcr:frozenNode/rh:pdfFile.pdf