Su Libvirt

Su Libvirt
Libvirt è uno degli strumenti di gestione della virtualizzazione più popolare là fuori. È composto da un'API di gestione e da un demone con cui è possibile interagire con il tuo stack di virtualizzazione. Libvirt si impegna a unificare il processo di gestione per tutte le varie tecnologie di virtualizzazione da KVM a VMware ESX e persino Bhyve. Può anche gestire i contenitori LXC e persino alcune delle tecnologie di paravirtualizzazione come Xen.

Solo perché supporta una vasta gamma di tecnologie, non significa che devi conoscerli tutti. Puoi concentrarti su una tecnologia come KVM e costruire la tua esperienza Libvirt attorno a. Questo articolo cercherà di dare una critica completa alla tecnologia dall'esperienza personale dell'autore con esso.

Sfondo

Per capire ciò di cui è capace Libvirt e come puoi usarlo sul tuo sistema puoi seguire le seguenti guide:

  1. Installa KVM e Libvirt su Debian
  2. Libvirt con Python

Se hai già familiarità con strumenti come virsh, virt-install, virt-manager, ovirt, ecc. Quindi stai già usando libvirt senza nemmeno saperlo. Gli strumenti di cui sopra usano libvirt nel backend e forniscono un'interfaccia intuitiva che si tratti di riga di comando o GUI.

Architettura

Libvirt è progettato per funzionare con qualsiasi hypervisor ed è cresciuto nel corso degli anni per lavorare con una vasta gamma di hypervisor. Il demone Libvirt espone un'API che può essere utilizzata da app come Virt-Manager o Virsh (e persino i tuoi script Python personalizzati). Le richieste dell'utente vengono ricevute dall'API. Queste richieste potrebbero essere come creare un ospite KVM o mostrarmi la memoria utilizzata da un determinato Contianer LX, ecc.

Il demone Libvirt delega quindi la richiesta al conducente di Hypervisor Libvirt appropriato. Questo driver comprende e implementa tutti i dettagli di una data tecnologia di virtualizzazione e esegue le istruzioni di conseguenza.

C'è una classe diversa di driver per la gestione di archiviazione e persino reti di macchine virtuali.

Piscine e volumi

Le macchine virtuali hanno bisogno di un sacco di spazio. La stessa tecnologia di archiviazione è molto variabile dall'hypervisor all'hypervisor. VMware utilizza il proprio formato VMDK, a Qemu piace usare QCOW2, ci sono anche immagini di disco grezzi e le immagini LXC sono anche una storia diversa. Inoltre, vorresti raggruppare tutte le immagini del disco VM e fornire loro un diverso supporto di archiviazione come un server NFS, un set di dati ZFS o solo una directory. Ciò consente di utilizzare Libvirt in una varietà di diversi casi d'uso da un singolo server domestico a una soluzione di virtualizzazione scalabile di grado aziendale.

In Libvirt Vernacular, un singolo dispositivo di archiviazione virtuale associato a qualsiasi VM, come il file immagine QCOW2, RAW o VMDK di una VM o un ISO montato è noto come a volume. Il supporto di archiviazione utilizzato sull'host per archiviare un gruppo di volumi associati è noto come a piscina. È possibile utilizzare un server NFS come pool o un set di dati ZFS, come menzionato in precedenza. Se non hai una soluzione di archiviazione di fantasia, puoi semplicemente usare una directory.

Per impostazione predefinita, Libvirt ha due piscine diverse. Primo IS/var/lib/libvirt/immagini e/var/lib/libvirt/boot. I volumi per una singola VM possono essere divisi su più pool. Ad esempio, memorirò tutte le immagini Clean Cloud e ISO di installazione del sistema operativo nel pool/Lib/Libvirt/boot e per le singole VMS sono installate nei file di immagine memorizzati in/var/lib/libvirt/immagini.

Puoi anche avere un singolo pool per una singola VM, oppure puoi dividere ulteriormente le piscine per istantanee VM, backup, ecc. È tutto molto flessibile e ti consente di organizzare i tuoi dati secondo la tua comodità.

Configurazioni

Virsh è uno strumento popolare per configurare tutto, dalla VM, nel networking di macchine virtuali e persino all'archiviazione. I file di configurazione stessi vivono in formato XML. Ti ritroverai a emettere comandi come:

$ virsh dumpxml vm1
$ virsh Modifica VM1

Allo stesso modo, ci sono sottocampi come net-dumpxml e pool-edit per visualizzare o configurare la configurazione di pool, reti, ecc. Se sei curioso di sapere dove vivono questi file di configurazione, puoi andare su/etc/libvirt/e trovare i tuoi hypervisor interessati directory. La directory genitore/etc/libvirt/esso stesso contiene molte configurazioni globali come i driver (E.G Qemu.conf e lxc.conf) e la loro configurazione e il comportamento predefinito di libvirt.

Per esaminare la configurazione specifica di singoli componenti come VM, pool e volumi devi andare alle directory corrispondenti. Per gli ospiti QEMU questo è/etc/libvirt/qemu

root@deb:/etc/libvirt/qemu# ls -al
totale 24
DRWXR-XR-X 4 ROOT ROOT 4096 21 aprile 10:39 .
drwxr-xr-x 6 radice root 4096 28 aprile 17: 19 ..
DRWXR-XR-X 2 ROOT ROOT 4096 21 aprile 10:39 AutoStart
root drwxr-xr-x 3 root 4096 14 aprile 13:49 reti
-RW ------- 1 radice radice 3527 aprile 20 19:10 VM1.XML
-RW ------- 1 radice radice 3527 aprile 20 19:09 VM2.XML

La directory Autostart conterrà Symlinks a VM1.XML e VM2.XML Se hai confinato le macchine virtuali su AutoStart quando il sistema host si avvia ($ VIRSH AUTOSTART VM1).

Allo stesso modo,/etc/libvirt/qemu/network contiene una configurazione per la rete predefinita un ospite QEMU. /Etc/libvirt/archiviazione contiene XML che definiscono i pool di archiviazione.

Conclusione

Se sei interessato a impostare il proprio host di virtualizzazione, un buon punto di partenza sarà questo articolo in cui mostro come installare gli ospiti QEMU-KVM su un host Debian utilizzando libvirt e strumenti correlati.

Dopodiché puoi iniziare a giocare con Virsh CLI e vedere e gestire entità come Domain (Libvirt chiama VM ospite a dominio) reti, pool di archiviazione e volumi. Questo ti renderà abbastanza comodo con la tecnologia che puoi passare ad altri concetti come istantanee e filtro di rete. Spero che questo articolo si dimostri di essere un buon punto di partenza per te.