Nastavenie Libvirt QEMU a zásobníka KVM v Debiane


Virtualizácia založená na QEMU-KVM je srdcom virtualizačného balíka založeného na Linuxe. Je to bezplatný a otvorený zdroj a je jednou z najrozšírenejších virtualizačných technológií v tomto odvetví. Väčšina poskytovateľov cloudových služieb používa KVM a má to dobrý dôvod. Ponúka veľmi efektívny a napriek tomu veľmi bezpečný balík virtualizácie a nie je potrebné riešiť žiadne komplikované licencovanie. Toto nie je prípad vášho typického nastavenia Hyper-V alebo VMWare. Kompromisom však je, že nastavenie môže byť veľmi zložité, najmä pre neskúsených používateľov. Cieľom tohto článku je znížiť túto zložitosť pre čitateľa.

S týmto povedané, skúsme nastaviť náš vlastný hypervízor KVM na serveri Debian 9.

Povolenie rozšírení VT-x alebo AMD-V

V ideálnom prípade budete potrebovať čistú inštaláciu vašej obľúbenej linuxovej distribúcie na stroji (nie VM), ktorý má pomerne moderný procesor. Väčšina moderných procesorov Intel podporuje rozšírenia VT-x a podobne aj AMD má svoje rozšírenia AMD-V. Tieto rozšírenia sú „vylepšeniami“ zabudovanými priamo do kremíka vášho CPU, čo umožňuje rýchlejšiu a bezpečnejšiu virtualizáciu. Tieto rozšírenia musíte povoliť z ponuky BIOS/UEFI základnej dosky. Ďalšie informácie nájdete v príručke k základnej doske.

Ak nechcete pošpiniť svoju perfektne fungujúcu linuxovú pracovnú stanicu, na spustenie týchto experimentov môžete použiť virtuálny počítač v cloude. DigitalOcean napríklad ponúka virtuálne stroje, ktoré majú povolenú vnorenú virtualizáciu. To vám umožňuje spúšťať virtuálne počítače vo vašom virtuálnom počítači hosťovanom v cloude (toto je známe ako vnorená virtualizácia). Je zrejmé, že to bude veľmi neefektívny spôsob, ako prakticky spustiť hypervízor, ale ako experiment to bude fungovať dobre. Uistite sa, že máte aspoň 4 GB pamäte a viac ako 2 procesory.

Po povolení uvedených rozšírení si to môžete overiť spustením lscpu a vyhľadaním položky Virtualizácia:

$ lscpu
….
Virtualization: VT-x
….

Teraz, keď máme povolené rozšírenia, je čas posunúť sa ďalej v zásobníku.

Inštalácia KVM a QEMU

KVM (alebo Kernel-Based Virtual Machine) pozostáva z niekoľkých modulov jadra Linuxu, ktoré budú využívať rozšírenia CPU, ktoré sme povolili skôr. QEMU na druhej strane pozostáva z množstva užívateľských programov, ktoré nám poskytujú možnosti emulácie. Ako samostatný softvér možno QEMU použiť na spúšťanie programov z jednej architektúry, napríklad ARM, na inej, napríklad x86_64 a naopak. Dá sa použiť na spustenie čohokoľvek od jedného binárneho súboru až po celý operačný systém.

Samozrejme ho použijeme len na virtualizáciu operačných systémov x86_64 na platforme x86_64. A na to potrebujeme iba jeden balík:

$ sudo apt install qemu-kvm

Môžete si overiť, že balík načítal všetky požadované moduly spustením:

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

To je všetko, čo potrebujete, teoreticky. Ale čoskoro zistíte, že je to praktické. Virtuálne stroje sú nesmierne zložité a vyžadujeme softvérový obal na riadenie všetkých rôznych požiadaviek, ako je sieťovanie, správa súborového systému atď., a to pomerne automatizovaným (a škálovateľným spôsobom). Na to potrebujeme virtualizačnú knižnicu/démon Libvirt.

Inštalácia Libvirt

Libvirt je podstatnou súčasťou vášho virtualizačného balíka. Démon libvirtd spúšťa služby súvisiace s virtualizáciou na pozadí. Služby, ktoré počúvajú požiadavky ako „Vytvoriť VM“, „Zničiť VM“, „Vytvoriť sieť“ atď., a vykonávajú ich v nich pomocou základných nástrojov Linuxu, ako sú binárne súbory qemu, iptables atď.

Libvirt je veľmi zovšeobecnený a možno ho použiť na správu hostí KVM, kontajnerov LXC a virtualizačného zásobníka Xen. My sa zatiaľ zameriame len na Libvirt pre hostí KVM. Libvirtd odhaľuje API, ktoré môžu používať GUI aplikácie ako virt-manager alebo oVirt alebo nástroje príkazového riadku ako virt-install, virsh, atď. Môžeme napísať aj našich vlastných vlastných klientov, ktorí používajú rovnaké štandardné API. Budeme používať nástroje príkazového riadka, ako je virsh a virt-install, aby sme udržali veci štandardizované.

Nainštalujte všetky tieto nástroje:

$ apt install libvirt-clients libvirt-daemon-system virtinst

Budeme tiež potrebovať ďalší balík libguestfs-tools, ktorý nám pomôže upraviť alebo upraviť pevné disky a súborové systémy hosťujúceho VM.

Skvelé! Teraz sme nainštalovali celý zásobník a vieme, ako je architektúra usporiadaná. Ak chcete použiť libvirt (a súvisiace nástroje), pridajte svojho používateľa do skupín libvirt-qemu a libvirt.

