libvirt

Over Libvirt

Over Libvirt
Libvirt is een van de meest populaire virtualisatiebeheertools die er zijn. Het bestaat uit een beheer-API en een daemon waarmee u kunt communiceren met uw virtualisatiestack. Libvirt streeft ernaar het beheerproces voor alle verschillende virtualisatietechnologieën te verenigen, van KVM tot VMWare ESX en zelfs BHyve. Het kan ook LXC-containers beheren en zelfs enkele paravirtualisatietechnologieën zoals Xen.

Dat het een groot aantal technologieën ondersteunt, betekent niet dat je ze allemaal moet kennen. Je kunt je concentreren op één technologie zoals KVM en daar je libvirt-ervaring omheen bouwen. Dit artikel zal proberen een uitgebreide kritiek op de technologie te geven vanuit de persoonlijke ervaring van de auteur ermee.

Achtergrond

Om onder de knie te krijgen waar Libvirt toe in staat is en hoe je het op je eigen systeem kunt gebruiken, kun je de volgende handleidingen volgen:

  1. Installeer KVM en Libvirt op Debian
  2. Libvirt met Python

Als je al bekend bent met tools zoals virsh, virt-install, virt-manager, oVirt, etc, dan gebruik je libvirt al zonder het te weten. De bovengenoemde tools gebruiken libvirt in de backend en bieden een gebruiksvriendelijke interface, of het nu een opdrachtregel of GUI is.

architectuur

Libvirt is ontworpen om met elke hypervisor te werken en is in de loop der jaren gegroeid om met een breed scala aan hypervisors te werken. De libvirt-daemon onthult een API die kan worden gebruikt door apps zoals virt-manager of virsh (en zelfs je aangepaste Python-scripts). De gebruikersverzoeken worden ontvangen door de API. Deze verzoeken kunnen van alles zijn, zoals het maken van een KVM-gast, of me het geheugen laten zien dat wordt gebruikt door een bepaalde LX-contianer, enz.

De libvirt-daemon delegeert vervolgens het verzoek aan het juiste libvirt-hypervisorstuurprogramma. Deze driver begrijpt en implementeert alle specifieke kenmerken van een bepaalde virtualisatietechnologie en voert de instructies dienovereenkomstig uit.

Er is een andere klasse stuurprogramma's voor het omgaan met opslag en zelfs netwerken van VM's.

Pools en volumes

VM's hebben veel opslagruimte nodig. De opslagtechnologie zelf is zeer variabel van hypervisor tot hypervisor. VMWare gebruikt zijn eigen vmdk-formaat, QEMU gebruikt graag qcow2, er zijn ook onbewerkte schijfafbeeldingen en LXC-afbeeldingen zijn ook een ander verhaal. Bovendien wilt u alle VM-schijfimages groeperen en ze voorzien van een ander opslagmedium zoals een NFS-server, een ZFS-dataset of gewoon een directory. Dit stelt je in staat om libvirt te gebruiken voor een groot aantal verschillende use-cases, van een enkele thuisserver tot een schaalbare virtualisatie-oplossing op ondernemingsniveau.

In libvirt-taal staat een enkel virtueel opslagapparaat dat is gekoppeld aan een VM, zoals het qcow2, raw of vmdk-imagebestand van een VM of koppelbare ISO, bekend als een volume. Het opslagmedium dat op de host wordt gebruikt om een ​​groep geassocieerde volumes op te slaan, staat bekend als a zwembad. U kunt een NFS-server als pool of een ZFS-dataset gebruiken, zoals eerder vermeld. Als je geen mooie opslagoplossing hebt, kun je gewoon een map gebruiken.

Standaard heeft libvirt twee verschillende pools. De eerste is /var/lib/libvirt/images en /var/lib/libvirt/boot. Volumes voor een enkele VM kunnen over meerdere pools worden verdeeld. Ik sla bijvoorbeeld alle schone cloud-images en OS-installatieprogramma-ISO's op in de /var/lib/libvirt/boot-pool en voor individuele VM's wordt rootfs geïnstalleerd in afbeeldingsbestanden die zijn opgeslagen in /var/lib/libvirt/images.

U kunt zelfs een enkele pool hebben voor een enkele VM, of u kunt de pools verder opsplitsen voor VM-snapshots, back-ups, enz. Het is allemaal erg flexibel en stelt u in staat om uw gegevens te organiseren zoals het u uitkomt.

Configuraties

Virsh is een populaire tool om alles van je VM, virtuele machinenetwerken en zelfs opslag te configureren. De configuratiebestanden zelf leven in het XML-formaat. Je zult merken dat je opdrachten geeft als:

$ virsh dumpxml VM1
$ virsh bewerk VM1

En op dezelfde manier zijn er subopdrachten zoals net-dumpxml en pool-edit om de configuratie van pools, netwerken, enz. te bekijken of te configureren. Als u nieuwsgierig bent naar waar deze configuratiebestanden zich bevinden, kunt u naar /etc/libvirt/ gaan en de betreffende hypervisors directory vinden.  De bovenliggende map /etc/libvirt/ zelf bevat veel globale configuraties zoals stuurprogramma's (e.g qemu.conf en lxc.conf ) en hun configuratie en het standaardgedrag van libvirt.

Om de specifieke configuratie van individuele componenten zoals de VM's, pools en volumes te bekijken, moet je naar de overeenkomstige mappen gaan. Voor qemu-gasten is dit /etc/libvirt/qemu

root@deb:/etc/libvirt/qemu# ls -al
totaal 24
drwxr-xr-x 4 wortel wortel 4096 21 april 10:39 .
drwxr-xr-x 6 wortel wortel 4096 28 april 17:19…
drwxr-xr-x 2 root root 4096 21 april 10:39 autostart
drwxr-xr-x 3 root root 4096 14 april 13:49 netwerken
-rw------- 1 wortel wortel 3527 20 april 19:10 VM1.xml
-rw------- 1 wortel wortel 3527 20 april 19:09 VM2.xml

De autostart-map bevat symlinks naar VM1.xml en VM2.xml als je de VM's hebt geconfigureerd om automatisch te starten wanneer het hostsysteem opstart ($ virsh autostart VM1).

Op dezelfde manier bevat /etc/libvirt/qemu/network een configuratie voor het standaard netwerk een qemu gast. De /etc/libvirt/storage bevat XML's die de opslagpools definiëren.

Conclusie

Als je geïnteresseerd bent in het opzetten van je eigen virtualisatiehost, is dit artikel een goede plek om te beginnen, waar ik laat zien hoe je QEMU-KVM-gasten op een Debian-host installeert met behulp van libvirt en gerelateerde tools.

Daarna kun je beginnen te spelen met virsh CLI en entiteiten zoals Domain zien en beheren (libvirt noemt gast-VM's een domein) netwerken, opslagpools en volumes. Dit zal u voldoende vertrouwd maken met de technologie die u kunt gebruiken voor andere concepten zoals snapshots en netwerkfilter. Ik hoop dat dit artikel een goed startpunt voor je zal blijken te zijn.

OpenTTD-zelfstudie
OpenTTD is een van de meest populaire simulatiegames voor bedrijven die er zijn. In dit spel moet je een geweldig transportbedrijf creëren. U begint e...
SuperTuxKart voor Linux
SuperTuxKart is een geweldige titel die is ontworpen om je de Mario Kart-ervaring gratis te bieden op je Linux-systeem. Het is behoorlijk uitdagend en...
Strijd om Wesnoth Zelfstudie
The Battle for Wesnoth is een van de meest populaire open source strategiespellen die je op dit moment kunt spelen. Dit spel is niet alleen al heel la...