Libvirt

Libvirt on avatud lähtekoodiga vaba tarkvarakogu, mis võimaldab hallata virtualiseerimistarkvarasid ja nendele eraldatavaid ressursse, näiteks nagu võrguliidesed ja kettaruum. Libvirt sisaldab API teeki, teenust libvirtd ja käsurida virsh.

Ajalugu 
Aastal 2005 hakkas RedHat arendama rakendust, mis võimaldaks juhtida virtuaalmasinaid ühiste käskudega, sõltumata sellest, mis tarkvaral need töötavad . Sama aasta 19. detsembril ilmus versioon 0.0.1, mille nimeks oli libvir ja mis võimaldas teostada põhilisi operatsioone virtualiseerimistarkvaraga Xen. Järgmise aasta veebruaris anti tarkvarale uusi nimi – libvirt. Alles aasta pärast lisandus versioonis 0.2.0 tugi KVM ja Qemu juhtimiseks ning võrguühenduste konfigureerimiseks. Kiire areng algas versioonist 0.7.0 (5. august 2009), millega lisandusid näiteks VMWare ESX tugi ja võrguliideste hot-plug (virtuaalmasinat peatamata) lisamise ja eemaldamise võimalus. Versioon 8.2.0 võimaldab teostada virtuaalmasinate live-migratsiooni (virtuaalmasinate teisaldamine ilma neid peatamata) erinevate füüsiliste arvutite vahel. Aasta 2012 suve lõpus ilmus versioon 0.10.1

Toetatud arhitektuurid 
Libvirt on kirjutatud C keeles, mis tähendab, et lisaks traditsioonilistele x86 ja amd64 arhitektuuridele on selle lähtekoodi võimalik kompileerida teiste arhitektuuride jaoks. Näiteks Linuxi distributsioon Debian pakub seda eelkompileeritud paketina arhitektuuridele alpha, arm, ia64, mips, powerpc, s390, sh4, sparc ja teised. Virtualiseerimise toeta arhitektuuridele kompileerimise põhjuseks on soov võimaldada nendelt juhtida teistel arvutitel töötavaid virtuaalmasinaid läbi arvutivõrgu.

Toetatud virtualiseerimistarkvarad 
Käsurea Virsh abil on võimalik hallata nii kohalikus kui ka kaudses arvutis töötavaid virtualiseerimistarkvarasid. Selleks, et toetatud tarkvarade kogus ja nende funktsionaalsus oleks suurim, täidab libvirt palju funktsioone riistvara draiverite tasandil. Toetatud on järgmised virtualiseerimistarkvarad:
KVM (Linux Kernel Virtual Machine)
Qemu
LXC
OpenVZ
UMP (User Mode Linux)
VirtualBox
VMWare ESX
VMWare Workstation ja VMWare Player
Xen
Microsoft Hyper-V
Igal tarkvaral on olnud erinev väljatöötamisprotsess ja on erinevad võimalused, mistõttu libvirt ei toeta iga tarkvara kõiki funktsioone.

Töömudel 
Rääkides riistvara virtualiseerimisest, eristatakse selle tehnoloogia erinevaid kihte. Kõige madalam kiht on riistvara. Sellel peab olema virtualiseerimise tugi (Inteli protsessoritel VT-x, AMD protsessoritel AMD-V) ning piisavalt ressursse (näiteks mälu mahtu ja kettaruumi), et oleks võimalik käivitada mitu operatsioonisüsteemi. Riistvaralisel kihil paikneb järgmine kiht, milleks on operatsioonisüsteem, samuti tuntud kui Domeen-0. Teisel ehk operatsioonisüsteemikihil töötab virtualiseerimistarkvara ehk hypervizor (kolmas kiht), mis jagab esimese kihi ressursse ja tekitab virtuaalse riistvara (neljas kiht või Domeen-n). Igal tekitatud neljandal kihil on võimalik käivitada teistest sõltumatu operatsioonisüsteem. Libvirt käivitub teisel kihil ning on mõeldud eelkõige Linuxi tuumaga operatsioonisüsteemidele, kuigi virsh käsurida on võimalik käivitada ka teistel, näiteks Windows ja FreeBSD.

Libvirt võimaldab hallata nii kohalikus kui ka kaudses arvutis töötavaid kolmandaid kihte. Virtualiseerimistarkvarade juhtimiseks kaudsetel arvutitel on vajalik Libvirt olemasolu ka nendel.

Käsurida virsh 
Libvirti tarkvarapakett sisaldab käsurida virsh, mis on peamine virtualiseerimistarkvarade haldusvahend. Käsurida võimaldab:
käivitada virtuaalmasinaid
pehmelt sulgeda (power-nupu emuleerimine)
raskelt sulgeda (nagu füüsilisel masinal toitekaabli eemaldamine)
ajutiselt peatada ja jätkata käiku
salvestada ja taastada seisundid
teha hetketõmmiseid ja taastada neid
jooksvalt lisada ja eemaldada kettaid
jooksvalt lisada ja eemaldada seadmeid (näiteks võrgukaart)
jälgida virtuaalmasinate seisundit ja nende ressursikasutust
teisaldada virtuaalmasinaid ühest arvutist teise

Teenus libvirtd 
Libvirtd on teenus, mis käivitub koos operatsioonisüsteemiga. Selle põhifunktsiooniks on virtuaalmasinate automaatne käivitamine, käsureale juurdepääsu tekitamine ning käsurealt saadud käskude töötlemine.

Konfiguratsioon 
Libvirt kasutab konfiguratsiooniandmeid kolmel erineval tasemel.

Esimene taseme konfiguratsioonifail asub /etc/libvirt/libvirtd.conf ning määrab teenuse libvirtd sellised parameetrid, nagu juurdepääs teenusele ja kasutajaõigused.

Teine tase on iga virtualiseerimistarkvara jaoks eraldi konfiguratsioonifail. Näiteks Qemu ja KVM vahendavad ekraanipilti VNC protokolli abil, mille sidusus IP-aadressile ja parool on seadistatavad tarkvaradele vastavates konfiguratsioonifailides. Selliste failide asukoht on vaikimisi kataloogis /etc/libvirt. Erinevate virtualiseerimistarkvarade konfiguratsioonifailid üldjuhul ei ole omavahel ühilduvad.

Kolmas tase on igale virtuaalmasinale vastav konfiguratsioonifail. Need failid on XML-vormingus ja sisaldavad näiteks:
virtuaalsete protsessorituumade ja lõimede arvu
mälu mahtu (vaikimisi maht ja ülemine piir)
ketaste seadeid
võrguliideste seadeid

Minimaalne konfiguratsioonifail näeb välja järgmiselt:
<domain type='kvm'>					<!-- Kasutame KVM virtualiseerimistarkvarana -->
  <name>meiliserver</name>				<!-- Virtuaalmasina nimeks olgu "meiliserver" -->
  <uuid></uuid>						<!-- Virtuaalse riistvara UUID genereeritakse automaatselt -->
  <memory> 524288</memory>				<!-- Mälu mahu ülemine piir kilobaitides -->
  <currentMemory>131072</currentMemory>			<!-- Vaikimisi mälu maht kilobaitides -->
  <vcpu>1</vcpu>					<!-- Virtuaalsete protsessorite arv -->
  <devices>
    <emulator>/usr/bin/kvm<emulator>			<!-- Tee KVM-i rakendusele -->
    <disk type='file' device='disk'>			<!-- Ketta allikaks olgu fail -->
      <syntaxhighlight file='/data/vm/meiliserver.img'/>		<!-- Tee failile, mis on ketta allikaks -->
      <target dev='hda'/>				<!-- Defineeritud ketas olgu esimene (hda) -->
    </disk>
    <interface type='network'>				<!-- Defineerime võrguliidese -->
      <syntaxhighlight network='default'/>			<!-- Võrguliides ühendatud virtuaalse võrguga "default" -->
    </interface>
    <graphics type='vnc' port='5900'/>			<!-- Konsool olgu kättesaadav pordil 5900 VNC abil -->
  </devices>
</domain>

Virtuaalmasinate konfiguratsioonifailid on erinevate virtualiseerimistarkvarade vahel üldjuhul ühilduvad, kui muuta virtualiseerimistarkvarat defineerivaid kirjeid.

Käsureal virsh on eraldi konfiguratsioonifail, mis asub /etc/libvirt/libvirt.conf ning määrab näiteks vaikimisi hallatava arvuti ning teiste arvutite aliased.

Turvalisus 
Kohalikus arvutis juhtimisõiguste määramiseks on toetatud PolicyKiti rakendus, mille abil on võimalik luua kasutajaid. Kasutajaõigused määratakse teenuse libvirtd konfiguratsioonifailis. Samas failis on võimalik lubada ligipääs ka läbi arvutivõrgu ning selleks vajalikud parameetrid, näiteks x509 sertifikaadid ja ühenduse krüpteerimine. Libvirt toetab autentimisprotokolle Kerberos ja SASL.

Abivahendid 
Kuigi käsurea virsh kasutamine ei nõua erilist väljaõpet, on loodud mitmeid graafilisi abivahendeid, mis muudavad virtualiseerimistarkvarade haldamise veelgi efektiivsemaks ja mugavamaks. Graafilisi abivahendeid leidub ka mobiilsetele platvormidele ja ka veebipõhiseid.

Virt-manager 
Virt-manager on üks võimsamatest abivahenditest, millega on võimalik juhtida tarkvara Libvirt ning jälgida selle jõudlust ja ressursside kasutamist graafikute pealt. Virtuaalmasinate loomist abistab viisard, mis sarnaneb paljude virtualiseerimistarkvaradega. Virt-manager võimaldab ka virtuaalmasinaid peatamata muuta nende virtuaalse riistvara konfiguratsiooni, nagu protsessorite arvu ja eraldavat mälu mahtu. Rakendus sisaldab integreeritud VNC klienti, mis võimaldab mugavalt saavutada ühendust virtuaalmasina konsooliga.

oVirt 
oVirt on veebirakendus, mis on kasulik, kui traditsiooniline rakendus ei ole pagutatud kohalikku arvutisee. oVirt võimaldab virtuaalmasinaid käivitada, peatada, luua, jooksvalt teisaldada ning hinnata nende jõudlust graafikutelt.

VM Manager 
Kuna IT-süsteemide administreerimisel kasutatakse järjest rohkem mobiilseid seadmeid, on loodud ka Androidi operatsioonisüsteemile mugav abivahend VM Manager. Selle roll on väike – see võimaldab virtuaalmasinaid käivitada, peatada ja jälgida nende olekut.

Viited

Välislingid 
Libvirti ametlik koduleht
Anatomy of the libvirt virtualization library
Virt-manageri koduleht
oVirt koduleht
VM Manager Google Play Store'is

Tarkvara