$ sudo usermod -aG libvirt <username>
$ sudo usermod -aG libvirt-qemu <username>

Alebo spustite príkazy ako užívateľ root.

Virsh a Spustenie predvolenej siete

Pomôcka príkazového riadka virsh je niečo, čo budete často používať pri správe svojich VM. Môžete jednoducho zadať virsh a spustiť príkazový riadok virsh, alebo napísať virsh [Options] z vášho bežného shellu. Prejdite si výstup pomoci virsh vždy, keď sa zaseknete pri nejakej operácii súvisiacej s VM.

Prvý príkaz virsh, ktorý použijeme, vyvolá predvolenú sieť, ku ktorej sa môže virtuálny počítač pripojiť:

$ virsh net-autostart default
$ virsh net-start default

Tým sa spustí predvolená sieť a zabezpečí sa, že sa spustí automaticky pri reštarte hostiteľa. Ak chcete skontrolovať podrobnosti o tejto predvolenej sieti, použite príkaz:

$ virsh net-dumpxml default
<network>
<name>default</name>
<uuid>3d723dc6-49a4-4f73-bf6d-623d6b46b099</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:4d:1b:02'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>

Súbor xml vám môže ukázať rozsah možných IP adries a spôsob, akým budú komunikovať s vonkajším svetom. Prevádzka k nim v podstate príde cez NAT a nebudú súčasťou externej siete vášho hostiteľa. Sieťový mostík môžete použiť na vystavenie každého VM sieti LAN hostiteľského počítača.

Ak chcete spustiť virtuálny stroj

Na spustenie virtuálneho počítača potrebujeme inštalačné médium (ako inštalačný ISO pre ľubovoľný operačný systém) a koľko CPU a koľko pamäte je potrebné prideliť VM a či potrebuje VNC. V tomto kroku môžete skutočne oceniť inštalačný program GUI, ako je virt-manager, avšak urobíme to pomocou pomerne zložitého príkazu virt-install.

Chcem mať všetky svoje zavádzacie médiá na /var/lib/libvirt/boot a všetky VM a ich virtuálny pevný disk na /var/lib/libvirt/images (predvolené umiestnenie), čo zjednodušuje organizáciu.

$ cd /var/lib/libvirt/boot
$ wget http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-amd64.iso

Vyššie uvedený príkaz načíta ISO pracovnej plochy Ubuntu, rovnako ľahko môžete získať CentOS alebo akúkoľvek inú distribúciu, ktorú chcete.

Ak chcete vytvoriť nový VM a spustiť ho, spustite:

$ virt-install --virt-type kvm \
--name myVM \
--memory 2048 --vcpus=2 \
--cdrom /var/lib/libvirt/boot/ubuntu-18.04.2-desktop-amd64.iso \
--disk size=40 \
--graphics vnc,listen=0.0.0.0,port=5900 \
--noautoconsole

Vyššie uvedený príkaz je skutočne komplikovaný. Navrhujem uložiť tieto príkazy do textových súborov a spustiť ich ako spustiteľné skripty vždy, keď vytvoríte nový VM. Väčšina parametrov ako virt-type a virt-name je celkom samozrejmá. Len ich je zdĺhavé zapisovať.

Posledná možnosť pre zobrazenie VNC spustí VNC server a umožní vám vzdialený prístup konzoly k vášmu VM pripojením k portu hostiteľa 5900. Otvorte klienta VNC na pracovnej ploche a prejdite na IP hostiteľa KVM na porte 5900 Uistite sa, že ste dosiahli IP hostiteľa a nie IP VM. Váš VNC sa pripojí k video výstupu vášho VM a môžete pokračovať v inštalácii.

Kam ďalej?

Odteraz môžete skúsiť pozastaviť, zastaviť a odstrániť virtuálne počítače. Môžete tiež upraviť základnú infraštruktúru pridaním oblastí pre ukladanie a konfiguráciou premosťovacích sietí. Všetky konfiguračné súbory pre jednotlivé VM, sieťové rozhrania a úložné oblasti sú uložené v /etc/libvirt/ a /etc/libvirt/qemu.

Niekedy budete musieť fyzicky vymazať súbory na pevnom disku uložené v /lib/libvirt/images aj po odstránení VM z libvirt. Ak chcete veci ďalej automatizovať, skúste importovať obrázky qcow2 z väčšiny linuxových distribúcií, ako sú Ubuntu a CentOS. V nich je predinštalovaný OS.

Záver

Toto nastavenie nie je nikde také jednoduché ako nastavenie VirtualBoxu a dôvodov je viacero. Väčšina zásobníkov je komplikovaná, pretože je navrhnutá tak, aby bola modulárna a vysoko škálovateľná. Nerobí žiadne predpoklady o tom, kde spúšťate VM. Prostredím môže byť osobný desktop alebo dátové centrum. Práca s GUI môže do určitej miery pomôcť znížiť túto zložitosť. Tieto systémy sú však navrhnuté tak, aby spolupracovali s REST API na pripojenie k fakturačným systémom vašej organizácie, monitorovacím systémom atď. Po nasadení sa ich človek takmer nikdy nedotkne.

To znamená, že automatizácia je názov hry s libvirt a qemu-kvm. Prezrite si oficiálnu dokumentáciu a napíšte si vlastný skvelý skript, aby ste vytvorili flotilu virtuálnych počítačov, a dajte nám vedieť, či sa vám tento návod zdá užitočný.

Súvisiace články: