Dies ist eine sehr kurze, schnelle Einrichtung, wie Sie den KVM-Server (The Linux Kernel Virtual Machine Hypervisor) zum Laufen bringen.
Warum KVM?
KVM ist ein Hypervisor, genau wie VmWare ESX, Microsofts Hyper-V und XEN. Das Tolle (wie immer) an KVM ist, dass es Teil von Linux ist, was bedeutet, dass es kostenlos ist und seine Leistung ausgezeichnet ist. Die Verwendung in einer Produktionsumgebung als eigenständiger Hypervisor ist eine ausgezeichnete Wahl, hat einen geringen Hostserver-Fußabdruck (in Bezug auf Leistungsanforderungen und Festplatten) und kann einfach mit anderen Tools wie virt-manager verwaltet werden.
Annahmen
Dieses kurze Tutorial geht davon aus, dass:- Sie möchten einen KVM-Server mit mindestens einer Gast-VM ausführen,
- Ihr KVM-Server erhält eine IP-Adresse in Ihrem Netzwerk,
- Ihre virtuelle(n) Maschine(n) erhält(n) eine IP-Adresse von Ihrem Netzwerk – Sie können also Bridging anstelle von Natting verwenden (die Verwendung von NATting anstelle von Bridging ist eine einfache Aufgabe, aber nicht Teil dieser Anleitung),
- Sie können lvm für die Zuweisung von Speicherplatz auf Ihrem KVM-Master verwenden (die Verwendung anderer Methoden zur Zuweisung von Speicherplatz wie Image-Dateien ist ebenfalls einfach, aber nicht Teil dieses Howtos) – beachten Sie, dass Sie dies installieren müssen, bevor Sie das durchgehen unten, falls es noch nicht auf Ihrem Server installiert ist.
- Sie verwenden Ubuntu 10.04 oder neuer. Es sollte ein aktueller Ubuntu-Server mit Netzwerkverbindung und Zugriff über ssh sein.
Danksagungen
Dies ist ein kurzer Leitfaden, der überarbeitet werden muss und bald fertig sein wird, aber in seinem jetzigen Zustand hauptsächlich von www.screenage.de übernommen wurde, also großes Lob an den ursprünglichen Autor, ccm. Aus Gründen der Lesbarkeit wurden geringfügige Änderungen vorgenommen.
Das Netzwerk zum Laufen bringen
Für das Bridged-Netzwerk müssen Sie die Bridge-Dienstprogramme installieren und Ihre Netzwerkkonfiguration ändern. Installieren Sie zuerst das Paket:$ sudo apt-get install bridge-utils |
$ sudo brctl addbr br0 |
# The loopback network interface auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.1.100 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off |
Bitte stellen Sie sicher, dass Sie nicht vergessen, Ihr „eth0“ wie oben gezeigt auf „iface eth0 inet manual“ zu setzen. Dies ist erforderlich, da Sie verhindern möchten, dass eth0 eine Adresse über DHCP abruft, aber dennoch für Ihre Bridge vorhanden sein soll, da es sich um die physikalische Schicht handelt. Nachdem Sie die Bridge eingerichtet haben, starten Sie entweder Ihr Netzwerk neu (sudo /etc/init.d/networking restart ) oder starten Sie Ihren Server neu. Wenn Sie bereits per ssh auf Ihren Server zugreifen, seien Sie gewarnt, dass eine Fehlkonfiguration Sie aussperren könnte.
KVM installieren
Jetzt ist es an der Zeit, kvm und einige nützliche Hilfsanwendungen zu installieren:$ sudo apt-get install qemu-kvm ubuntu-vm-builder uml-utilities \ virtinst |
Das ist alles:Sie haben jetzt bereits einen kvm-Server. Zeit bis…
Installieren Sie Ihre erste virtuelle Maschine
Wir werden ein logisches 100-GB-Volume für den Gast einrichten, Ubuntu herunterladen und eine Maschine mit 2 GB RAM und 4 Kernen erstellen:
# create an empty 100Gb logical volume sudo lvcreate --size 100G vg0 --name guest1 # download Ubuntu iso (or use one you already have) $ wget http://..../ # create machine $ sudo virt-install --connect qemu:///system -n guest1 -r 2048 \ --vcpus=4 -f /dev/mapper/guest1 --network=bridge:br0 \ --vnc --accelerate -v -c ./SOMEUBUNTUISO.iso \ --os-type=linux --os-variant=ubuntuKarmic --noautoconsole # please note: "ubuntuKarmic" is currently the most recent # virt-install defaults scheme - just use this if in doubt. |
Stellen Sie eine VNC-Verbindung her
KVM verwendet VNC, um Ihnen eine grafische Benutzeroberfläche für Ihren Computer bereitzustellen. Das Gute daran ist, dass Sie damit problemlos grafische Installer (und ja, sogar Windows) verwenden können. Da sogar Ubuntu-Server am Anfang in einem grafischen Modus booten, ist es großartig, hier VNC zu verwenden.
Ich nehme an, Sie arbeiten auf einem Remote-Server. KVM gibt jedem Gast, den er startet, eine neue vnc-Instanz mit einem neuen, inkrementierten Port. Es beginnt mit 5900. Tunneln wir also über ssh:
ssh user@remotekvmhost -L 5900:localhost:5900 |
Sie verbinden sich über ssh mit Ihrem entfernten kvm-Host und öffnen einen ssh-Tunnel für Port 5900. Starten Sie nun Ihren bevorzugten VNC-Client lokal und lassen Sie ihn sich entweder mit „0“ oder Port 5900 verbinden, was in VNC dasselbe bedeutet (duh…).
Von nun an sollten Sie Ihren Server auf einem VNC-Display sehen. Installieren Sie es wie jeden anderen Server. Das Netzwerk wird überbrückt, sodass Sie sogar DHCP verwenden können, wenn dies in Ihrem Netzwerk angeboten wird.
Bitte stellen Sie sicher, dass Sie das Paket „acpi“ in Ihrem kvm-Gast installieren, sonst können Sie den Gast nicht vom Master aus stoppen (wie es über acpi gemacht wird):
# make sure, "acpi" is installed in the *guest* machine sudo apt-get install acpi |
Nach der Installation können Sie Ihre kvm-gues mit den folgenden Befehlen verwalten:
# list running instances $ virsh list # start an instance $ virsh start INSTANCENAME # stop an instance politely $ virsh stop INSTANCE # immediatly destroy a running instance $ virsh destroy INSTANCE # edit the config file for an instance $ virsh edit INSTANCE |
Einhängen der LVM-Volumes
Wie Sie vielleicht bemerkt haben, können die lvm-Volumes Ihres virtuellen Gastes nicht direkt im Master gemountet werden, da sie ihre eigene Partitionstabelle enthalten. Wenn Sie jedoch vom Master aus Zugriff auf das Dateisystem des Gasts benötigen, müssen Sie einige Geräteknoten erstellen. Es gibt ein großartiges Tool namens „kpartx“, das Geräteknoten für Sie erstellen und löschen kann. So einfach geht's:
# install kpartx $ sudo install kpartx # make sure, virtual gues is switched off! # create device nodes $ sudo kpartx -a /dev/mapper/guest1 # check /dev/mapper for new device nodes and mount/unmount them # after you are done, delete the nodes $ sudo kpartx -d /dev/mapper/guest1 |
Bitte beachten Sie, dass diese Methode auch mit anderen Blockgeräten wie Image-Dateien mit Partitionstabellen funktioniert. Sie könnten nur dann in Schwierigkeiten geraten, wenn Ihr lvm-Volume ein eigenes lvm enthält. Wenn das der Fall ist, spielen Sie mit pvscan, vgscan und lvscan herum, nachdem Sie kpartx verwendet haben. Seien Sie mutig, aber seien Sie gewarnt, dass das Sichern von Daten immer eine gute Idee ist.
Alternative Verwaltungsschnittstellen
Falls Sie wirklich eine GUI für Ihre Verwaltungsanforderungen benötigen, überprüfen Sie „virt-manager“. Sie können dies auf Ihrem Desktop installieren und laufende Instanzen fernverwalten:
$ sudo install virt-manager
Sie sollten jedoch die Seite „Virtual Machine Manager“ von RedHat überprüfen. Es könnte eine gute Idee sein, eine neuere Version manuell zu kompilieren und zu installieren und sich auf die Setup-Howtos zu verlassen. Persönlich bevorzuge ich hier die einfache Textkonsole, da es hilft, bei Problemen recht schnell und von überall aus reagieren zu können, und Sie natürlich nicht den Overhead haben, X11 auf dem Server auszuführen.
Schlussfolgerung
Heutzutage ist es ziemlich einfach, einen KVM-Server einzurichten. Da KVM/libvirt-fähige Gäste ziemlich schnell sind, ist dies eine nette und einfache Möglichkeit, sogar virtuelle Maschinen zu hosten. Ich betreibe seit zwei Jahren etwa ein Dutzend virtuelle Maschinen und drei Hardwareserver ohne ernsthafte Probleme.