QEMU - Kernel Bases Virtual Machine (KVM) auf Linux x86 Hardware (original) (raw)

QEMU

QEMU ist eine Virtualisierungstechnik, die es ermöglicht, virtuelle Maschinen auf Linux-basierten x86-Hardware-Systemen auszuführen. Diese Technik, auch bekannt als Kernelbasierte Virtual Machine (KVM), wurde im Oktober 2006 der Öffentlichkeit vorgestellt und ist seit Version 2.6.20 des Linux-Kernels enthalten. KVM bietet die Möglichkeit, virtuelle Maschinen mit nahezu nativer Geschwindigkeit auszuführen und ist die offiziell unterstützte Virtualisierungslösung von Ubuntu seit Version 8.04. Es basiert auf der Virtualisierungstechnik von Qumranet und wird von Red Hat entwickelt.

KVM nutzt den Linux-Kernel als Schnittstelle und verwendet QEMU als Virtualisierungsumgebung. Es bietet eine effiziente und flexible Lösung für die Virtualisierung auf Linux x86 Hardware. Durch die Bereitstellung von Ressourcen wie Prozessor, Arbeitsspeicher und Netzwerk ermöglicht KVM die Ausführung mehrerer virtueller Maschinen auf einem einzelnen physischen Server.

Voraussetzung

Um KVM unter Ubuntu nutzen zu können, sind bestimmte Voraussetzungen zu erfüllen. Eine essentielle Voraussetzung ist, dass der Prozessor Hardwarevirtualisierung direkt unterstützt. Dies lässt sich mithilfe des Befehls cat /proc/cpuinfo überprüfen. Dabei sollte man nach den Einträgen „vmx“ oder „svm“ in der Ausgabe suchen. Ist der Prozessor in der Lage, Hardwarevirtualisierung zu unterstützen, werden die benötigten Kernel-Module in der Regel automatisch geladen.

Falls der Prozessor die Hardwarevirtualisierung nicht unterstützt, können die erforderlichen Kernel-Module manuell geladen werden. Für Intel-Prozessoren erfolgt dies mit den Befehlen modprobe kvm und modprobe kvm_intel. Für AMD-Prozessoren lautet der Befehl modprobe kvm und modprobe kvm_amd. Es ist jedoch zu beachten, dass möglicherweise eine Aktivierung der Hardwarevirtualisierung im BIOS erforderlich ist.

Prozessor Befehle zum Laden der Kernel-Module
Intel modprobe kvmmodprobe kvm_intel
AMD modprobe kvmmodprobe kvm_amd

Installation

Um KVM auf Ihrem Ubuntu-System zu installieren und x86-Maschinen zu emulieren, müssen Sie das Paket qemu-kvm installieren. Führen Sie dazu den folgenden Befehl aus:

sudo apt-get install qemu-kvm

Nach der Installation ist es ratsam, Ihre Benutzer zur „kvm“-Gruppe hinzuzufügen, um auf KVM zugreifen zu können. Verwenden Sie den Befehl:

Bitte beachten Sie, dass diese Änderungen erst nach einem Neustart wirksam werden.

Jetzt können Sie KVM vollständig installieren und verwenden, um virtuelle Maschinen auf Ihrem Ubuntu-System einzurichten und auszuführen.

Benutzung

KVM dient als Schnittstelle zum Linux-Kernel und verwendet QEMU als Virtualisierungsumgebung. Die virtuellen Maschinen werden durch den Befehl „kvm“ gestartet, ähnlich wie bei QEMU. Mit dem Befehl können virtuelle Maschinen aus einem Image oder einer ISO-Datei gestartet werden und es können verschiedene Optionen wie die Größe des Arbeitsspeichers angegeben werden.

KVM Benutzung

Beispiel:

Um eine virtuelle Maschine mit KVM zu starten, verwenden Sie den folgenden Befehl:

Beispiel:

    kvm -hda vm_image.img -cdrom ubuntu.iso -m 2048

Mit diesem Befehl wird eine virtuelle Maschine gestartet, die das Image vm_image.img als Festplatte und die ISO-Datei ubuntu.iso als CD-ROM verwendet. Die virtuelle Maschine hat eine Arbeitsspeichergröße von 2048 Megabyte.

Befehl Beschreibung
kvm Startet eine virtuelle Maschine
-hda Gibt die Image-Datei an, die als Festplatte verwendet wird
-cdrom Gibt die ISO-Datei an, die als CD-ROM-Laufwerk verwendet wird
-m Gibt die Größe des Arbeitsspeichers in Megabyte an

Unterstützte Gastsysteme

KVM bietet Unterstützung für verschiedene Gastsysteme, darunter:

  1. Linux (32 und 64 Bit)
  2. Windows (32 Bit)
  3. BSD-Derivate
  4. Solaris
  5. und andere

Die meisten produktiv eingesetzten Betriebssysteme funktionieren voraussichtlich mit KVM.

Management Tools/Clients

Zur effektiven Verwaltung von KVM-VMs stehen verschiedene Tools und Clients zur Verfügung. Diese ermöglichen eine bequeme Steuerung und Überwachung der virtuellen Maschinen. Zu den beliebten Optionen zählen:

virsh

virsh ist eine leistungsstarke Konsolenanwendung, die auf der Bibliothek libvirt basiert. Mit virsh kann die Verwaltung von KVM-VMs über die Kommandozeile erfolgen. Es bietet eine Vielzahl von Befehlen und Möglichkeiten zur Konfiguration und Steuerung der virtuellen Maschinen. Virsh ist ein flexibles und vielseitiges Tool, das von erfahrenen Administratoren gerne verwendet wird.

AQEMU

AQEMU ist eine grafische Benutzeroberfläche für QEMU/KVM. Mit AQEMU können VMs einfach erstellt, konfiguriert und gestartet werden. Die intuitive Bedienung und die übersichtliche Oberfläche machen AQEMU zu einer benutzerfreundlichen Wahl für die Verwaltung von KVM-VMs. Neben den grundlegenden Funktionen bietet AQEMU auch erweiterte Optionen wie die Einstellung von Ressourcenlimits und die Konfiguration von Netzwerkeinstellungen.

Neben diesen beiden Tools stehen auch andere Tools zur Verfügung, die bei Bedarf verwendet werden können. Ein prominentes Beispiel ist QEMU selbst, das als Virtualisierungsumgebung für KVM dient und umfangreiche Funktionen bietet.

Für weiterführende Informationen und hilfreiche Tipps zur Verwendung von KVM-Management-Tools empfiehlt sich auch das Ubuntu-Wiki. Es enthält eine umfangreiche Sammlung von Ressourcen und Anleitungen, die bei der Einrichtung und Verwaltung von KVM-VMs unterstützen.

Kosten und Nutzen von KVM

KVM ist eine kostenfreie Virtualisierungslösung, die auf Linux basiert. Im Vergleich zu kostenpflichtigen Lösungen wie VMware vSphere oder Microsoft Hyper-V bietet KVM eine kostengünstige Alternative. Mit KVM können Unternehmen erhebliche Einsparungen erzielen, da keine Lizenzkosten anfallen.

Dennoch bietet KVM eine leistungsstarke Virtualisierungsumgebung, die mit ihren kostenpflichtigen Konkurrenten konkurrieren kann. Es ermöglicht das Erstellen und Verwalten von virtuellen Maschinen und bietet eine hervorragende Skalierbarkeit und Flexibilität.

Ein weiterer Vorteil von KVM ist seine Integration in die Linux-Umgebung. Da Linux weit verbreitet und gut unterstützt wird, bedeutet die Verwendung von KVM in einer Linux-basierten Infrastruktur eine nahtlose Integration und einfache Verwaltung.

Es ist jedoch wichtig zu beachten, dass KVM auch mit kostenpflichtigen Lösungen kombiniert werden kann, um erweiterte Funktionen und Support zu erhalten. Einige Unternehmen entscheiden sich möglicherweise dafür, KVM als Hauptvirtualisierungslösung zu nutzen und bei Bedarf kostenpflichtige Lösungen einzusetzen, um spezifische Anforderungen zu erfüllen.

Bei der Entscheidung für KVM sollten Unternehmen auch die erforderlichen Ressourcen berücksichtigen. Da KVM auf Linux basiert, erfordert die Verwaltung und Wartung von KVM-Knoten Kenntnisse über Linux und Erfahrung mit Linux-Administrationsaufgaben. In einigen Fällen kann es erforderlich sein, zusätzliches Personal einzustellen oder externe Dienstleister für die Unterstützung der KVM-Infrastruktur zu engagieren.

Insgesamt bietet KVM ein hervorragendes Kosten-Nutzen-Verhältnis. Es ermöglicht Unternehmen, ihre Virtualisierungsanforderungen kostengünstig zu erfüllen und bietet gleichzeitig leistungsstarke Funktionen und Skalierbarkeit. Durch die sorgfältige Planung und richtige Implementierung kann KVM zu einer effizienten und kosteneffektiven Virtualisierungslösung für Unternehmen aller Größenordnungen werden.

Vergleich mit VMware und Hyper-V

Beim Vergleich von KVM mit anderen Virtualisierungslösungen wie VMware vSphere und Microsoft Hyper-V gibt es einige wichtige Unterschiede zu beachten.

Letztendlich hängt die Wahl zwischen KVM, VMware vSphere und Microsoft Hyper-V von den spezifischen Anforderungen und Ressourcen Ihres Unternehmens ab. Eine gründliche Evaluierung der Funktionen, Kosten und Integration in Ihre bestehende Infrastruktur sollte durchgeführt werden, um die richtige Entscheidung zu treffen.

Leistungsmerkmale von KVM

KVM bietet eine Reihe leistungsstarker Funktionen, die es zu einer vielseitigen Virtualisierungslösung machen.

Nested Virtualization

Mit KVM können virtuelle Maschinen innerhalb von virtuellen Maschinen ausgeführt werden. Diese Funktion ermöglicht eine tiefere Virtualisierungsebene, die besonders in Testumgebungen und Entwicklungsszenarien nützlich sein kann.

Unterstützte CPU-Erweiterungen

KVM unterstützt verschiedene CPU-Erweiterungen wie Page Tables und IOMMU. Diese Erweiterungen verbessern die Leistung und Sicherheit der virtuellen Maschinen, indem sie den Speicherzugriff optimieren und die Isolation zwischen den VMs gewährleisten.

Optimierte Leistung

Die Leistung von KVM kann weiter optimiert werden, indem der Scheduler der Gast-VMs angepasst wird, das Caching der Festplatte optimiert wird und Kernel SamePage Merging aktiviert wird. Diese Maßnahmen können zu einer verbesserten Ausführungsgeschwindigkeit und effizienteren Ressourcennutzung führen.

Unterstützte KVM-Versionen

Die unterstützten KVM-Versionen variieren je nach Gastsystem. Es ist wichtig sicherzustellen, dass die KVM-Version mit dem verwendeten Gastsystem kompatibel ist, um ein reibungsloses Funktionieren zu gewährleisten.

KVM Leistungsmerkmale

Die Leistungsmerkmale von KVM machen es zu einer beliebten Wahl für Virtualisierungsumgebungen. Mit Funktionen wie Nested Virtualization und Unterstützung für CPU-Erweiterungen bietet KVM eine flexible Lösung für verschiedene Anwendungsfälle. Durch die Optimierung der Leistung und die Nutzung der unterstützten KVM-Versionen können Benutzer die bestmögliche Leistung aus ihrer Virtualisierungsinfrastruktur herausholen.

Sicherheit von KVM

KVM legt großen Wert auf Sicherheit und bietet verschiedene Maßnahmen zum Schutz der Virtualisierungsumgebung. Die Sicherheitsfunktionen von KVM werden ständig weiterentwickelt und verbessert, um potenzielle Risiken zu minimieren und die Vertraulichkeit, Integrität und Verfügbarkeit der virtuellen Maschinen zu gewährleisten.

Zur Sicherheit von KVM gehört die Isolierung der virtuellen Maschinen. Jede VM wird in ihrer eigenen Umgebung ausgeführt und hat keinen direkten Zugriff auf die Host-Ressourcen. Durch diese Isolation wird verhindert, dass ein Angriff auf eine VM die anderen VMs oder den Host gefährdet.

KVM nutzt auch Sicherheitsfunktionen des Linux-Kernels, wie zum Beispiel den Security-Enhanced Linux (SELinux) Mechanismus, um die Zugriffsrechte und den Schutz vor nicht autorisierten Zugriffen zu steuern. Dadurch wird eine zusätzliche Sicherheitsebene geschaffen, um potenzielle Angriffe abzuwehren.

Die Sicherheit von KVM wird auch durch regelmäßige Updates und Patches gewährleistet, um bekannte Schwachstellen und Sicherheitslücken zu beheben. Es ist wichtig, KVM und den Linux-Kernel regelmäßig zu aktualisieren, um die neuesten Sicherheitsupdates zu erhalten und potenzielle Risiken zu minimieren.

Um weitere Informationen zur Sicherheit von KVM zu erhalten, können Sie die offizielle Dokumentation des Kernel Virtual Machine Projekts konsultieren. Dort finden Sie detaillierte Informationen zu den Sicherheitsfunktionen und bewährten Sicherheitspraktiken für den Einsatz von KVM.

Sicherheitsmaßnahmen von KVM:

Anbieter und Alternativen zu KVM

Neben KVM gibt es verschiedene kommerzielle Anbieter, die Virtualisierungslösungen auf Basis von KVM anbieten. Ein bekanntes Beispiel dafür ist Proxmox, eine umfassende Virtualisierungsplattform, die auf KVM und dem Open-Source-Hypervisor QEMU basiert. Proxmox bietet eine Vielzahl von Funktionen und Möglichkeiten zur Verwaltung und Bereitstellung von virtuellen Maschinen.

Neben kommerziellen Anbietern wird KVM auch von vielen Linux-Distributionen unterstützt und kann dort als kostenfreie Virtualisierungslösung genutzt werden. Einige der beliebtesten Linux-Distributionen, die KVM als Teil ihrer Virtualisierungsstrategie unterstützen, sind:

Die Unterstützung von KVM durch diese Linux-Distributionen gewährleistet eine nahtlose Integration und eine zuverlässige Virtualisierungsumgebung. Darüber hinaus bieten sie häufig auch spezifische Tools und Hilfsmittel zur Verwaltung von KVM-VMs und zur optimierten Konfiguration der Virtualisierungsumgebung.

Um einen umfassenden Überblick über die verschiedenen KVM-Anbieter und die unterstützten Linux-Distributionen zu erhalten, empfiehlt es sich, die offiziellen Websites der Anbieter und die Dokumentation der jeweiligen Distribution zu konsultieren.

Anbieter Beschreibung Website
Proxmox Umfassende Virtualisierungsplattform auf Basis von KVM und QEMU. https://www.proxmox.com/
Ubuntu Eine der beliebtesten Linux-Distributionen mit integrierter KVM-Unterstützung. https://ubuntu.com/
Debian Stabile und weit verbreitete Linux-Distribution mit KVM-Unterstützung. https://www.debian.org/
Red Hat Enterprise Linux (RHEL) Kommerzielle Linux-Distribution mit umfassendem KVM-Support. https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux
CentOS Kostenlose, communitybasierte Version von RHEL mit KVM-Unterstützung. https://www.centos.org/
Fedora Eine Linux-Distribution, die von Red Hat unterstützt wird und KVM als Standardvirtualisierungslösung verwendet. https://getfedora.org/
SUSE Linux Enterprise Server (SLES) Kommerzielle Linux-Distribution mit umfangreicher KVM-Unterstützung. https://www.suse.com/

