KVM – Hardware-Virtualisierung mit Proxmox
0In diesem Artikel werfen wir einen genauen Blick auf die Virtualisierung von Server-Hardware mithilfe der Open Source Plattform Proxmox und KVM. Dazu erklären wir, was KVM und Proxmox ist, gehen auf QEMU ein und auf die Typ 1 oder 2 Hypervisor Unterscheidung. Anschließend veranschaulichen wir in einem Screencast-Video, wie Sie mithilfe von Proxmox ganz einfach eine neue virtuelle Maschine anlegen und starten.
Was ist KVM?
KVM, die „Kernel-based Virtual Machine„, ist in der Linux-Welt die Standard-Technologie für die Virtualisierung von Server-Hardware. Es stellt also einen Hypervisor zur Verfügung: Eine Software-Schicht, welche die tatsächliche Hardware des Servers so abstrahiert, dass ein Gast-Betriebssystem „glaubt“, auf echter Hardware zu laufen – ebenso wie VMware vSphere oder Hyper-V im Microsoft Windows Server.
Dennoch gibt es einige prinzipielle Unterschiede zu diesen beiden Produkten. Erstens ist KVM Bestandteil von Linux und damit Open Source und lizenzkostenfrei. KVM-Anwender müssen sich also keine Gedanken darüber machen, wie viele virtuelle Maschinen erlaubt sind oder wie viele Prozessorkerne er benutzen darf, ohne eine Lizenz zu verletzen.
Zweitens stellt KVM auch technisch eine Besonderheit dar. Denn streng genommen stellt es gar keinen Hypervisor dar, sondern sorgt mittels einer Reihe von Kernel-Modulen dafür, dass sich der Linux-Kernel selbst in einen solchen verwandelt.
Der Linux-Kernel als Hypervisor
Das macht durchaus Sinn, denn ein Hypervisor muss zum überwiegenden Teil die gleichen Aufgaben erfüllen wie ein Betriebssystem-Kern, nämlich die Verwaltung von Hardware-Ressourcen und Prozessen. Diese Funktionen müssen dann nicht zusätzlich implementiert werden. Die Code-Basis von KVM ist also sehr klein. Das heißt, seine Weiterentwicklung ist vergleichsweise unaufwändig und Sicherheitslücken oder andere Bugs können schneller gefunden werden.
Auch ist KVM bereits seit vielen Jahren Bestandteil des Linux-Kernels. Das heißt, die in der Kernel-Community etablierten Techniken zur Qualitätskontrolle greifen auch bei der Virtualisierungsschicht. Performance und Reifegrad sind etwa auf einem Level mit vSphere, in manchen Fällen ist KVM sogar leistungsfähiger.
Modularer Aufbau: KVM und QEMU
Das Konzept hat aber nicht nur Vorteile. Da sich KVM darauf beschränkt, die Schnittstellen für Virtualisierung zur Verfügung zu stellen, sind weitere Softwareschichten erforderlich, um die volle Funktionalität der Hardware-Virtualisierung umzusetzen. Schon für die eigentliche Emulation der virtuellen Hardware ist QEMU (Quick EMUlation) zuständig, ein Virtual Machine Monitor, der auch unabhängig von KVM funktioniert, aber nur gemeinsam mit diesem echte Hardware-Virtualisierung nahezu ohne Performance-Verluste gegenüber nativer Ausführung ermöglicht. Die funktioniert aber ausschließlich für Betriebssysteme, die für die x86-Architektur geschrieben wurden.
Ohne KVM ist QEMU ein so genannter Typ-2-Hypervisor, er kann dann auch virtuelle Maschinen für andere Architekturen wie etwa ARM, PowerPC und sogar Mainframes zur Verfügung auf x86-Hardware emulieren. Die Übersetzung der Instruktionen erfolgt dann aber ausschließlich in Software und ist entsprechend langsam.
Ist KVM ein Typ-1 oder Typ-2 Hypervisor?
Im Grunde ist KVM also ein Typ-2 Hypervisor (installiert auf einem anderen Betriebssystem, in diesem Fall einer Linux-Variante). Er läuft jedoch wie ein Typ-1-Hypervisor und kann je nach den Tools, die mit dem KVM-Paket selbst verwendet werden, die Leistung und Funktionalität selbst der komplexesten und leistungsfähigsten Typ-1 Hypervisors bieten. KVM kann auch eine Technologie namens QEMU (Quick EMUlation) nutzen, um bei Bedarf als vollständiger Typ-2 Hypervisor zu fungieren und den Benutzern das Beste aus beiden Welten zu bieten.
Bei der Virtualisierung aller gängigen x86-Betriebssysteme wie Windows, Linux, oder FreeBSD ist KVM aber in der Praxis untrennbar mit QEMU verbunden, so dass das Gespann KVM/QEMU oft auch nur als KVM bezeichnet wird, obwohl eigentlich beide gemeint sind.
Proxmox für das Management von KVM-Hosts
Es fehlen dann aber immer noch die Möglichkeiten, virtuelle Maschinen bequem zu verwalten. Denn KVM und QEMU sind alles andere als benutzerfreundlich. Hier kommt Proxmox VE ins Spiel. Dabei handelt es sich um eine Linux-Distribution, die komplett auf Virtualisierungsmanagement ausgelegt ist. Die wichtigsten Funktionen stehen über eine Web-Oberfläche zur Verfügung, die ein virtuelles Datacenter aus einem oder mehreren Proxmox-Hosts abbildet. Darüber hinaus besitzt Proxmox sehr mächtige Kommandozeilen-Werkzeuge für komplexere Management-Aufgaben. Damit ist es auch möglich, regelmäßig wiederkehrende Abläufe zu automatisieren und Proxmox-Hosts in Management-Umgebungen von Drittanbietern einzubinden.
Was ist Proxmox VE?
- Freie Linux-Distribution Debian für Virtualisierungsmanagement
- Zentrale Web-Oberfläche für die Administration
- Umgebung basiert auf QEMU und KVM
- VM und Container-Virtualisierung
- Virtuelle Linux-Container (LXC)
- Kommandozeilen-Werkzeuge für komplexe Aufgaben
KVM-Gäste im Web Interface anlegen
Als einfaches Beispiel für die Arbeit mit Proxmox wollen wir hier das Anlegen und Starten einer neuen virtuellen Maschine demonstrieren. Alle Schritte erfolgen komplett über das Web-Interface, Linux-Kenntnisse sind dafür nicht notwendig. Der Screencast zeigt kurz die notwendigen Schritte:
Anlegen einer virtuellen Maschine im Web Interface von Proxmox VE.
Die einzelnen Steps im Screencast:
Als erstes laden wir ein Installationsmedium für das künftige Betriebssystem in den lokalen Speicher des Hosts, im einfachsten Fall ein ISO-Image. Nach dem Upload kann unmittelbar die virtuelle Maschine über den entsprechenden Button oben rechts erstellt werden. Einige wenige Parameter lassen sich in weiteren Dialogen anpassen. Wer sich nicht sicher ist, belässt es vorerst bei den vorgeschlagenen Default-Werten. Das gilt insbesondere für die Netzwerk-Konfiguration, denn ohne ein funktionierendes Netzwerk ist eine virtuelle Maschine nicht erreichbar.
Nach Abfrage der Parameter legt Proxmox den virtuellen Server ohne weitere Umschweife an. Über ein Kontext-Menü (Rechtsklick mit der Maus) lässt er sich sofort starten und das Web Interface zeigt seinen Auslastungszustand grafisch an.
Weitere Informationen zu KVM-Virtualisierung
Das Anlegen virtueller Maschinen stellt natürlich nur den ersten kleinen Schritt in Richtung KVM-Virtualisierung dar. Proxmox bietet sehr weitreichende Möglichkeiten, das virtuelle Rechenzentrum genau auf individuelle Anforderungen abzustimmen: Live-Migration, Thin Provisioning, Hochverfügbarkeit, skalierbares Storage mit ZFS und Ceph, GPU-Unterstützung sowie Cloud-Integration sind nur einige Beispiele.
Das E-Book „Proxmox VE – Konzepte und Technologien der freien Virtualisierungssoftware“ stellt sie ausführlicher vor. Eine Besonderheit von Proxmox VE ist zudem die Integration von KVM-basierter Hardware-Virtualisierung und leichtgewichtigen Containern. In unserem TKmag Blog finden Sie hier einen weiteren Artikel zu Container-Virtualisierung mit Proxmox.