Om libvirt

Om libvirt
Libvirt er et av mest populære virtualiseringsstyringsverktøy der ute. Det er sammensatt av et administrasjons -API og en demon som du kan samhandle med virtualiseringsstabelen din. Libvirt streber etter å forene styringsprosessen for all de forskjellige virtualiseringsteknologien fra KVM til VMware ESX og til og med Bhyve. Det kan også administrere LXC -containere og til og med noen av paravirtualiseringsteknologiene som Xen.

Bare fordi det støtter et stort utvalg av teknologier, betyr ikke det at du må være kjent med dem alle. Du kan fokusere på en teknologi som KVM og bygge din libvirt -opplevelse rundt det. Denne artikkelen vil prøve å gi en omfattende kritikk av teknologien fra forfatterens personlige erfaring med den.

Bakgrunn

For å få tak i hva Libvirt er i stand til og hvordan du kan bruke det på ditt eget system, kan du følge følgende guider:

  1. Installer KVM og libvirt på Debian
  2. Libvirt med Python

Hvis du allerede er kjent med verktøy som Virsh, Virt-Install, Virt-Manager, Ovirt, osv., Bruker du allerede libvirt uten engang å vite det. De nevnte verktøyene bruker libvirt i backend og gir et brukervennlig grensesnitt, det være seg kommandolinje eller GUI.

Arkitektur

Libvirt er designet for å jobbe med enhver hypervisor og har vokst gjennom årene til å jobbe med et bredt utvalg av hypervisorer. Libvirt Daemon utsetter et API som kan brukes av apper som Virt-Manager eller Virsh (og til og med dine tilpassede Python-skript). Brukerforespørslene mottas av API. Disse forespørslene kan være noe som å opprette en KVM -gjest, eller vise meg minnet som brukes av en gitt LX -kontianer, etc.

Libvirt Daemon delegerer deretter forespørselen til den aktuelle Libvirt Hypervisor Driver. Denne sjåføren forstår og implementerer alle detaljene i en gitt virtualiseringsteknologi og utfører instruksjonene deretter.

Det er en annen klasse av drivere for håndtering av lagring og til og med nettverk av VMS.

Bassenger og volum

VM -er trenger mye lagring. Lagringsteknologien i seg selv er veldig variabel fra hypervisor til hypervisor. VMware bruker sitt eget VMDK -format, QEMU liker å bruke QCOW2, det er også rå diskbilder og LXC -bilder er også en annen historie. Dessuten vil du gruppere alle VM -diskbildene og gi dem et annet lagringsmedium som en NFS -server, et ZFS -datasett eller bare en katalog. Dette lar deg bruke libvirt på tvers av en rekke forskjellige brukssaker fra en enkelt hjemmeserver til en skalerbar virtualiseringsløsning.

I Libvirt Vernacular, er en enkelt virtuell lagringsenhet assosiert med hvilken volum. Lagringsmediene som brukes på verten til å lagre en gruppe tilknyttede volumer er kjent som en basseng. Du kan bruke en NFS -servere som et basseng, eller et ZFS -datasett, som tidligere nevnt. Hvis du ikke har en fancy lagringsløsning, kan du bare bruke en katalog.

Som standard har libvirt to forskjellige bassenger. Først er/var/lib/libvirt/bilder og/var/lib/libvirt/boot. Volum for en enkelt VM kan deles over flere bassenger. For eksempel lagrer jeg alle Clean Cloud -bildene og OS -installasjonsprogrammet ISO -er i/var/lib/libvirt/boot pool og for individuelle VMS er rootfs installert i bildefiler lagret i/var/lib/libvirt/bilder.

Du kan til og med ha et enkelt basseng for en enkelt VM, eller du kan dele bassengene videre for VM -øyeblikksbilder, sikkerhetskopiering osv. Det hele er veldig fleksibelt og lar deg organisere dataene dine i henhold til enkelhets skyld.

Konfigurasjoner

Virsh er et populært verktøy for å konfigurere alt fra VM, virtuell maskinnettverk og til og med lagring. Konfigurasjonsfilene selv lever i XML -format. Du vil finne deg selv å utstede kommandoer som:

$ virsh dumpxml vm1
$ Virsh Edit VM1

Og på samme måte er det underkommandoer som Net-DumpXML og bassengredigering for å se eller konfigurere konfigurasjonen av bassenger, nettverk osv. Hvis du er nysgjerrig på hvor disse konfigurasjonsfilene bor, kan du gå til/etc/libvirt/og finne dine bekymrede hypervisorer. Foreldrekatalog/etc/libvirt/i seg selv inneholder mange globale konfigurasjoner som drivere (e.G QEMU.Conf og LXC.Conf) og deres konfigurasjon og standardoppførsel til libvirt.

For å se på spesifikk konfigurasjon av individuelle komponenter som VM -er, bassenger og volumer, må du gå til de tilsvarende katalogene. For QEMU -gjester er dette/etc/libvirt/qemu

root@deb:/etc/libvirt/qemu# ls -al
Totalt 24
DRWXR-XR-X 4 ROOT ROOT 4096 21. april 10:39 .
DRWXR-XR-X 6 ROOT ROOT 4096 28. april 17: 19 ..
DRWXR-XR-X 2 ROOT ROOT 4096 21. april 10:39 Autostart
DRWXR-XR-X 3 Rotrot 4096 14. april 13:49 Nettverk
-RW ------- 1 rotrot 3527 20. april 19:10 VM1.XML
-RW ------- 1 ROOT ROOT 3527 20. april 19:09 VM2.XML

Autostart -katalogen vil inneholde symlinks til VM1.XML og VM2.XML Hvis du har konfigurert VMS til Autostart når vertssystemet støvler ($ Virsh Autostart VM1).

Tilsvarende inneholder/etc/libvirt/qemu/nettverket en konfigurasjoner for standardnettverket en QEMU -gjest. /Etc/libvirt/lagring inneholder xmls som definerer lagringsbassengene.

Konklusjon

Hvis du er interessert i å sette opp din egen virtualisering, vil et bra sted å starte, være denne artikkelen der jeg viser hvordan du installerer QEMU-KVM-gjester på en Debian-vert ved hjelp av libvirt og relaterte verktøy.

Etter det kan du begynne å spille med Virsh CLI og se og administrere enheter som Domain (Libvirt kaller Guest VMS A domene) Nettverk, lagringsbassenger og volum. Dette vil gjøre deg komfortabel nok med teknologien til at du kan gå videre til andre konsepter som øyeblikksbilder og nettverksfilter. Jeg håper denne artikkelen vil vise seg å være et godt utgangspunkt for deg.