KVM

Nastavitev skladov Libvirt QEMU in KVM v Debianu

Nastavitev skladov Libvirt QEMU in KVM v Debianu
Virtualizacija, ki temelji na QEMU-KVM, je v središču sklopa virtualizacije, ki temelji na Linuxu. Je brezplačna in odprtokodna in je ena najbolj razširjenih tehnologij za virtualizacijo v industriji. Večina ponudnikov storitev v oblaku uporablja KVM in to z dobrim razlogom. Ponuja zelo učinkovit, a hkrati zelo varen niz za virtualizacijo in ni zapletenih licenc, s katerimi bi se lahko ukvarjali. To ne velja za vaše tipične nastavitve Hyper-V ali VMWare. Kompromis pa je, da je namestitev lahko zelo zapletena, zlasti za neizkušene uporabnike. Ta članek naj bi bralcu zmanjšal to zapletenost.

S tem poskusimo nastaviti svoj lastni KVM hipervizor na strežniku Debian 9 .

Omogočanje razširitev VT-x ali AMD-V

V idealnem primeru boste potrebovali čisto namestitev vaše najljubše distribucije Linuxa na računalnik (ne VM), ki ima dokaj sodoben CPU. Večina sodobnih procesorjev Intel podpira razširitve VT-x, podobno pa ima AMD razširitve AMD-V. Te razširitve so "izboljšave", vgrajene neposredno v silicij vašega procesorja, kar omogoča hitrejšo in varnejšo virtualizacijo. Te razširitve morate omogočiti znotraj menija BIOS / UEFI vaše matične plošče. Za več informacij glejte priročnik za matično ploščo.

Če ne želite skrbeti za svojo popolnoma delujočo delovno postajo Linux, lahko za izvajanje teh poskusov uporabite navidezni stroj v oblaku. DigitalOcean, na primer, ponuja navidezne stroje, ki imajo omogočeno ugnezdeno virtualizacijo. To vam omogoča zagon VM-jev znotraj VM-ja, ki ga gosti v oblaku (to je znano kot ugnezdena virtualizacija). Očitno bo to zelo neučinkovit način za praktično zagon hipervizorja, toda kot poskus bo šlo povsem v redu. Zagotovite si vsaj 4 GB pomnilnika in več kot 2 CPU.

Ko omogočite omenjene razširitve, lahko to preverite tako, da zaženete lscpu in poiščete vnos za virtualizacijo:

$ lscpu
.. .
Virtualizacija: VT-x
.. .

Zdaj, ko imamo v podaljških omogočen čas za nadaljnji premik v nizu.

Namestitev KVM in QEMU

KVM (ali navidezni stroj na osnovi jedra) je sestavljen iz nekaj modulov jedra Linuxa, ki bodo izkoristili razširitve CPU, ki smo jih omogočili prej. Po drugi strani pa QEMU sestavlja kup uporabniških programov, ki nam omogočajo emulacijo. Kot samostojno programsko opremo lahko QEMU uporabljamo za zagon programov iz ene arhitekture, kot je ARM, na drugi, kot je x86_64, in obratno. Z njim lahko zaženete kar koli, od ene binarne datoteke do celotnega operacijskega sistema.

Seveda ga bomo uporabili samo za virtualizacijo operacijskih sistemov x86_64 na platformi x86_64. In za to potrebujemo samo en paket:

$ sudo apt namestite qemu-kvm

S paketom lahko preverite, ali je paket naložil vse zahtevane module:

$ lsmod | grep kvm
kvm_intel 200704 0
kvm 598016 1 kvm_intel
irqbypass 16384 1 kvm

Teoretično je to vse, kar potrebuješ. Toda kmalu boste spoznali, da je to praktično. Navidezni stroji so izjemno zapleteni, zato potrebujemo programski ovoj, ki bo na dokaj avtomatiziran (in razširljiv način) obvladoval različne zahteve, kot so omrežja, upravljanje datotečnega sistema itd. Za to potrebujemo knjižnico / demon za virtualizacijo Libvirt.

Namestitev Libvirt

Libvirt je najpomembnejši del vašega sklada za virtualizacijo. Demon libvirtd v ozadju izvaja storitve, povezane z virtualizacijo. Storitve, ki poslušajo zahteve, kot so »Ustvari VM«, »Uniči VM«, »Ustvari omrežje« itd. In jih v njih izvrši z uporabo osnovnih pripomočkov Linuxa, kot so binarne datoteke qemu, iptables itd.

Libvirt je zelo splošen in se lahko uporablja za upravljanje gostov KVM, vsebnikov LXC in sklada za virtualizacijo Xen. Za goste KVM se bomo zaenkrat osredotočili le na Libvirt. Libvirtd izpostavlja API, ki ga lahko uporabljajo GUI aplikacije, kot so virt-manager ali oVirt ali orodja ukazne vrstice, kot so virt-install, virsh itd. Napišemo lahko celo lastne odjemalce po meri, ki uporabljajo isti standardni API.  Uporabljali bomo orodja ukazne vrstice, kot sta virsh in virt-install, da bomo stvari poenotili.

Namestimo vsa ta orodja:

$ apt namestite libvirt-client libvirt-daemon-system virtinst

Potrebovali bomo tudi še en paket libguestfs-tools, ki nam bo pomagal urejati ali spreminjati trde diske in datotečne sisteme gostujočih VM.

Super! Zdaj smo namestili celoten sklad in vemo, kako je postavljena arhitektura. Če želite uporabljati libvirt (in sorodna orodja), dodajte svojega uporabnika v skupine libvirt-qemu in libvirt.

$ sudo usermod -aG libvirt
$ sudo usermod -aG libvirt-qemu

Ali pa ukaze zaženite kot korenski uporabnik.

Virsh in zagon privzetega omrežja

Pripomoček za ukazno vrstico virsh je nekaj, kar boste veliko uporabljali pri upravljanju svojih VM-jev. Lahko preprosto vtipkate virsh in se spustite v vmesnik ukazne vrstice virsh ali vtipkate virsh [Možnosti] iz vaše običajne lupine. Pojdite skozi izhod virsh help, kadar koli zataknete kakšno operacijo, povezano z VM.

Prvi ukaz virsh, ki ga bomo uporabili, bo poklical privzeto omrežje, na katerega se lahko VM poveže:

$ virsh privzeto neto samodejni zagon
$ virsh privzeti neto zagon

S tem boste zagnali privzeto omrežje in zagotovili, da se samodejno zažene ob ponovnem zagonu gostitelja. Če želite preveriti podrobnosti o tem privzetem omrežju, uporabite ukaz:

$ virsh net-dumpxml privzeto

privzeto
3d723dc6-49a4-4f73-bf6d-623d6b46b099












Datoteka xml vam lahko prikaže obseg možnih naslovov IP in način njihove komunikacije z zunanjim svetom. V bistvu jim bo promet prišel prek NAT-a in ne bodo del zunanjega omrežja vašega gostitelja. Bridge Networking lahko uporabite za izpostavljanje vsakega VM v LAN gostiteljske naprave.

Za zagon navideznega računalnika

Za zagon navideznega računalnika potrebujemo namestitveni medij (kot je namestitveni ISO za kateri koli operacijski sistem) in koliko procesorjev in koliko pomnilnika je treba dodeliti VM ter če potrebuje VNC. V tem koraku lahko resnično cenite namestitveni program GUI, kot je virt-manager, vendar bomo to storili s precej zapletenim ukazom virt-install.

Vse svoje zagonske medije najraje obdržim na / var / lib / libvirt / boot in vse VM-je in njihov navidezni trdi disk na / var / lib / libvirt / images (privzeto mesto), kar poenostavi organizacijo.

