KVM
KVM (Kernel-based Virtual Machine) ist eine quelloffene Virtualisierungstechnologie, die in den Linux-Kernel integriert ist und es einem Linux-System ermöglicht, als Hypervisor zu fungieren. Mit KVM lassen sich mehrere isolierte virtuelle Maschinen (VMs) auf einem einzigen physischen Server betreiben – jede mit eigenen virtuellen CPUs, eigenem Arbeitsspeicher, eigenen Festplatten, Netzwerkschnittstellen und einem eigenen Betriebssystem.
KVM wird in Server- und Cloud-Infrastrukturen, im VPS/VDS-Hosting, in Private Clouds, Rechenzentren sowie in Entwicklungs- und Testumgebungen eingesetzt. Als Gastsysteme können verschiedene Linux-Distributionen, Windows und weitere Betriebssysteme dienen, die von der entsprechenden Hardware- und Softwarekonfiguration unterstützt werden.
Die KVM-Virtualisierung sollte nicht mit einem KVM-Switch (Keyboard, Video, Mouse) verwechselt werden — einem Hardwaregerät, mit dem sich mehrere Computer über eine einzige Tastatur, einen Monitor und eine Maus steuern lassen. Im Kontext der Virtualisierung steht KVM für Kernel-based Virtual Machine.
Wie funktioniert KVM?
KVM ist Bestandteil des Linux-Kernels. Sobald die erforderlichen Kernel-Module geladen sind, erhält das Betriebssystem Hypervisor-Funktionen und kann virtuelle Maschinen erstellen und ausführen.
KVM nutzt die hardwaregestützte CPU-Virtualisierung, in erster Linie Intel VT-x oder AMD-V. Dadurch kann Gastcode mithilfe der Hardware-Virtualisierungsfunktionen direkt auf dem physischen Prozessor ausgeführt werden, anstatt auf eine vollständige Software-Emulation der CPU angewiesen zu sein.
In einer typischen Virtualisierungsumgebung arbeitet KVM mit mehreren weiteren Komponenten zusammen:
- KVM stellt den Virtualisierungsmechanismus auf Kernel-Ebene bereit;
- QEMU stellt die Emulation und Virtualisierung der Hardwaregeräte bereit, die die virtuelle Maschine benötigt;
- libvirt stellt Verwaltungswerkzeuge und APIs für virtuelle Maschinen und Hypervisoren bereit;
- Werkzeuge wie virsh sowie grafische Oberflächen ermöglichen es Administratoren, VMs zu erstellen und zu konfigurieren.
Beispielsweise startet ein Administrator eine virtuelle Maschine über virsh, libvirt übergibt die Konfiguration an QEMU, und KVM führt den Gastcode auf dem physischen Prozessor aus.
Deshalb werden KVM und QEMU häufig gemeinsam genannt. Es handelt sich jedoch nicht um dieselbe Technologie: KVM stellt die hardwarebeschleunigte Ausführung virtueller Maschinen bereit, während QEMU virtuelle Hardware bereitstellt und auch eigenständig als Emulator arbeiten kann.
Isolierung virtueller Maschinen in KVM
Jede virtuelle KVM-Maschine läuft als separater Linux-Prozess. Gleichzeitig erhält das Gastsystem eigene virtuelle Hardwareressourcen und ist von den anderen VMs isoliert.
Für die Ressourcenverwaltung und Isolierung werden Linux-Mechanismen genutzt, darunter der Prozess-Scheduler, cgroups sowie Funktionen der Speicherverwaltung. Je nach Konfiguration können Administratoren jeder virtuellen Maschine eine bestimmte Anzahl virtueller CPUs (vCPUs), eine bestimmte Menge RAM, Festplattenspeicher und Netzwerkressourcen zuweisen.
Virtuelle Maschinen können unabhängig voneinander betrieben werden. So lassen sich beispielsweise mehrere Linux-Systeme und Windows Server gleichzeitig auf demselben physischen Server ausführen, und der Neustart eines Gastbetriebssystems erfordert nicht den Neustart der übrigen Systeme.
Wo wird KVM eingesetzt?
KVM eignet sich für Infrastrukturen, in denen mehrere unabhängige Serverumgebungen auf derselben physischen Hardware konsolidiert oder Rechenressourcen dynamisch zugewiesen werden müssen.
Typische Einsatzszenarien sind:
- Bereitstellung von VPS- und VDS-Diensten durch Hosting-Anbieter;
- Aufbau privater und öffentlicher Clouds;
- Virtualisierung von Unternehmensservern;
- Betrieb isolierter Entwicklungs- und Testumgebungen;
- Aufbau virtueller Infrastrukturen in Rechenzentren;
- Betrieb unterschiedlicher Betriebssysteme auf einem einzigen physischen Server.
Beispielsweise kann ein Hosting-Anbieter einen physischen Server in mehrere virtuelle Server aufteilen und jedem Kunden vollen Root-Zugriff auf eine isolierte Umgebung geben.
KVM dient als Grundlage oder als zentrale Komponente zahlreicher Plattformen für Virtualisierung und Cloud-Infrastrukturmanagement, darunter OpenStack und Proxmox VE.
KVM und Container: Worin besteht der Unterschied?
KVM erstellt vollwertige virtuelle Maschinen. Jede VM verfügt über ein eigenes Gastbetriebssystem und eine eigene virtualisierte Hardwareumgebung.
Container verfolgen einen anderen Ansatz: Sie nutzen gemeinsam den Kernel des Host-Betriebssystems und isolieren Anwendungen und deren Umgebungen auf Betriebssystemebene. Dadurch benötigen Container in der Regel weniger Ressourcen und starten schneller, bieten jedoch nicht dieselbe Art der Virtualisierung wie vollwertige VMs.
KVM ist daher sinnvoll, wenn separate Betriebssysteme, eine starke Isolierung der Umgebungen oder die Unterstützung unterschiedlicher Gastbetriebssysteme erforderlich sind. Die Containerisierung wird häufiger für die schlanke und schnelle Bereitstellung von Anwendungen genutzt.
Vorteile von KVM
Ein Grund für die weite Verbreitung von KVM ist die direkte Integration in Linux. Für die Virtualisierung ist keine separate proprietäre Hypervisor-Plattform erforderlich, und die Technologie selbst wird als Teil des Linux-Ökosystems entwickelt.
Zu den wichtigsten Funktionen und Vorteilen von KVM gehören:
- hardwarebeschleunigte Virtualisierung;
- Unterstützung mehrerer Gastbetriebssysteme;
- flexible Zuweisung von CPU-, RAM-, Speicher- und Netzwerkressourcen;
- Integration in Linux-Werkzeuge und Plattformen für das Virtualisierungsmanagement;
- Unterstützung von Funktionen, die in Server- und Cloud-Umgebungen benötigt werden, darunter Live-Migration bei entsprechender Konfiguration;
- Open-Source-Lizenzierung und -Entwicklung.
Beispielsweise lassen sich vCPU- und RAM-Limits einer virtuellen Maschine über die Managementplattform ändern, ohne die physische Hardware auszutauschen.
Die tatsächliche Leistung und der verfügbare Funktionsumfang hängen nicht nur von KVM selbst ab, sondern auch vom Prozessor, vom Speichersystem, von der Netzwerkarchitektur, von der QEMU-Version und -Konfiguration, von den Einstellungen der virtuellen Maschine sowie von der eingesetzten Virtualisierungsmanagement-Plattform.
FAQ
KVM ist eine in Linux integrierte Virtualisierungstechnologie, mit der ein physischer Server als Hypervisor arbeiten und mehrere unabhängige virtuelle Maschinen ausführen kann.
KVM verleiht Linux Hypervisor-Funktionen. In der Praxis wird es in Virtualisierungsumgebungen üblicherweise zusammen mit QEMU und Werkzeugen zur Verwaltung virtueller Maschinen eingesetzt.
KVM stellt über den Linux-Kernel eine hardwarebeschleunigte Virtualisierung bereit, während QEMU emulierte oder virtualisierte Hardwaregeräte für virtuelle Maschinen bereitstellt und auch eigenständig als Emulator arbeiten kann.
Ja. Windows kann als Gastbetriebssystem in einer virtuellen KVM-Maschine ausgeführt werden, sofern die zugrunde liegende Hardware- und Softwarekonfiguration kompatibel ist.
Kernel-based Virtual Machine (KVM) ist eine Virtualisierungstechnologie. Ein KVM-Switch ist ein physisches Gerät zur Steuerung mehrerer Computer über eine einzige Tastatur, einen Monitor und eine Maus. Es handelt sich um voneinander unabhängige Technologien mit derselben Abkürzung.