qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

QEMU, KVM, Xen, libvirt, Virtualisierung, Hardware-Emulation, Native Virtualization, Paravirtualisierung, Full Virtualization, Hypervisor, Single Kernel Image

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Grundlagen]])

<<<| ###| >>> | English


OS/2 und Microsoft Windows 98 laufen in QEMU unter Solaris 10 auf einer SPARC-Prozessor-Architektur.
OS/2 und Microsoft Windows 98 laufen in QEMU unter Solaris 10 auf einer SPARC-Prozessor-Architektur.
Das grafische Frontend AQEMU.
Das grafische Frontend AQEMU.
Das Android SDK verwendet QEMU.
Das Android SDK verwendet QEMU.
Microsoft Windows 7 als Gast-System unter QEMU.
Microsoft Windows 7 als Gast-System unter QEMU.
Das Native Linux KVM Tool mit einem Mini-Linux als Gast.]
Das Native Linux KVM Tool mit einem Mini-Linux als Gast.]
Nested Virtualization: Microsoft Hyper-V Server 2008 R2 als QEMU-Gast.
Nested Virtualization: Microsoft Hyper-V Server 2008 R2 als QEMU-Gast.
Der Virtual Machine Manager.
Der Virtual Machine Manager.
Der Qemu-Manager für Windows unter WineBottler unter Mac OS X.
Der Qemu-Manager für Windows unter WineBottler unter Mac OS X.
Warnke, Ritzauqemu-kvm & libvirt 4. Auflage 2010 ISBN: 978-3-8370-0876-0 276 Seiten,  27,27 EURBestellen
Warnke, Ritzau
qemu-kvm & libvirt
4. Auflage 2010
ISBN: 978-3-8370-0876-0
276 Seiten, 27,27 EUR
Bestellen

Inhaltsverzeichnis

[bearbeiten] Grundlagen

[bearbeiten] Virtualisierung

Das primäre Ziel der Virtualisierung ist die Abkopplung der Software von den zur Verfügung stehenden Hardware-Ressourcen, um diese optimal den einzelnen Systemen isoliert zuteilen zu können. Dabei geht es vor allem um die Kernkomponenten CPU, Hauptspeicher, Festplattenspeicher und Netzwerkanbindung. Virtualisierung erlaubt das Aufsetzen spezieller virtueller Maschinen, die jeweils nur die für ihre Aufgabe nötigen Dienste enthalten. So lassen sich zwar auf einer physikalischen Maschine sowohl ein Web-Server, ein Mail-Server und ein FTP-Server gleichzeitig betreiben, aber aus Sicherheitsgründen ist dies nicht empfehlenswert. Wird einer der drei Dienste kompromittiert, ist die komplette Maschine davon betroffen. Werden dagegen diese Dienste in jeweils einer virtuellen Maschine voneinander isoliert auf dem System betrieben, muss nur das betroffene virtuelle System erneuert werden. Ein weiterer Vorteil ist die Server-Konsolidierung. Den virtuellen Maschinen werden genau die für eine bestimmte Aufgabe benötigten Ressourcen zugewiesen. Ändern sich die Anforderungen, werden die Ressourcen angepasst, ohne die Hardware verändern zu müssen.

[bearbeiten] Hardware-Emulation

Bei der Hardware-Emulation wird die komplette Hardware eines Computers simuliert. Möglich wird damit die Installation und Ausführung von Betriebssystemen, die für andere Prozessoren konzipiert sind. Dazu wird unter anderem der komplette Befehlssatz des Gast-Prozessors mit Hilfe des Host-Prozessors nachgebildet. Die Emulation hat aber ihren Preis. Da jeder CPU-Befehl des Gast-Systems in entsprechende CPU-Befehle des Host-Systems übersetzt werden muss, ist die Ausführungsgeschwindigkeit der Programme gering. Ein weiterer Nachteil ist das Fehlen einer dynamischen Ressourcen-Verwaltung. Das heißt, während der Laufzeit können den Gast-Systemen die Ressourcen nicht variabel zugeteilt werden. Ohne Beschleuniger ist QEMU ein Hardware-Emulator.

[bearbeiten] Native Virtualization