$ cd / var / lib / libvirt / boot
$ wget http: // javnost.ubuntu.com / 18.04.2 / ubuntu-18.04.2-namizje-amd64.izo

Zgornji ukaz prinese ISO namizja Ubuntu, prav tako lahko preprosto dobite CentOS ali katero koli drugo distribucijo, ki jo želite.

Če želite ustvariti novo VM in jo zagnati:

$ virt-install --virt-type kvm \
--ime myVM \
--pomnilnik 2048 --vcpus = 2 \
--cdrom / var / lib / libvirt / boot / ubuntu-18.04.2-namizje-amd64.iso \
--velikost diska = 40 \
--grafika vnc, poslušaj = 0.0.0.0, vrata = 5900 \
--noautoconsole

Zgornji ukaz je res zapleten. Predlagam, da te ukaze shranite v besedilne datoteke in jih zaženete kot izvršljive skripte, kadar koli ustvarite nov VM. Večina parametrov, kot sta vir-type in virt-name, je precej samoumevnih. Prav dolgočasno jih je zapisovati.

Zadnja možnost za prikaz VNC bo zagnala strežnik VNC in vam omogočila daljinski dostop do VM s povezavo na gostiteljska vrata 5900. Odprite odjemalca VNC na namizju in pojdite na IP vašega gostitelja KVM na vratih 5900. Prepričajte se, da ste dosegli IP gostitelja in ne IP VM. Vaš VNC se bo povezal z video izhodom vašega VM-ja in lahko nadaljujete z namestitvijo.

Kam naprej?

Od tu naprej lahko poskusite zaustaviti, ustaviti in izbrisati VM-je. Osnovno infrastrukturo lahko tudi spremenite tako, da dodate področja za shranjevanje in konfigurirate mostna omrežja. Vse konfiguracijske datoteke za posamezne VM-je, omrežne vmesnike in pomnilniške bazene so shranjene v / etc / libvirt / in / etc / libvirt / qemu.

Včasih boste morali fizično izbrisati datoteke trdega diska, shranjene v / lib / libvirt / images, tudi po odstranitvi VM iz libvirt. Za nadaljnjo avtomatizacijo poskusite uvoziti slike qcow2, ki jih ima večina distribucij linuxa, kot sta Ubuntu in CentOS. V njih je prednameščen operacijski sistem.

Zaključek

Nastavitev tega ni nikdar tako enostavna kot nastavitev VirtualBox-a, razlog za to pa je večkraten. Večina skladov je zapletena, ker je zasnovana tako, da je modularna in zelo prilagodljiva. Ne predvideva, kje uporabljate VM. Okolje je lahko osebno namizje ali podatkovni center. Delo z grafičnim uporabniškim vmesnikom lahko to zapletenost do neke mere zmanjša. Ti sistemi pa so zasnovani za delo z API-jem REST za povezavo z računskimi sistemi, nadzornimi sistemi itd. Po napotitvi se jih človek skoraj nikoli ne dotakne.

Kljub temu je avtomatizacija ime igre z libvirt in qemu-kvm. Preglejte uradno dokumentacijo in napišite svoj lasten skript, da zavrtite floto VM-jev in nam sporočite, če se vam je ta vadnica zdela koristna.

OpenTTD vs Simutrans
Ustvarjanje lastne simulacije prevoza je lahko zabavno, sproščujoče in izjemno vabljivo. Zato morate preizkusiti čim več iger, da boste našli tisto, k...
Vadnica za OpenTTD
OpenTTD je ena izmed najbolj priljubljenih poslovnih simulacijskih iger. V tej igri morate ustvariti čudovit prevozniški posel. Vendar boste začeli na...
SuperTuxKart za Linux
SuperTuxKart je odličen naslov, zasnovan tako, da vam brezplačno ponuja izkušnjo Mario Kart v vašem sistemu Linux. Igrati je precej zahtevno in zabavn...