Bara för att den stöder ett stort utbud av tekniker betyder det inte att du måste känna till dem alla. Du kan fokusera på en teknik som KVM och bygga din libvirt-upplevelse runt det. Denna artikel kommer att försöka ge en omfattande kritik av tekniken från författarens personliga erfarenhet av den.
Bakgrund
För att få tag på vad Libvirt kan och hur du kan använda det i ditt eget system kan du följa följande guider:
- Installera KVM och Libvirt på Debian
- Libvirt med Python
Om du redan känner till verktyg som virsh, virt-install, virt-manager, oVirt, etc, använder du redan libvirt utan att ens veta det. De ovannämnda verktygen använder libvirt i backend och ger ett användarvänligt gränssnitt oavsett om det är kommandorad eller GUI.
Arkitektur
Libvirt är utformat för att arbeta med vilken hypervisor som helst och har genom åren vuxit till att arbeta med ett brett utbud av hypervisorer. Libvirt-demon visar ett API som kan användas av appar som virt-manager eller virsh (och till och med dina anpassade Python-skript). Användarförfrågningarna tas emot av API: et. Dessa förfrågningar kan vara allt som att skapa en KVM-gäst, eller visa mig minnet som används av en viss LX-medarbetare, etc.
Libvirt-demonen delegerar sedan begäran till lämplig libvirt hypervisor-drivrutin. Den här drivrutinen förstår och implementerar alla detaljer för en given virtualiseringsteknik och utför instruktionerna därefter.
Det finns en annan klass av drivrutiner för hantering av lagring och till och med nätverk av virtuella datorer.
Pooler och volymer
Virtuella datorer behöver mycket lagring. Lagringstekniken i sig är mycket varierande från hypervisor till hypervisor. VMWare använder sitt eget vmdk-format, QEMU gillar att använda qcow2, det finns också rå diskbilder och LXC-bilder är också en annan historia. Dessutom vill du gruppera alla VM-skivavbildningar och ge dem ett annat lagringsmedium som en NFS-server, en ZFS-dataset eller bara en katalog. Detta låter dig använda libvirt över en mängd olika användningsfall från en enda hemserver till en skalbar virtualiseringslösning för företagskvalitet.
I libvirt-folkspråk är en enda virtuell lagringsenhet associerad med vilken virtuell dator som helst, som qcow2, raw eller vmdk-bildfilen för en virtuell dator eller monterbar ISO, volym. Lagringsmediet som används på värden för att lagra en grupp med tillhörande volymer kallas a slå samman. Du kan använda en NFS-servrar som en pool eller en ZFS-dataset, som tidigare nämnts. Om du inte har en snygg lagringslösning kan du helt enkelt använda en katalog.
Som standard har libvirt två olika pooler. Först är / var / lib / libvirt / images och / var / lib / libvirt / boot. Volymer för en enda virtuell dator kan delas över flera pooler. Till exempel lagrar jag alla rena molnbilder och OS-installations-ISO: er i / var / lib / libvirt / startpoolen och för enskilda virtuella datorer installeras rootfs i bildfiler lagrade i / var / lib / libvirt / images.
Du kan till och med ha en enda pool för en enda virtuell dator, eller så kan du dela poolerna ytterligare för virtuella ögonblicksbilder, säkerhetskopior etc. Allt är väldigt flexibelt och låter dig organisera dina data enligt din bekvämlighet.
Konfigurationer
Virsh är ett populärt verktyg för att konfigurera allt från din virtuella dator, virtuella maskinnätverk och till och med lagring. Konfigurationsfilerna själva lever i XML-format. Du hittar dig själv att utfärda kommandon som:
$ virsh dumpxml VM1$ virsh redigera VM1
Och på samma sätt finns det underkommandon som net-dumpxml och poolredigering för att visa eller konfigurera konfigurationen av pooler, nätverk etc. Om du är nyfiken på var dessa konfigurationsfiler bor kan du gå till / etc / libvirt / och hitta din hypervisor-berörda katalog. Föräldrakatalogen / etc / libvirt / själv innehåller många globala konfigurationer som drivrutiner (t.ex.g qemu.conf och lxc.conf) och deras konfiguration och standardbeteendet för libvirt.
För att titta på specifik konfiguration av enskilda komponenter som virtuella datorer, pooler och volymer måste du gå till motsvarande kataloger. För qemu-gäster är detta / etc / libvirt / qemu
root @ deb: / etc / libvirt / qemu # ls -altotalt 24
drwxr-xr-x 4 rotrot 4096 21 apr 10:39 .
drwxr-xr-x 6 rotrot 4096 28 april 17: 19 ..
drwxr-xr-x 2 rotrot 4096 21 april 10:39 autostart
drwxr-xr-x 3 root root 4096 Apr 14 13:49 nätverk
-rw ------- 1 rotrot 3527 20 apr 19:10 VM1.xml
-rw ------- 1 rotrot 3527 20 apr 19:09 VM2.xml
Autostartkatalogen innehåller symlänkar till VM1.xml och VM2.xml om du har konfidenterat de virtuella datorerna att starta automatiskt när värdsystemet startar ($ virsh autostart VM1).
På samma sätt innehåller / etc / libvirt / qemu / network en konfiguration för standardnätverket en qemu-gäst. / Etc / libvirt / storage innehåller XML som definierar lagringspoolerna.
Slutsats
Om du är intresserad av att skapa din egen virtualiseringsvärd är en bra plats att börja den här artikeln där jag visar hur man installerar QEMU-KVM-gäster på en Debian-värd med libvirt och relaterade verktyg.
Därefter kan du börja spela med virsh CLI och se och hantera enheter som Domain (libvirt kallar gäst-virtuella datorer a domän) nätverk, lagringspooler och volymer. Detta gör dig tillräckligt bekväm med den teknik som du kan gå vidare till andra koncept som ögonblicksbilder och nätverksfilter. Jag hoppas att den här artikeln kommer att visa sig vara en bra utgångspunkt för dig.