KVM – Virtualisierung im Kern von Linux

Virtualisierung ist im Firmenkontext und beim professionellen Betrieb von Servern längst nicht mehr wegzudenken. Auf einem physikalischen Rechner können mehrere virtuelle Gastsysteme betrieben werden. Einige wesentliche Vorteile sind:

  • Systeme können ohne zusätzliche Hardware sauber nach Aufgabenbereich getrennt werden, beispielsweise in Mailserver, Fileserver und Anwendungsserver.
  • Ein Gastsystem kann sozusagen auf Knopfdruck gesichert („eingefroren“) und wiederhergestellt werden.
  • Die Migration auf neue Hardware ist in sehr kurzer Zeit möglich.
  • Die Gastsysteme sind letztlich beliebig skalierbar, wodurch flexibel auf Belastungsspitzen reagiert werden kann.
  • Für alle Gastsysteme wird eine einheitliche Hardware-Basis geschaffen. Treiberkonflikte werden im Vorfeld ausgeschlossen.

Während das freie Betriebssystem Linux im Desktop-Bereich und bei Privatanwendern eher ein Exot ist, gilt es im Server-Bereich längst als etabliert. Eine dementsprechend große Rolle spielt es als Basis für die Virtualisierung.

Was ist KVM?

Die durch die Firma Qumranet im Jahr 2006 vorgestellte Kernel-based Virtual Machine (KVM) wurde bereits Anfang 2007 offiziell in den Linux-Kernel 2.6.20 übernommen. Im Folgejahr wurde Qumranet vom Linux-Distributor RedHat aufgekauft. Für die Weiterentwicklung der Technologie gründete RedHat mit IBM die Open Virtualization Alliance (OVA). An dieser beteiligten sich Unternehmen wie Suse, Intel und HP.

KVM ist eng mit der Emulationssoftware QEMU verbunden. Diese stellt meistens Funktionen zur Virtualisierung der Hardware zur Verfügung, während Linux-KVM die Zuteilung der Ressourcen vom Wirtssystem verwaltet. Daher findet man häufig auch die Bezeichnung KVM/QEMU. Da KVM ein integraler Bestandteil von Linux ist, kann die Virtualisierungslösung nicht auf Windows-Rechnern eingesetzt werden. Windows wird aber neben den meisten unixoiden Betriebssystemen wie Linux, Solaris und BSD als Gastsystem unterstützt. KVM ist standardmäßig in den meisten Linux-Distributionen enthalten, muss aber aktiviert werden.

Die Funktionsweise von KVM-Linux im Detail

Um die Funktionsweise der Kernel-based Virtual Machine zu verstehen, braucht es zunächst einen Exkurs in die Grundlagen der Virtualisierung. Virtualisierung bedeutet, dass auf einem Wirtsrechner (Host) ein oder mehrere vollwertige Betriebssysteme (Gastsysteme) ausgeführt werden können. Dabei wird die dem Gastsystem zur Verfügung gestellte Hardware entweder softwareseitig nachgebildet (emuliert) oder, durch einen Hypervisor gesteuert, realen Hardware-Ressourcen zugeteilt. Beim Hypervisor handelt es sich um eine Verwaltungs- und Übersetzungsschicht zwischen realer und virtueller Hardware. Je nach Art der Virtualisierung ist also ein Übersetzen der Anforderungen an die reale Hardware notwendig oder es erfolgt nur die Zuteilung der geforderten Aktionen, beispielsweise eine Berechnung im Prozessor.

Man unterscheidet verschiedene Arten der Virtualisierung:

  • Vollständige Virtualisierung: Die Hardware wird softwareseitig komplett nachgebildet. Dadurch ist kein Interagieren mit der realen Hardware nötig, was auch entsprechende Treiber überflüssig macht. Diese Variante ist vergleichsweise langsam.
  • Paravirtualisierung: Das Gastsystem interagiert direkt mit dem Hypervisor und benötigt speziell hierauf abgestimmte Treiber.
  • Hardwareunterstützte Paravirtualisierung: Die Hardware-Unterstützung ist bereits im Prozessor integriert. Dadurch wird die Effizienz gesteigert und der Anpassungsaufwand für Gastsysteme verringert. Moderne Prozessoren von Intel (Intel-VT-x) und AMD (AMD-V) besitzen diese Funktionalität. U. U. muss diese im BIOS/UEFI aktiviert werden.

Zudem kann man zwischen zwei Typen von Hypervisoren unterscheiden:

  • Typ 1 (Bare Metal): Der Hypervisor läuft direkt auf der eingesetzten Hardware, ohne dass er in ein Betriebssystem eingebettet ist.
  • Typ 2 (Hosted): Der Hypervisor ist in das Wirtsbetriebssystem eingebettet und wird aus diesem heraus aktiviert.

Linux-KVM ist ein Hypervisor des Typs 2 und nutzt die hardwareunterstützte Paravirtualisierung. Besonders macht ihn allerdings die direkte Einbindung in den Kernel.

Hinweis

„Kernel“ ist das englische Wort für „Kern“ – es handelt sich um den „Kern“ eines Betriebssystems. In ihm sind die Grundfunktionen des Betriebssystems integriert, z. B. der Zugriff auf die Hardware und die Zuteilung von Rechenzeit an die Prozessoren in einem Multitasking-System. Zugriffe auf den Kernel sind besonders geschützt (Kernel-Mode) und die an ihn gestellten Anforderungen werden durch Prozessoren maximal privilegiert behandelt.

Aufgrund der engen Anbindung an den Kernel wird diskutiert, ob das System nicht sogar Elemente eines Typ-1-Hypervisors aufweist.

Aus welchen Bestandteilen besteht die Kernel-based Virtual Machine?

Das Gesamtpaket KVM besteht aus mehreren Komponenten:

  • Kernel-Erweiterung: Enthält die eigentliche Erweiterung kernel.ko. Diese ist die Übersetzungsschicht von realer zu virtueller Hardware. Außerdem gehören die auf die Prozessoren abgestimmten Module kvm-amd und kvm-intel dazu.
  • libvirt: Die Programmierschnittstelle (API) zur Ansprache der virtuellen Maschinen. Damit können sie gesteuert und verwaltet werden. Libvirt bringt auch Werkzeuge wie eine Kommandozeile mit der Bezeichnung virsh und die grafische Oberfläche Virtual-Machine-Manager mit.
  • QEMU: Hierbei handelt es sich um ein grundsätzlich eigenständiges Programm zur Emulation von Rechnern und zur Verwaltung virtueller Maschinen. Linux-KVM nutzt seine Funktionalität zur Emulation von Hardware und verbessert die Geschwindigkeit durch die Paravirtualisierung. In vielen Distributionen werden beide Bestandteile in einem Installationspaket angeboten.
  • Kvmtool: Eine schlankere Alternative zu QEMU, die QEMU allerdings noch nicht verdrängen konnte.
  • VirtIO-Treiber: Spezielle Treiber für Gastsysteme, die auf den Hypervisor abgestimmt sind und die Paravirtualisierung ermöglichen.

Anwendungsbereiche von KVM

Insbesondere beim Betrieb von professionellen Serveranlagen wird die Kernel-based Virtual Machine häufig verwendet. Das Bundesamt für Sicherheit in der Informationstechnik (BSI) bezeichnete sie 2017 im Rahmen einer Sicherheitsstudie als relevanteste Virtualisierungslösung im Open-Source-Bereich.

Zusätzliche Bedeutung bekommt die Linux-KVM durch die Einbindung als Hypervisor in die beliebte Cloud-Software-Lösung OpenStack.

Vor- und Nachteile von KVM

Abschließend betrachten wir kurz einige Vor- und Nachteile der Virtualisierungslösung:

Vorteile:

  • Ausgereiftes, etabliertes System
  • Bereits in den meisten Linux-Distributionen enthalten
  • Kostenfrei und quelloffen
  • Einzige echte „Kernel Virtual Machine“, dies sichert Performanz und Stabilität
  • Entwicklung durch renommierte Firmen
  • Automatisierte Administration durch libvirt möglich

Nachteile:

  • Nur für Linux-Systeme verfügbar
  • Leistungsfähige Hardware für den Host-Rechner notwendig
  • Einarbeitungsaufwand in der Handhabung
  • Durch Zentralisierung von Hardware steigen die Risiken bei einem Systemausfall („Single Point of Failure“ – kann mit einer klugen Backup-Strategie verringert werden)

Alternativen zu Linux-KVM

Im Bereich frei zugänglicher Software mit ähnlicher Funktionalität ist vorrangig XEN als Alternative zu nennen, eine Virtualisierungslösung, die ebenfalls eng an Linux angebunden, aber nicht im Kernel integriert ist.

Der etablierte kommerzielle Anbieter VMWare bietet mit seinen ESXi-Servern Alternativen zur Paravirtualisierung und mit seiner Workstation zur Vollvirtualisierung. Der VMWare-Player ist für den Privatgebrauch kostenlos.

Virtualbox ist eine ebenfalls freie Alternative zur Vollvirtualisierung, die für alle gängigen Betriebssysteme als Basis zur Verfügung steht.

Microsoft hat für Windows mit dem System Hyper-V eine Virtualisierungslösung zur Paravirtualisierung, deren Funktionsweise mit Linux-KVM vergleichbar ist. Sie verfügt über einen dedizierten Windows-Hyper-V-Server und eine eingebettete Funktionalität in den Server-Betriebssystemen. Auch in den Versionen Windows 10 Professional und Enterprise ist Hyper-V enthalten.

Fazit

Flexibilität und Skalierbarkeit sind zwei nahezu unschlagbare Argumente für die Nutzung von Virtualisierung. Gastbetriebssysteme können schlank gehalten und für bestimmte Anwendungszwecke verwendet werden. Sichert man die Systeme regelmäßig auf räumlich getrennten Speichermedien, ist das Ausfallrisiko zu vernachlässigen.

Wer Linux für seinen Server nutzt, kommt praktisch nicht mehr daran vorbei, KVM zumindest in Erwägung zu ziehen. Die Aufnahme in den Kernel und die Entwicklung durch etablierte Hersteller sind gute Gründe, sich dafür zu entscheiden.


Auf dem Laufenden bleiben?

Jetzt für unseren Newsletter anmelden und gratis Online-Marketing Whitepaper für lokale Anbieter sichern!