Die Native Virtualization, auch Hardware-Virtualisierung genannt, stellt dem Gast-Betriebssystem Teilbereiche der physikalischen Hardware in Form von virtueller Hardware zur Verfügung. Damit werden nur Gäste bedient, die mit der CPU des Wirts kompatibel sind. Die privilegierten CPU-Befehle der Gast-Systeme werden dabei direkt vom Kernel des Host-Systems verwaltet. Dagegen werden Zugriffe auf Geräte (Grafikkarte, Netzwerkkarte etc.) über emulierte Standardkomponenten abgewickelt. Bekannte Vertreter dieser Virtualisierungsmethode sind VirtualBox, VMware-Player, VMware-Server, VMware-Workstation und Parallels Desktop/Workstation. Die Ausführungsgeschwindigkeit der Gast-Systeme ist bei dieser Methode hoch. QEMU unterstützt bis zur Version 0.11 den optionalen Beschleuniger KQEMU und damit die Native Virtualization.

[bearbeiten] Paravirtualisierung / Full Virtualization

Im Gegensatz zur Hardware-Emulation und der Native Virtualization bietet die Paravirtualisierung nur ähnliche Schnittstellen wie die physikalische Hardware an. Die kritischen CPU-Befehle, die direkt die Hardware ansprechen, müssen vorher im Gast-System umgeschrieben werden und brauchen daher nicht mehr abgefangen und durch aufwendige Prozeduren ersetzt werden. Ein schlankes Programm, der Hypervisor (Virtual Machine Monitor), übernimmt die Scheduling-Aufgaben für die Ressourcen der virtuellen Maschinen. Der Nachteil ist, dass die Gast-Betriebssysteme angepasst werden müssen. Nur Prozessoren mit Hardware-Virtualisierungstechniken (Intels Vanderpool, AMDs Pacifica) ermöglichen das Ausführen von unmodifizierten Gast-Systemen. Man spricht dann von der Full Virtualization oder der hardware-unterstützten Virtualisierung. Letztere ist nicht mit der Hardware-Emulation zu verwechseln. Ein Vorteil der Paravirtualisierung und der Full Virtualization ist die wesentlich höhere Ausführungsgeschwindigkeit. Ein weiterer Vorteil ist die Live-Migration, bei der virtuelle Maschinen im laufenden Betrieb von einem Host-System auf ein anderes übertragen werden. Die Gast-Systeme sind durchgehend verfügbar, auch wenn einer der Hosts für Wartungsarbeiten heruntergefahren werden muss. Es gibt zwei Hypervisor-Arten:

Typ-1-Hypervisor: Der Hypervisor läuft direkt auf der Hardware und stellt den Gast-Systemen die Ressourcen zur Verfügung. Typische Beispiele sind Xen (Open Source), VMware ESX(i) und Microsoft Hyper-V. Bei Xen liegt über dem Hypervisor eine privilegierte virtuelle Maschine zur Steuerung.

Typ-2-Hypervisor: Der Hypervisor läuft auf einem Betriebssystem, das die I/O-Ressourcen bereitstellt. Typisches Beispiel ist die Kernel-based Virtual Machine (KVM). KVM unterstützt die Full Virtualization. Weiterhin unterstützen auch VirtualBox, VMware Player, VMware Workstation und VMware Server die Full Virtualization.

[bearbeiten] Virtualisierung auf Betriebssystemebene

Bei der Virtualisierung auf Betriebssystemebene teilen sich das Host- und die Gast-Systeme einen Kernel (Single Kernel Image – SKI). Hier wird das Betriebssystem virtualisiert und nicht die Hardware. Das Host-Betriebssystem erzeugt weitere Instanzen seiner selbst. Aus diesem Grund werden nur Gast-Systeme mit dem gleichen Kernel wie das Host-System unterstützt. Da der Overhead gering ist, ist die Ausführungsgeschwindigkeit hoch. Typische Vertreter dieser Kategorie sind die Solaris-Zones, BSD-Jails, Linux Containers (LXC), OpenVZ und Linux-VServer. Weder QEMU noch KVM sind dieser Art der Virtualisierung zuzuordnen.

[bearbeiten] Emulation

Im Zusammenhang mit Virtualisierung wird auch oft der Begriff Emulation genannt. Als Emulation wird in der Computertechnik das funktionelle Nachbilden eines Systems durch ein anderes bezeichnet. Das nachzubildende System erhält die gleichen Daten, führt die gleichen Programme aus und erzielt die gleichen Ergebnisse wie das originale System. Ein Emulator ist also ein System, das ein anderes nachahmt. Wird das emulierte System dabei nicht isoliert betrieben, handelt es sich nicht um eine Virtualisierung.

