KVM

Einrichten von Libvirt QEMU und KVM-Stack unter Debian

Einrichten von Libvirt QEMU und KVM-Stack unter Debian
QEMU-KVM-basierte Virtualisierung ist das Herzstück des Linux-basierten Virtualisierungsstapels. Es ist kostenlos und Open Source und ist eine der am weitesten verbreiteten Virtualisierungstechnologien in der Branche. Die meisten Cloud-Dienstleister verwenden KVM und das aus gutem Grund. Es bietet einen sehr effizienten und dennoch sehr sicheren Virtualisierungs-Stack und es gibt keine komplizierte Lizenzierung. Dies ist bei Ihrem typischen Hyper-V- oder VMWare-Setup nicht der Fall. Der Nachteil besteht jedoch darin, dass die Einrichtung insbesondere für unerfahrene Benutzer sehr komplex sein kann. Dieser Artikel soll diese Komplexität für den Leser reduzieren.

Lassen Sie uns nun versuchen, unseren eigenen KVM-Hypervisor auf einem Debian 9-Server einzurichten .

Aktivieren von VT-x- oder AMD-V-Erweiterungen

Idealerweise benötigen Sie eine saubere Installation Ihrer bevorzugten Linux-Distribution auf einem Computer (keine VM), der über eine relativ moderne CPU verfügt. Die meisten modernen Intel-CPUs unterstützen VT-x-Erweiterungen und ähnlich hat AMD seine AMD-V-Erweiterungen. Diese Erweiterungen sind „Erweiterungen“, die direkt in das Silizium Ihrer CPU eingebaut sind und eine schnellere und sicherere Virtualisierung ermöglichen. Sie müssen diese Erweiterungen im BIOS/UEFI-Menü Ihres Motherboards aktivieren. Weitere Informationen finden Sie im Handbuch Ihres Motherboards.

Wenn Sie Ihre perfekt funktionierende Linux-Workstation nicht beschmutzen möchten, können Sie eine virtuelle Maschine in der Cloud verwenden, um diese Experimente durchzuführen. DigitalOcean bietet beispielsweise virtuelle Maschinen mit aktivierter verschachtelter Virtualisierung. Auf diese Weise können Sie VMs innerhalb Ihrer in der Cloud gehosteten VM ausführen (dies wird als verschachtelte Virtualisierung bezeichnet). Offensichtlich ist dies eine sehr ineffiziente Möglichkeit, einen Hypervisor praktisch zu betreiben, aber als Experiment wird es gut funktionieren. Stellen Sie sicher, dass Sie mindestens 4 GB Arbeitsspeicher und mehr als 2 CPUs haben.

Sobald Sie die genannten Erweiterungen aktiviert haben, können Sie dies überprüfen, indem Sie lscpu ausführen und nach dem Virtualization-Eintrag suchen:

$ lscpu
… .
Virtualisierung:        VT-x
… .

Jetzt, da wir die Erweiterungen aktiviert haben, ist es Zeit, im Stapel weiter nach oben zu rücken.

KVM und QEMU . installieren

KVM (oder Kernel-Based Virtual Machine) besteht aus einigen Linux-Kernel-Modulen, die die zuvor aktivierten CPU-Erweiterungen nutzen. QEMU hingegen besteht aus einer Reihe von Userland-Programmen, die uns Emulationsmöglichkeiten bieten. Als eigenständige Software kann QEMU verwendet werden, um Programme von einer Architektur wie ARM auf einer anderen wie x86_64 und umgekehrt auszuführen. Es kann verwendet werden, um alles von einer einzelnen Binärdatei bis zu einem kompletten Betriebssystem auszuführen.

Wir werden es natürlich nur verwenden, um x86_64-Betriebssysteme auf der x86_64-Plattform zu virtualisieren. Und dafür brauchen wir nur ein einziges Paket:

$ sudo apt install qemu-kvm

Sie können überprüfen, ob das Paket alle erforderlichen Module geladen hat, indem Sie Folgendes ausführen:

$ lsmod | grep kvm
kvm_intel             200704  0
kvm                   598016  1 kvm_intel
irqbypass              16384  1 kvm

Das ist alles was du theoretisch brauchst. Aber du wirst schnell merken, dass das praktisch ist. Virtuelle Maschinen sind enorm komplex und wir benötigen einen Software-Wrapper, um all die verschiedenen Anforderungen wie Netzwerke, Dateisystemverwaltung usw. ziemlich automatisiert (und skalierbar) zu verwalten. Dazu benötigen wir Libvirt Virtualisierungsbibliothek/Daemonda.

Libvirt installieren

Libvirt ist ein wesentlicher Bestandteil Ihres Virtualisierungs-Stack. Der libvirtd-Daemon führt virtualisierungsbezogene Dienste im Hintergrund aus. Dienste, die auf Anfragen wie „Create a VM“, „Destroy a VM“, „Create a Network“ usw. hören und diese mit den grundlegenden Linux-Dienstprogrammen wie qemu-Binärdateien, iptables usw. ausführen.

Libvirt ist sehr verallgemeinert und kann verwendet werden, um KVM-Gäste, LXC-Container und Xen-Virtualisierungs-Stack zu verwalten. Wir konzentrieren uns vorerst nur auf Libvirt für KVM-Gäste. Libvirtd stellt eine API bereit, die von GUI-Anwendungen wie virt-manager oder oVirt oder Befehlszeilentools wie virt-install, virsh usw. verwendet werden kann. Wir können sogar unsere eigenen benutzerdefinierten Clients schreiben, die dieselbe Standard-API verwenden.  Wir werden die Befehlszeilentools wie virsh und virt-install verwenden, um die Dinge standardisiert zu halten.

Lassen Sie uns all diese Tools installieren:

$ apt install libvirt-clients libvirt-daemon-system virtinst

Wir benötigen außerdem ein weiteres Paket libguestfs-tools, um die Festplatten und Dateisysteme der Gast-VM zu bearbeiten oder zu modifizieren.

Groß! Jetzt haben wir den gesamten Stack installiert und wissen, wie die Architektur aufgebaut ist. Um libvirt (und verwandte Tools) zu verwenden, fügen Sie Ihren Benutzer zu den Gruppen libvirt-qemu und libvirt hinzu.

$ sudo usermod -aG libvirt
$ sudo usermod -aG libvirt-qemu

Oder führen Sie die Befehle als Root-Benutzer aus.

Virsh und Starten des Standardnetzwerks

Das virsh-Befehlszeilendienstprogramm ist etwas, das Sie bei der Verwaltung Ihrer VMs häufig verwenden werden. Sie können einfach virsh eingeben und in die virsh-Befehlszeilenschnittstelle fallen lassen oder virsh . eingeben [Optionen] von Ihrer regulären Shell. Gehen Sie die Ausgabe von virsh help durch, wenn Sie mit einer VM-bezogenen Operation nicht weiterkommen.

Der erste virsh-Befehl, den wir verwenden, ruft das Standardnetzwerk auf, mit dem sich eine VM verbinden kann:

$ virsh net-autostart default
$ virsh net-start default

Dadurch wird das Standardnetzwerk gestartet und sichergestellt, dass es beim Neustart des Hosts automatisch gestartet wird. Um die Details zu diesem Standardnetzwerk zu überprüfen, verwenden Sie den Befehl:

$ virsh net-dumpxml default

Standard
3d723dc6-49a4-4f73-bf6d-623d6b46b099












Die XML-Datei kann Ihnen den Bereich möglicher IP-Adressen und deren Kommunikation mit der Außenwelt anzeigen show. Grundsätzlich kommt der Datenverkehr über ein NAT zu ihnen und sie sind nicht Teil des externen Netzwerks Ihres Hosts. Sie können Bridge Networking verwenden, um jede VM dem LAN des Hostcomputers zugänglich zu machen.

So starten Sie eine virtuelle Maschine

Um eine virtuelle Maschine zu starten, benötigen wir ein Installationsmedium (wie die Installations-ISO für jedes Betriebssystem) und wie viele CPUs und wie viel Speicher der VM zugewiesen werden muss und ob sie VNC benötigt needs. In diesem Schritt können Sie ein GUI-Installationsprogramm wie virt-manager wirklich schätzen, wir werden es jedoch mit einem ziemlich komplexen virt-install-Befehl ausführen.

Ich möchte alle meine Bootmedien unter /var/lib/libvirt/boot und alle VMs und ihre virtuelle Festplatte unter /var/lib/libvirt/images (der Standardspeicherort) aufbewahren, dies vereinfacht die Organisation.

$ cd /var/lib/libvirt/boot
$ wget http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-amd64.iso

Der obige Befehl ruft das Ubuntu-Desktop-ISO ab. Sie können genauso einfach CentOS oder jede andere gewünschte Distribution erhalten.

Um eine neue VM zu erstellen und zu booten, führen Sie Folgendes aus:

$ virt-install --virt-type kvm \
--name myVM \
--Speicher 2048 --vcpus=2 \
--cdrom /var/lib/libvirt/boot/ubuntu-18.04.2-desktop-amd64.iso \
--Festplattengröße = 40 \
--Grafik vnc,listen=0.0.0.0,Port=5900 \
--keineautokonsole

Der obige Befehl ist in der Tat kompliziert. Ich schlage vor, diese Befehle in Textdateien zu speichern und diese als ausführbare Skripte auszuführen, wenn Sie eine neue VM erstellen. Die meisten Parameter wie virt-type und virt-name sind ziemlich selbsterklärend. Sie sind nur mühsam aufzuschreiben.

Die letzte Option für die VNC-Anzeige startet einen VNC-Server und ermöglicht Ihnen den Konsolenzugriff auf Ihre VM aus der Ferne, indem Sie eine Verbindung zum Port 5900 5 des Hosts herstellen. Öffnen Sie einen VNC-Client auf Ihrem Desktop und gehen Sie zur IP Ihres KVM-Hosts am Port 5900. Stellen Sie sicher, dass Sie die IP des Hosts erreichen und nicht die IP der VM. Ihr VNC verbindet sich mit dem Videoausgang Ihrer VM und Sie können mit der Installation fortfahren.

Wohin als nächstes?

Von hier aus können Sie versuchen, die VMs zu pausieren, zu stoppen und zu löschen. Sie können auch die zugrunde liegende Infrastruktur ändern, indem Sie Pools für die Speicherung hinzufügen und Bridge-Netzwerke konfigurieren. Alle Konfigurationsdateien für einzelne VMs, Netzwerkschnittstellen und Speicherpools werden unter /etc/libvirt/ und /etc/libvirt/qemu . gespeichert.

Manchmal müssen Sie die unter /lib/libvirt/images gespeicherten Festplattendateien physisch löschen, selbst nachdem Sie die VM aus libvirt entfernt haben. Um die Dinge weiter zu automatisieren, versuchen Sie, qcow2-Images zu importieren, die die meisten Linux-Distributionen wie Ubuntu und CentOS. Auf diesen ist das Betriebssystem vorinstalliert.

Fazit

Die Einrichtung ist nirgendwo so einfach wie die Einrichtung von VirtualBox und der Grund dafür ist vielfältig. Die meisten Stack sind kompliziert, weil sie modular und hochgradig skalierbar sind. Es macht keine Annahmen darüber, wo Sie die VM ausführen. Die Umgebung kann ein persönlicher Desktop oder ein Rechenzentrum sein. Die Arbeit mit einer GUI kann dazu beitragen, diese Komplexität bis zu einem gewissen Grad zu reduzieren. Diese Systeme sind jedoch so konzipiert, dass sie mit einer REST-API arbeiten, um eine Verbindung zu den Abrechnungssystemen, Überwachungssystemen usw. Ihres Unternehmens herzustellen. Sie werden nach dem Einsatz fast nie von einem Menschen berührt.

Das heißt, Automatisierung ist der Name des Spiels mit libvirt und qemu-kvm. Lesen Sie die offizielle Dokumentation durch und schreiben Sie Ihr eigenes cooles Skript, um eine Flotte von VMs aufzubauen, und lassen Sie uns wissen, ob Sie dieses Tutorial nützlich fanden.

Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...
Installieren Sie den neuesten Dolphin Emulator für Gamecube & Wii unter Linux
Mit dem Dolphin Emulator können Sie Ihre ausgewählten Gamecube- und Wii-Spiele auf Linux-Personalcomputern (PC) spielen. Als frei verfügbarer Open-So...
So verwenden Sie die GameConqueror-Cheat-Engine unter Linux
Der Artikel enthält eine Anleitung zur Verwendung der GameConqueror-Cheat-Engine unter Linux. Viele Benutzer, die Spiele unter Windows spielen, verwen...