Nur weil es eine große Reihe von Technologien unterstützt, müssen Sie nicht mit allen vertraut sein. Sie können sich auf eine Technologie wie KVM konzentrieren und Ihr Libvirt -Erlebnis darum bauen. Dieser Artikel wird versuchen, eine umfassende Kritik an der Technologie aus den persönlichen Erfahrungen des Autors damit zu verleihen.
Um einen Dreh raus zu bekommen, wozu libvirt fähig ist und wie Sie es in Ihrem eigenen System verwenden können, können Sie die folgenden Anleitungen befolgen:
Wenn Sie bereits mit Tools wie Virsh, Virt-Install, Virt-Manager, Ovirt usw. vertraut sind, verwenden Sie bereits Libvirt, ohne es zu wissen, ohne es zu wissen. Die oben genannten Tools verwenden libvirt im Backend und bieten eine benutzerfreundliche Schnittstelle, sei es Befehlszeile oder GUI.
Die Architektur
Libvirt ist so konzipiert, dass sie mit jedem Hypervisor zusammenarbeitet und im Laufe der Jahre mit einer Vielzahl von Hypervisoren zusammenarbeitet wurde. Der Libvirt-Daemon enthält eine API, die von Apps wie Virt-Manager oder Virsh (und sogar Ihren benutzerdefinierten Python-Skripten) verwendet werden kann. Die Benutzeranfragen werden von der API empfangen. Diese Anfragen können so etwas sein, wie ein KVM -Gast erstellen oder mir die Speicherung eines bestimmten LX -Contianer usw. zeigen, usw.
Der libvirt -Daemon delegiert dann die Anfrage an den entsprechenden libvirt Hypervisor -Treiber. Dieser Treiber versteht und implementiert alle Einzelheiten einer bestimmten Virtualisierungstechnologie und führt die Anweisungen entsprechend durch.
Es gibt eine andere Klasse von Treibern für den Umgang mit Speicher und sogar Netzwerken von VMs.
Pools und Volumina
VMs brauchen viel Speicherplatz. Die Speichertechnologie selbst ist vom Hypervisor zum Hypervisor sehr unterschiedlich. VMware verwendet ein eigenes VMDK. Darüber hinaus möchten Sie alle VM -Datenträgerbilder gruppieren und ihnen ein anderes Speichermedium wie einen NFS -Server, einen ZFS -Datensatz oder nur ein Verzeichnis zur Verfügung stellen. Auf diese Weise können Sie Libvirt über eine Vielzahl verschiedener Anwendungsfälle von einem einzelnen Heimserver zu einer skalierbaren Virtualisierungslösung von Unternehmensgrade verwenden.
In libvirt Vernacular ist ein einzelnes virtuelles Speichergerät, das jeder VM zugeordnet ist Volumen. Die auf dem Host verwendeten Speichermedien zum Speichern einer Gruppe von zugehörigen Bänden sind als a bekannt Schwimmbad. Sie können ein NFS -Server als Pool oder einen ZFS -Datensatz verwenden, wie bereits erwähnt. Wenn Sie keine ausgefallene Speicherlösung haben, können Sie einfach ein Verzeichnis verwenden.
Standardmäßig hat libvirt zwei verschiedene Pools. Erstens ist/var/lib/libvirt/bilder und/var/lib/libvirt/boot. Volumen für eine einzelne VM können über mehrere Pools aufgeteilt werden. Zum Beispiel speichere ich alle sauberen Cloud -Bilder und Betriebssystem -Installationsprogramme im/var/lib/libvirt/Boot -Pool und für einzelne VMS -Rootfs wird in Bilddateien installiert, die in/var/lib/libvirt/bildern gespeichert sind.
Sie können sogar einen einzelnen Pool für eine einzelne VM haben oder die Pools für VM -Schnappschüsse, Backups usw. weiter aufteilen. Es ist alles sehr flexibel und ermöglicht es Ihnen, Ihre Daten gemäß Ihrer Bequemlichkeit zu organisieren.
Konfigurationen
Virsh ist ein beliebtes Tool, um alles von Ihrem VM, Ihrem virtuellen Maschinennetzwerk und sogar von Speicher zu konfigurieren. Die Konfigurationsdateien selbst live im XML -Format. Sie werden feststellen, dass Sie Befehle wie:
$ virsh Dumpxml VM1
$ virsh bearbeiten vm1
In ähnlicher Weise gibt es Unterbefehle wie Net-DumpxML und Pool-Edit, um die Konfiguration von Pools, Netzwerken usw. anzuzeigen oder zu konfigurieren. Wenn Sie neugierig auf diese Konfigurationsdateien sind, können Sie zu/etc/libvirt gehen/und Ihre Hypervisors betroffenen Verzeichnisse finden. Das übergeordnete Verzeichnis/etc/libvirt/selbst enthält viele globale Konfigurationen wie Treiber (e.G Qemu.Conf und LXC.conf) und ihre Konfiguration und das Standardverhalten von libvirt.
Um die spezifische Konfiguration einzelner Komponenten wie VMs, Pools und Volumina zu betrachten, müssen Sie zu den entsprechenden Verzeichnissen wechseln. Für Qemu -Gäste ist dies/etc/libvirt/qemu
root@deb:/etc/libvirt/qemu# ls -al
insgesamt 24
DRWXR-XR-X 4 Wurzel Root 4096 Apr 21 10:39 .
DRWXR-XR-X 6 Wurzel Root 4096 Apr 28 17: 19…
DRWXR-XR-X 2 Wurzel Root 4096 Apr 21 10:39 Autostart
DRWXR-XR-X 3 Root Root 4096 Apr 14 13:49 Netzwerke
-RW ------- 1 Wurzelwurzel 3527 Apr 20 19:10 VM1.xml
-RW ------- 1 Wurzelwurzel 3527 Apr 20 19:09 VM2.xml
Das Autostart -Verzeichnis enthält Symlinks zu VM1.XML und VM2.XML, wenn Sie die VMs zu autostarnen haben, wenn das Host -System startet ($ virsh autostart vm1).
In ähnlicher Weise enthält das/etc/libvirt/qemu/das Netzwerk eine Konfiguration für das Standardnetzwerk Ein Qemu -Gast. Das/etc/libvirt/der Speicher enthält XMLs, die die Speicherpools definieren.
Wenn Sie daran interessiert sind, einen eigenen Virtualisierungshost einzurichten, ist dieser Artikel, in dem ich zeige, wie Sie QEMU-KVM-Gäste in einem Debian-Host mit Libvirt und verwandten Tools installieren können.
Danach können Sie mit Virsh CLI spielen und Entitäten wie Domain sehen und verwalten (libvirt nennt Guest VMS A Domain) Netzwerke, Speicherpools und Volumina. Dies macht Sie mit der Technologie, die Sie zu anderen Konzepten wie Snapshots und Netzwerkfilter übergehen können, bequem genug. Ich hoffe, dieser Artikel ist ein guter Ausgangspunkt für Sie.