[bearbeiten] Hardware-Emulation

Im Abschnitt Virtualisierung wurde bereits die Hardware-Emulation beschrieben. Da die emulierten Computer vom jeweiligen Host-System isoliert sind, ist diese Art der Emulation eine Virtualisierung. Die Hardware-Emulation ist nicht mit der hardware-unterstützten Virtualisierung zu verwechseln. QEMU ohne Beschleuniger ist, wie beschrieben, ein Hardware-Emulator. KVM kann nicht der Hardware-Emulation zugeordnet werden.

[bearbeiten] API-Emulation

Bei dieser Art der Emulation werden die Schnittstellen (Application Programming Interface – API) und Bibliotheken eines anderen Betriebssystems nachgebildet. Damit lassen sich Programme des anderen Betriebssystems ausführen. Diese Art der Emulation isoliert nicht unbedingt die ausgeführten Programme. Sie laufen samt Emulationsbibliotheken direkt im jeweiligen Host-System. Es handelt sich dabei nicht um eine Virtualisierung. Ein typisches Beispiel dafür ist Cygwin. Cygwin stellt unter Windows die API-Funktionen von Linux zur Verfügung. Unter Cygwin hat man vollen Zugriff auf das Host-System. Cygwin ist daher keine Virtualisierungslösung. Der vielseitige QEMU unterstützt unter Linux, BSD und Mac OS X/Darwin auch eine OS-API-Emulation. Die Userspace-Emulation ermöglicht das Ausführen von Programmen (Binaries), die für andere Bibliotheken kompiliert wurden.

