Lassen Sie uns versuchen, unseren eigenen KVM -Hypervisor auf einem Debian 9 -Server einzurichten .
Idealerweise benötigen Sie eine saubere Installation Ihrer Lieblings -Linux -Verteilung auf einer Maschine (nicht auf einer VM), die eine ziemlich moderne CPU hat. Die meisten modernen Intel CPUs unterstützen VT-X-Erweiterungen und ähnlich hat AMD seine AMD-V-Erweiterungen. Diese Erweiterungen sind „Verbesserungen“, die direkt in das Silizium Ihrer CPU aufgebaut sind, was eine schnellere und sicherere Virtualisierung ermöglicht. Sie müssen diese Erweiterungen aus dem BIOS/UEFI -Menü Ihres Motherboards aktivieren. Weitere Informationen finden Sie in Ihrem Motherboard -Handbuch.
Wenn Sie Ihre perfekt funktionierende Linux -Workstation nicht verschmieren möchten, können Sie eine virtuelle Maschine in der Cloud verwenden, um diese Experimente auszuführen. Digitalocean bietet zum Beispiel virtuelle Maschinen, die die Virtualisierung verschachtelt haben. Auf diese Weise können Sie VMs in Ihrer von Cloud gehosteten VM ausführen (dies wird als verschachtelte Virtualisierung bezeichnet). Offensichtlich wird dies eine sehr ineffiziente Möglichkeit sein, einen Hypervisor praktisch zu betreiben, aber als Experiment wird es gut funktionieren. Stellen Sie sicher, dass Sie mindestens 4 GB Speicher und mehr als 2 CPUs erhalten.
Sobald Sie die genannten Erweiterungen aktiviert haben, können Sie dies überprüfen, indem Sie LSCPU ausführen und nach dem Virtualisierungseintrag suchen:
$ lscpu
… .
Virtualisierung: VT-X
… .
Nachdem wir die Erweiterungen ermöglicht haben, können die Zeit im Stapel weiter nach oben gehen.
Installation von KVM und Qemu
KVM (oder Kernel-basierte virtuelle Maschine) besteht aus einigen Linux-Kernel-Modulen, die die zuvor aktivierten CPU-Erweiterungen nutzen werden. QEMU hingegen besteht aus einer Reihe von Userland -Programmen, die uns Emulationsfunktionen ermöglichen. Als eigenständige Software kann QEMU verwendet werden, um Programme aus einer Architektur wie Arm auf einer anderen auszuführen, wie x86_64 und umgekehrt umgekehrt. Es kann verwendet werden, um alles von einer einzelnen Binärdatei bis zu einem vollständigen 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 einzelnes Paket:
$ sudo apt installieren qemu-kvm
Sie können überprüfen, ob das Paket alle erforderlichen Module geladen hat, indem Sie ausgeführt werden:
$ lsmod | Grep Kvm
KVM_INTEL 200704 0
KVM 598016 1 KVM_INTEL
Irqbypass 16384 1 KVM
Das ist alles was du brauchst, theoretisch. Aber Sie werden bald erkennen, dass das praktisch ist. Virtuelle Maschinen sind enorm komplex und wir benötigen Software -Wrapper, um alle verschiedenen Anforderungen wie Netzwerk, Dateisystemmanagement usw. auf ziemlich automatisierte (und skalierbare Weise) zu verwalten. Dazu brauchen wir Libvirt Virtualisierungsbibliothek/Daemon.
Installieren von libvirt
Libvirt ist ein typischer Teil Ihres Virtualisierungsstapels. Der libvirtd -Daemon führt virtualisierungsbezogene Dienste im Hintergrund aus. Dienste, die Anfragen wie "Erstellen einer VM erstellen", "Zerstören Sie eine VM", "Erstellen eines Netzwerks" usw. und führen sie mit den grundlegenden Linux -Dienstprogrammen wie QEMU -Binärdateien, iptables usw. aus.
Libvirt ist sehr verallgemeinert und kann verwendet werden, um KVM -Gäste, LXC -Container und Xen Virtualisierungsstapel zu verwalten. Wir werden uns vorerst nur auf libvirt für KVM -Gäste konzentrieren. Libvirtd enthält eine API, die von GUI-Anwendungen wie Virt-Manager oder Ovirt- oder Befehlszeilen-Tools wie Virt-Installation, Virsh usw. konsumiert werden kann. Wir können sogar unsere eigenen benutzerdefinierten Clients schreiben, die dieselbe Standard -API verwenden. Wir werden die Befehlszeilen-Tools wie Virsh und Virt-Installation verwenden, um die Dinge standardisiert zu halten.
Lassen Sie uns alle diese Tools installieren:
$ apt Installieren Sie libvirt-Clients libvirt-daemon-System Virtinst
Wir benötigen auch ein weiteres Paket LIBGUESTFS-TOOLS, um uns dabei zu helfen, die Festplatten und Dateisysteme von Guest VM zu bearbeiten oder zu ändern.
Großartig! Jetzt haben wir den gesamten Stack installiert und wissen, wie die Architektur ausgelegt ist. Um libvirt (und zugehörige Tools) zu verwenden.
$ sudo usermod -ag libvirt
$ sudo usermod -ag libvirt -qemu
Oder führen Sie die Befehle als Root -Benutzer aus.
Virsh und starten das Standardnetzwerk
Das Dienstprogramm für Befehlszeilen von Virsh ist etwas, das Sie beim Verwalten Ihrer VMs viel verwenden werden. Sie können einfach virsh eingeben und in die Virsh -Befehlszeilenschnittstelle oder in Virsh [Optionen] aus Ihrer regulären Shell eingeben. Gehen Sie die Ausgabe von Virsh -Hilfe durch, wenn Sie mit einem VM -bezogenen Betrieb festhalten.
Der erste Virsh -Befehl, den wir verwenden werden, wird das Standardnetzwerk aufrufen, mit dem eine VM eine Verbindung herstellen kann:
$ virsh net-autostart standelung
$ virsh net-start standardmäßig
Dadurch startet das Standardnetzwerk und stellt sicher, dass es automatisch gestartet wird, wenn der Host neu startet. Um die Details zu diesem Standardnetzwerk zu überprüfen, verwenden Sie den Befehl:
$ virsh net-dumpxml StandardeinstellungStandard 3D723DC6-49A4-4F73-BF6D-623D6B46B099
Die XML -Datei kann Ihnen den Bereich möglicher IP -Adressen und die Art und Weise, wie sie mit der Außenwelt kommunizieren. Grundsätzlich wird der Verkehr über eine NAT zu ihnen kommen und sie werden nicht Teil des externen Netzwerks Ihres Hosts sein. Sie können Bridge Networking verwenden, um jede VM dem LAN des Host Machine auszusetzen.
Eine virtuelle Maschine starten
Um eine virtuelle Maschine zu starten. In diesem Schritt können Sie einen GUI-Installateur wie Virt-Manager wirklich schätzen. Wir werden es jedoch mit einem ziemlich komplexen Befehl virtinstall tun.
Ich behalte gerne alle meine Startmedien bei/var/lib/libvirt/boot und alle VMs und deren virtuelle Festplatte auf/var/lib/libvirt/images (der Standardstandort). Dies vereinfacht die Organisation.
$ cd/var/lib/libvirt/boot
$ wget http: // veröffentlichen.Ubuntu.com/18.04.2/Ubuntu-18.04.2-Desktop-AMD64.ISO
Der obige Befehl erfasst Ubuntu Desktop ISO, Sie können genauso leicht CentOs oder eine andere Verteilung erhalten, die Sie sich wünschen.
So erstellen Sie eine neue VM und starten Sie es aus:
$ virtinstall-Virt-Typ Kvm \
--Nennen Sie myvm \
--Speicher 2048 -vcpus = 2 \
--cdrom/var/lib/libvirt/boot/ubuntu-18.04.2-Desktop-AMD64.ISO \
--Festplattengröße = 40 \
--Grafik VNC, Hören = 0.0.0.0, Port = 5900 \
--Noautoconsole
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-Typ und Virt-Namen 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 es Ihnen, Konsolenzugriff auf Ihre VM -Remote zu haben, indem Sie eine Verbindung zum Port 5900 des Hosts herstellen. Öffnen Sie einen VNC -Client auf Ihrem Desktop und gehen Sie zu der IP Ihres KVM -Hosts am Port 5900. Stellen Sie sicher, dass Sie die IP des Hosts und nicht die IP des VM erreichen. Ihr VNC stellt eine Verbindung zur Videoausgabe Ihres VM her und Sie können mit der Installation fortfahren.
Wohin als nächstes?
Von hier an können Sie versuchen, die VMs anzuhalten, anzuhalten und zu löschen. Sie können auch die zugrunde liegende Infrastruktur ändern, indem Sie Pools zum Speichern und Konfigurieren von Brückennetzen hinzufügen. Alle Konfigurationsdateien für einzelne VMs, Netzwerkschnittstellen und Speicherpools werden unter/etc/libvirt/und/etc/libvirt/qemu gespeichert.
Manchmal müssen Sie die in/lib/libvirt/bilder gespeicherten Festplattendateien auch nach dem Entfernen der VM von libvirt physisch löschen. Um die Dinge weiter zu automatisieren, versuchen Sie, QCOW2 -Bilder zu importieren, die die meisten Linux -Verteilungen wie Ubuntu und CentOS. Diese haben das Betriebssystem vorinstalliert.
Das Einrichten ist nicht so einfach wie das Einrichten von VirtualBox, und der Grund dafür ist vielfältig. Der größte Teil des Stapels ist kompliziert, da er so ausgelegt ist, dass er modular und hoch skalierbar ist. 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 in gewissem Maße zu verringern. Diese Systeme sind jedoch so konzipiert, dass sie mit einer REST -API zusammenarbeiten, um eine Verbindung zu den Abrechnungssystemen, Überwachungssystemen Ihres Unternehmens usw. zu erreichen, usw. Sie werden fast nie von einem Menschen berührt, nachdem sie eingesetzt wurden.
Die Automatisierung ist jedoch der Name des Spiels mit Libvirt und Qemu-KVM. Lesen Sie durch die offizielle Dokumentation und schreiben Sie Ihnen ein cooles Skript, um eine VMs -Flotte zu verbessern und uns mitzuteilen, ob Sie dieses Tutorial nützlich gefunden haben.