Performance-Optimierung von KVM

Um die Performance von KVM zu verbessern, stehen verschiedene Optimierungsmöglichkeiten zur Verfügung. Durch das Anpassen des Schedulers der Gäste, das Anpassen des Cachings der Festplatte und die Aktivierung von Kernel SamePage Merging kann die Leistung von KVM optimiert werden. Jede dieser Maßnahmen trägt dazu bei, die Performance von KVM zu steigern und eine effiziente Nutzung der Ressourcen zu ermöglichen.

Anpassung des Schedulers der Gäste

Der Scheduler in KVM ermöglicht die Verteilung der Ressourcen auf die virtuellen Maschinen. Durch eine optimale Einstellung des Schedulers können Engpässe vermieden und die Leistung der virtuellen Maschinen verbessert werden. Es gibt verschiedene Parameter, die angepasst werden können, um den Scheduler optimal zu konfigurieren.

Anpassung des Cachings der Festplatte

Das Caching der Festplatte spielt eine wichtige Rolle für die Performance von KVM. Durch eine optimale Konfiguration des Cachings kann die Zugriffsgeschwindigkeit auf die Festplatte verbessert werden, was sich direkt auf die Leistung der virtuellen Maschinen auswirkt. Es ist ratsam, die Caching-Einstellungen den individuellen Anforderungen anzupassen.

Aktivierung von Kernel SamePage Merging

Kernel SamePage Merging (KSM) ist eine Funktion, die es ermöglicht, den Speicherplatz zu optimieren, indem identische Speicherseiten von verschiedenen virtuellen Maschinen gemeinsam genutzt werden. Dadurch kann der Speicherverbrauch verringert und die Performance verbessert werden. Die Aktivierung von KSM kann dazu beitragen, die Leistung von KVM zu optimieren.

Indem diese Optimierungen umgesetzt werden, können Unternehmen die Performance ihrer KVM-Umgebung verbessern und eine reibungslose und effiziente Virtualisierungserfahrung gewährleisten.

Zusammenfassung

KVM ist eine leistungsstarke und flexible Virtualisierungslösung für Linux auf x86-Hardware. Mit KVM können virtuelle Maschinen mit nahezu nativer Performance ausgeführt werden, was zu einer effizienten Ressourcennutzung führt. Die Virtualisierungstechnologie wird von vielen Linux-Distributionen unterstützt, was die Integration und Verwendung erleichtert.

Die Nutzung von KVM erfordert jedoch bestimmte Hardwarevoraussetzungen. Der Prozessor muss die Hardwarevirtualisierung direkt unterstützen, und es ist möglicherweise erforderlich, dies im BIOS des Systems zu aktivieren. Darüber hinaus ist es vorteilhaft, über Erfahrung mit der Verwaltung von Linux-Systemen zu verfügen, um KVM effektiv nutzen zu können.

Es stehen verschiedene Management-Tools und Clients zur Verfügung, um KVM-VMs zu verwalten. Beliebte Optionen sind virsh, eine Konsolenanwendung, und AQEMU, eine grafische Oberfläche für QEMU/KVM. Darüber hinaus bietet das Ubuntu-Wiki eine umfangreiche Sammlung von Tipps und Informationen zu KVM.

KVM unterstützt eine Vielzahl von Gastsystemen, einschließlich Linux, Windows, BSD-Derivate, Solaris und anderen. Dies macht KVM zu einer vielseitigen Lösung, die für verschiedene Anwendungsfälle eingesetzt werden kann, sei es für Serverkonsolidierung oder Entwicklungsumgebungen.