Die Userspace-Emulation von QEMU wird von der Software Darwine unter der PowerPC-Architektur genutzt. Darwine, jetzt WineBottler, ist eine Portierung von Wine (Wine Is Not an Emulator, siehe http://qemu-buch.de/d/Anhang/_Nützliche_Tools/_Wine) auf Mac OS X. Ziel ist die Ausführung von Windows-Anwendungen unter Mac OS X.

[bearbeiten] Der vielseitige QEMU

Websites: http://wiki.qemu.org

Das kostenlose, quell-offene QEMU emuliert die komplette Hardware eines Computers mit CPU (Hardware-Emulation). QEMU ist nicht, wie zum Beispiel VMware, auf die x86-Architektur beschränkt. QEMU erreicht durch die Dynamic Translation eine gute Geschwindigkeit. Bis QEMU 0.11.x wurde der optionale Beschleuniger KQEMU unterstützt (Native Virtualization). Die Entwicklung von KQEMU wurde eingestellt. Ab QEMU 0.12 setzt man auf die Vorteile der Kernel-based Virtual Machine (siehe unten).

QEMU läuft auf vielen Betriebssystemen (Linux, BSD, Mac OS X, Microsoft Windows, eComstation, DOS) und Prozessor-Architekturen und lässt sich einfach installieren. Für die Installation von QEMU ohne Beschleuniger sind keine Administrator-Rechte erforderlich. So kann auch eine virtuelle Maschine inklusive QEMU auf eine DVD gebrannt und auf einem anderen Rechner gestartet werden.

QEMU erlaubt es, Zustände der virtuellen Maschine mehrmalig zu speichern. Mit diesen VM-Snapshots lassen sich Änderungen am System rückgängig machen. QEMU unterstützt die Live-Migration, das Debuggen des Systems und das Booten von älteren Disk-Formaten. Es lassen sich Hardwarefehler emulieren. Weiterhin ist es möglich, die System-Zeit des Gast-Systems beliebig festzulegen. Live-CD/DVDs- und Boot-Disketten werden mit QEMU gestartet, ohne den Computer neu zu starten.

Zum QEMU-Paket gehört auch das leistungsfähige Tool qemu-img. Es dient zum Anlegen, Konvertieren und Verschlüsseln von Image-Dateien (virtuellen Festplatten) in unterschiedlichen Formaten. QEMU kann virtuelle Maschinen von Image-Dateien anderer Virtualisierungssoftware direkt booten. Mit QEMU lassen sich virtuelle Maschinen für die Kernel-based Virtual Machine, für Xen (HVM) und für andere Virtualisierungssoftware anlegen. Dies ist auch auf älterer Hardware möglich. Weiterhin gehört zum QEMU-Paket das Tool qemu-nbd. Es dient zum Exportieren von Image-Dateien über das Netzwerk unter Verwendung des NDB-Protokolls (Network Block Device).

Unter Linux, BSD und Mac OS X unterstützt QEMU auch die Userspace-Emulation. Diese API-Emulation ermöglicht es, dass ausführbare Programme, die für andere dynamische Bibliotheken kompiliert wurden, im Userspace betrieben werden. Dabei werden die Prozessoren x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64, ColdFire(m68k), ETRAX CRIS und MicroBlaze unterstützt.

QEMU wird unter Linux als Open Source-Software entwickelt. Es gibt Portierungen für viele Betriebssysteme. Viele andere Virtualisierungslösungen beziehungsweise Emulatoren (KVM, Sun xVM VirtualBox, Xen, FAUmachine, Android SDK, Win4BSD, Win4Solaris, Win4Lin und Darwine) nutzen Source-Codes von QEMU. Im Gegenzug wird auch Quell-Code dieser Produkte wieder in QEMU integriert. Dank der Offenheit des Source-Codes und der Konfiguration mit Startoptionen ist die Entwicklung von Zusatztools unproblematisch.

[bearbeiten] Die Kernel-based Virtual Machine im Aufwind

Websites:

Die Kernel-based Virtual Machine (KVM) gilt als Senkrechtstarter unter den Virtualisierungslösungen. Ein Grund dafür ist, dass KVM konsequent auf die Vorteile der Prozessoren mit Hardware-Virtualisierungstechniken (AMDs Pacifica, Intels Vanderpool) setzt. Die Kernel-based Virtual Machine verwendet also die Full Virtualization (Typ-2-Hypervisor). Der Einsatz von paravirtualisierten Gerätetreibern für Gast-Systeme ist möglich. Der Vorteil dieser Treiber ist der geringere Overhead und die höhere Performance.

KVM unterstützt weitere CPU-Erweiterungen, wie zum Beispiel Page Tables (Nested Page Tables - AMD, Extended Paging Tables - Intel) und IOMMU (I/O Memory Mapping Unit). Page Tables dienen der Übersetzung von Gast- in Host-Adressen. Dadurch wird der Hypervisor von der Aufgabe entlastet jede Adressanfrage eines Gast-Systems über eine Shadow Page Table zu ermitteln.

Für KVM wurde das Kernel Samepage Merging (KSM) in den Linux-Kernel ab Version 2.6.32 integriert. KSM legt identische Speicherbereiche zusammen. Dadurch wird mehr Arbeitsspeicher den virtuellen Maschinen zur Verfügung gestellt als physikalischer Speicher zur Verfügung steht.

KVM und diese CPU-Erweiterungen ermöglichen die Nested Virtualization. Das heißt, in einer virtuellen Umgebung laufen wiederum Virtualisierungslösungen. Eine Kernel-based Virtual Machine kann also unter einer Kernel-based Virtual Machine gestartet werden und virtuelle Maschinen beinhalten.

Bestandteile von KVM sind die Kernel-Module kvm.ko, die hardwarespezifischen Module kvm-intel.ko oder kvm-amd.ko und die Gerätedatei /dev/kvm. Nach dem Laden der Module arbeitet der Linux-Kernel selbst als Hypervisor. Die KVM-Kernel-Module verhindern das Ausführen anderer Virtualisierungslösungen, wie zum Beispiel Sun xVM VirtualBox und VMware-Server, -Workstation und -Player. Ein Vorteil gegenüber Xen ist die Verwendung nur eines privilegierten Systems. Xen benötigt zwei privilegierte Systeme: Den Hypervisor und das spezielle Gast-System Domain 0. Zum einen ist dadurch die Installation von KVM einfacher als bei Xen, zum anderen ist ein privilegiertes System besser abzusichern als zwei.

KVM stellt keine virtuelle Hardware zur Verfügung. Dies übernimmt meist QEMU. Viele Linux-Distributionen bieten QEMU und KVM als ein Paket (qemu-kvm) an. Im Gegensatz zu QEMU unterstützt KVM nur Gast-Systeme mit x86-Prozessoren. Ab QEMU 0.15 werden zusätzlich Gast-Systeme mit den Architekturen PowerPC und S390 virtualisiert.

Als schlanke Alternative zu QEMU wird das Native Linux KVM Tool entwickelt. Es emuliert die wichtigsten Hardware-Komponenten (para-virtualized device model). Ziel ist eine möglichst einfache Konfiguration. Das Native Linux KVM Tool soll in den Quellen des Linux-Kernels 3.1 aufgenommen werden.

KVM ist Open Source und läuft unter Linux ab Kernel-Version 2.6.20. Entwickelt wird KVM von dem israelischen Unternehmen Qumranet. Qumranet wurde inzwischen von Red Hat gekauft, die KVM zum Schwerpunkt ihrer Virtualisierungsstrategie erklärten. Basierend auf KVM hat Red Hat die komplette Virtualisierungslösung Red Hat Enterprise Virtualization for Server entwickelt. Führende IT-Firmen (HP, IBM, Intel, Red Hat, Suse, Eucalyptus Systems, BMC Software) haben die Open Virtualization Alliance (http://www.openvirtualizationalliance.org) gegründet. Ziel ist die in Linux integrierte Kernel-based Virtual Machine zu unterstützen und die Kosten für die Virtualisierung zu verringern. Das Haupteinsatzgebiet der Kernel-based Virtual Machine ist die Server-Konsolidierung (Data Center Virtualization).

[bearbeiten] Der bewährte Hypervisor Xen

Website: http://www.xen.org

Das Einsatzziel von Xen ist, wie bei der Kernel-based Virtual Machine, die Server-Konsolidierung. Die Software Xen ist ein Hypervisor, der an der Universität Cambridge entstand und von der Firma Citrix Systems, Inc. weiter entwickelt wird. Xen zieht als abstrahierende Schicht zwischen der Hardware und den Gast-Systemen ein und wacht über die Verteilung der Ressourcen (CPU-Zeit, I/O-Zyklen und so weiter). Eine priviligierte virtuelle Maschine (Dom0) dient zum Steuern der unpriviligierten virtuellen Maschinen (DomU) und Ressourcen.

Die Unterstützung von Xen wurde in den Linux-Kernel ab Version 3.0 integriert. Vorher war man auf speziell angepasste Linux-Kernel angewiesen. Gängige Linux-Distributionen bieten Xen-Support. Neben Linux wird Xen auch von NetBSD und Solaris unterstützt. Xen läuft unter x86-, x86_64-, IA64-, ARM- und anderen Prozessor-Architekturen. Wird von den x86-Prozessoren die Hardware-Virtualisierungstechniken unterstützt (Intels Vanderpool, AMDs Pacifica), kann der Xen Virtual Machine Monitor im HVM-Modus (Hardware Virtual Machine) laufen. Das Xen-Projekt nutzt für den HVM-Modus Source-Code vom QEMU-Projekt zur Emulation gängiger PC-Komponenten (Device Model). Ab QEMU 0.15 wurde die Xen-Unterstützung integriert. Ein speziell für Xen angepasste QEMU-Version ist nicht mehr notwendig. Xen beherrscht im Gegensatz zu KVM auch die Paravirtualisierung. Dabei wird QEMU nicht verwendet.

[bearbeiten] Die Bibliothek libvirt

Website: http://libvirt.org

Während viele Virtualisierungslösungen inzwischen kostenlos sind, sind entsprechende Management-Tools meist teuer. Weiterhin sind in einem heterogenen Data Center oft mehrere Managementtools für unterschiedliche Virtualisierungslösungen notwendig. Zur Lösung dieser Probleme wird die Bibliothek libvirt entwickelt. libvirt ist eine Schicht zwischen Virtualisierungssoftware und Management-Tools. Aufbauend auf dieser Schicht verwalten entsprechende Management-Tools (Virtual Machine Manager, virsh) die unterschiedlichen Virtualisierungslösungen. Unterstützt werden bereits QEMU, KVM, Xen, VirtualBox, VMware ESX, LXC Linux Container System, OpenVZ Linux Container System, und User Mode Linux. libvirt wird als Open Source veröffentlicht. Für verschiedene Linux-Distributionen stehen entsprechende Software-Pakete zur Verfügung. Die Bibliothek lässt sich mit Cygwin und Mingw auch unter Microsoft Windows compilieren.

<<<| ###| >>> http://qemu-buch.de

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Grundlagen

Diese Seite wurde bisher 134.055 mal abgerufen. Diese Seite wurde zuletzt am 17. September 2011 um 10:34 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …