ubuntuusers.de

ubuntuusers.deWikiVirtualisierung

Virtualisierung

Einleitung

Um auch Einsteigern einen Einblick in das Themengebiet Virtualisierung zu ermöglichen, werden zuerst ein paar übliche Vokabeln besprochen. Dabei muss man anmerken, dass die Begriffe oft mehrdeutig gebraucht werden und eine Abgrenzung je nach Quelle unterschiedlich gezogen wird. Es werden dann Vorteile und typische Anwendungsszenarien erläutert und das Thema kritisch betrachtet.

Im Zusammenhang mit Ubuntu gibt es zwei Möglichkeiten: Ubuntu als Wirtsystem oder Ubuntu als Gastsystem (oder beides). Welche Programme sich dafür eignen, wird nach der Einleitung erklärt.

Begriffe

Virtualisierung

Virtualisierung kann man zunächst allgemein beschreiben als Verteilung der Ressourcen eines physisch vorhandenen Rechners in mehrere isolierte Umgebungen. Es gibt verschiedene Arten der Virtualisierung, die jeweils verschiedene Vor- und Nachteile haben. Diese Arten sind Emulation, Paravirtualisierung und Virtualisierung auf Betriebssystemebene. Im Folgenden meint Virtualisierung die Virtualisierung von Betriebssystemumgebungen. Es existieren auch reine Anwendungsvirtualisierungen, die hier allerdings nicht berücksichtigt werden.

Wirtsystem

Das Wirtsystem (engl. "host system"), im Folgenden auch Host oder Wirt genannt, beherbergt eine Virtualisierungslösung und stellt Container und Funktionen zur Verfügung, in bzw. mit denen Gastsysteme laufen können.

Gastsystem

Das Gastsystem ("guest system") läuft abgeschottet in einer virtuellen Maschine. Befehle, die im Gastsystem ausgeführt werden, werden durch eine Virtualisierungslösung an die Hardware des Wirts weitergereicht. Das Ergebnis wird dann umgekehrt zurück an den Gast übermittelt. Von innen "fühlt" sich das Gastsystem wie ein normales physisches System an.

Als grober Richtwert für die minimal benötigten zugesicherten Ressourcen, inkl. einem kleinen Teil freier Festplattenkapazität für Fehlerkorrekturen ("patches") und Aktualisierungen ("updates"), für Windows-Gastsysteme gilt folgende Tabelle. Hat man genügend Ressourcen, kann man aber auch das doppelte der jeweiligen Werte einstellen, um so die Geschwindigkeit des Gastsystems eventuell verbessern zu können:

minimale virtuelle Ressourcen für Gastsysteme
Betriebssystem HDD (min) RAM Grafik
Windows XP / Windows Server 2000 10 GB 512 MB 16 / 8 MB
Windows Vista / Windows Server 2003 15 GB 1024 MB 32 / 16 MB
Windows 7 (32/64Bit) 16/20 GB 1024/2048 MB :?:

Für Linux-Systeme kann die Anforderung je nach Distribution stark schwanken, am besten schaut man in der Dokumentation/Wiki/… der gewünschten Distribution nach.

Container

Mit einem Container, einer virtuellen Festplatte oder dem englischen Wort "virtual disk image" (VDI) ist der Bereich der Festplatte des Wirts gemeint, der dem Gastsystem als Festplatte zur Verfügung gestellt wird. Ein dynamischer Container wächst (nicht schrumpft!) mit dem Platzbedarf des Gastes, ein statischer Container hat eine immer gleiche, festgelegte Größe.

Emulation

Bei einer Emulation wird dem Gastsystem die komplette Architektur, insbesondere der Prozessor, nachgebildet. Emulation ist damit vielseitig, da Gastsysteme unabhängig von der Architektur des Wirts ausgeführt werden können. Emulation ist aber dadurch auch aufwendig und weniger leistungsstark. Mitunter wird Emulation als das Gegenteil von Virtualisierung definiert und dieser nicht untergeordnet. Die Abgrenzung liegt dabei in der Nutzung nativer, d.h. systemeigener, Methoden der Architektur bei Virtualisierung und Nachbildung systemfremder Methoden bei Emulation. Meistens sind die sogenannten Emulatoren Anwendungsvirtualisierer, d.h. sie stellen lediglich eine Laufzeitumgebung für Programme bereit, nicht jedoch für ganze Betriebssysteme. Ausnahmen wie QEMU oder Bochs bestätigen die Regel.

Paravirtualisierung

Bei Paravirtualisierung teilen sich virtuelle Maschinen über eine abstrakte Verwaltungsschicht, dem Hypervisor oder Virtual-Machine-Monitor, die gemeinsamen Ressourcen des Wirts. Paravirtualisierung läuft hardwarenah, benötigt kein umfangreiches Wirtsystem und ist insgesamt performanter. Das Gastsystem muss aber entsprechend angepasst werden. Unter den Hypervisoren gibt es auch sogenannte "bare-metal-hypervisor", welche ganz auf ein extra Betriebssystem im Unterbau verzichten.

Virtualisierung auf Betriebssystemebene

Virtualisierung auf Betriebssystemebene ("OS-level-virtualization") ist eine Technik, bei der mehrere voneinander isolierte Umgebungen auf einem einzigen Kernel gestartet werden können. Es hat die bestmögliche Performance und effiziente Ressourcenverteilung. Es ist damit aber nicht möglich, unterschiedliche Kernel parallel laufen zu lassen, was die Flexibilität zwischen Wirt und Gast stark einschränkt.

Virtuelle Maschine

Als virtuelle Maschine, kurz VM, bezeichnet man in der Regel die Gesamtheit aus virtueller Hardware und dem darauf befindlichen Gastsystem. Auch im Zusammenhang mit Java oder .Net spricht man von virtuellen Maschinen. Es handelt sich dabei um Laufzeitumgebungen, die das Ausführen plattformunabhängiger Software ermöglichen, und demzufolge um Anwendungsvirtualisierung.

Virtualisierungslösung

Als Virtualisierungslösung oder Virtualisierungstechnik sollte man die Gesamtheit der Verfahren sehen, die benötigt werden, um eine virtuelle Maschine zu ermöglichen. Man kann schwer klare Grenzen zwischen den verschiedenen Formen der Virtualisierung und Emulation ziehen, meist handelt es sich um eine Kombination dieser Elemente, sowie um eine Kombination von Hard- und Software. Moderne Prozessoren besitzen entsprechende Implementierungen, beispielsweise AMD-V oder Intel_VT. VMware Server beispielsweise emuliert die Netzwerkkarte der VM, virtualisiert aber den Prozessor, d.h. nutzt die nativen Fähigkeiten, wie AMD-V und Intel VT. QEMU beherrscht sowohl reine Emulation als auch Virtualisierung bei x86-Architekturen.

In den nächsten Abschnitten werden mehrere Virtualisierungslösungen vorgestellt. Es gibt aber noch weitaus mehr. In dieser Übersicht werden sehr viele Produkte in den wichtigsten Aspekten miteinander verglichen.

Typische Anwendungen

Virtuelle Maschinen haben vielseitige Einsatzmöglichkeiten:

  • Als Testumgebungen, um andere Betriebssysteme auszuprobieren oder gravierende Änderungen ohne Konsequenzen für das Produktivsystem testen zu können.

  • Sehr praktisch ist die Möglichkeit, eine Momentaufnahme (Snapshot) des Gastsystems als Backup zu erstellen. Für den Fall, dass etwas schiefgeht, kann man den vorherigen Zustand sehr leicht wiederherstellen.

  • Softwareentwickler haben auf ihren Rechnern ganze Entwicklungsumgebungen installiert. Möchte man austesten, ob die eben kompilierte Software auch ohne Entwicklungsbibliotheken funktioniert, braucht man ein "sauberes" System. Dies kann schnell in einer virtuellen Maschine geschehen.

  • Mehrere virtuelle Maschinen nutzen die Hardware des Wirts besser aus, als es die gleiche Anzahl echter Maschinen tun könnte. Dadurch arbeiten Umgebungen mit virtuellen Maschinen ökonomischer (Stichwort Stromsparen).

  • Virtuelle Maschinen lassen sich leicht vermehren, wenn man eine Umgebung mit vielen PCs simulieren will.

  • Laufen bestimmte Programme nicht unter dem realen Betriebssystem, dann kann man mit einer virtuellen Maschine eine Umgebung realisieren, die man parallel starten kann und in der das Programm funktioniert.

  • Man kann ein Wirtsystem auf einem leistungsstarken Rechner anlegen und mit einem langsamen Rechner die virtuellen Maschinen des starken Rechners aus der Ferne nutzen. Das Gastsystem nutzt natürlich die Hardware des schnelleren Wirts.

Kritik an Virtualisierung

Virtualisierung ist auch ein häufig genutztes Werbe-Wort. Wer sucht {de}, findet genügend Kritik an Virtualisierung. Ein paar Beispiele finden sich hier {de}, hier {de} oder hier {de}. Dafür, dass man virtuellen Maschinen verschiedene Probleme lösen kann, werden neue geschaffen. Einige Nachteile sind:

  • Die professionelle Verwaltung mehrerer VM bedeutet mehr Aufwand

  • Die Lizenzsituation ist keine klar durchschaubare Angelegenheit. Rein rechtlich gelten VM als eigenständige Rechner. Soll ein proprietäres Gastsystem installiert werden, bedarf es daher möglicherweise einer zusätzlichen Lizenz. (Natürlich sind derartige Fragen bei Installation einer freien Linuxvariante unerheblich.)

  • Will man vorhandene Systeme besser auslasten oder Last zwischen realen Systemen besser verteilen, so ist die Frage, ob Virtualisierung das Problem lösen kann.

  • Weil das Betriebssystem des Gastes unter der virtuellen Maschine läuft, wird diese etwas langsamer arbeiten als ein real installiertes System. Es kann auch sein, dass sich das virtuelle System in der Bedienung träge anfühlt.

Welche Virtualisierungslösung für wen?

Im nächsten Abschnitt werden verschiedene Virtualisierungslösungen vorgestellt. Diese haben mitunter verschiedene Zielgruppen. Die Frage, welches man nehmen sollte, kann aber geklärt werden. Man sollte unterscheiden zwischen dem Einsatz im Desktopbereich und Serverbereich.

Die meisten Einsteiger und Privatnutzer im Desktopbereich, die bequem einfach mal ein anderes Betriebssystem ausprobieren wollen oder Windowsprogramme in einer Windowsumgebung unter Linux ausführen wollen, dabei aber vor Änderungen am laufenden System zurückschrecken und Wert auf grafische Oberflächen legen, werden sich mit den kostenlosen Privatnutzerversionen von VirtualBox und VMware Server anfreunden können. Die Open-Source-Edition von VirtualBox hat für viele einen entscheidenden Nachteil: Es wird nur USB 1.1 in der OSE-Version unterstützt, funktioniert ansonsten aber wie die unfreie Version.

Will man lediglich existierende VM ausprobieren, genügt auch der VMware Player. Kostenlose Testversionen und kostenpflichtige Vollversionen gibt es auch von Parallels und VMware. Sollen möglichst viele Architekturen als Gäste verfügbar sein, sollte man sich QEMU anschauen.

Für den professionellen Einsatz im Desktopbereich gibt es VirtualBox, VMware und Parallels in kostenpflichtigen Versionen. Der VMware Server und Parallels Server sind als Server/Client-Anwendung ausgelegt, d.h. es werden Desktopsysteme auf einem Serversystem ausgeführt, wodurch ein leistungsstarker Wirt es leistungsschwächeren Netzwerkteilnehmern ermöglicht, die Gastsysteme fernzubedienen.

Im Serverbereich, wo Serversysteme auf Serversystemen virtualisiert werden, stehen Leistung und Effizienz im Vordergrund. Mit Ubuntu als Basis kommen dafür KVM und Xen in Frage.

Ubuntu Linux als Wirtsystem

Hat man auf seinem Rechner bereits Ubuntu Linux installiert und möchte Virtualisierung nutzen oder kennenlernen, dann ist der folgende Abschnitt interessant. Es werden unterschiedliche Virtualisierungslösungen vorgestellt, um virtuelle Maschinen in Ubuntu zu betreiben. Die Liste erhebt keinen Anspruch auf Vollständigkeit, enthält aber die bekanntesten Lösungen.

LXC

LXC steht für "Linux Container" und ist eine Virtualisierungslösung, die direkt im Linux-Kernel implementiert ist. LXC kann sowohl einzelne Prozesse als auch ein komplettes Betriebssystem virtualisieren. Weitere Informationen findet man in Artikel LXC.

virt-manager

Der virt-manager ist eine einheitliche Verwaltungsoberfläche für verschiedene virtuelle Maschinen. (mehr)

Bochs

./Bochs.png Bochs {en} ist auf hohe Portabilität ausgelegt, d.h. es soll auf vielen Wirtsystemen arbeiten und kann x86- (32bit) und AMD64- (64bit) Architekturen emulieren. Es werden DOS, Windows, Linux und *BSD in Gastsystemen ermöglicht. Die Leistung der Gastsysteme im Vergleich zum Wirt soll aber eher mäßig sein.

KVM

Die Kernel-based Virtual Machine, kurz KVM, ist eine Virtualisierungslösung für Linux, die Gebrauch von der Virtualisierungstechnik aktueller x86-Prozessoren von Intel und AMD macht. Sie wurde im Oktober 2006 der Öffentlichkeit vorgestellt. Seit der Version 2.6.20 des Linux-Kernels ist das Kernelmodul von KVM bereits in Linux enthalten. Entwickelt wird KVM von dem US-amerikanischen Unternehmen Qumranet {en}. Das Unternehmen wurde im September 2008 vom amerikanischen Linux-Distributor Red Hat {en} übernommen. Seit Ubuntu 8.04 ist KVM die offiziell unterstützte Virtualisierung-Lösung von Ubuntu. Es unterstützt zahlreiche Gastsysteme {en} .

TestDrive

TestDrive ist eine sehr einfache Methode, mittels KVM die neusten Ubuntu-Versionen, aber auch andere Distributionen, als ISO-Abbild in einer virtualisierten Umgebung zu starten. (TestDrive)

Parallels

Das Unternehmen Parallels {de} bietet kostenpflichtige Virtualisierungslösungen auch für Linux an.

Parallels Virtuozzo Containers

Parallels Virtuozzo Containers {de} ist die kommerzielle Weiterentwicklung von OpenVZ und damit ein Virtualisierer auf Betriebssystemebene. Eine kostenfreie Testversion kann gegen Registrierung für Windows und Linux jeweils für 32bit- und 64bit-Architektur heruntergeladen werden.

Parallels Workstation

Die Parallels Workstation {de} ist laut Aussage des Herstellers ein benutzerfreundliches Produkt für den Desktopbereich. Als Wirtsysteme sollen verschiedene Windowsversionen und Linuxdistributionen inklusive Ubuntu unterstützt werden. Als Gastsysteme können daneben noch weitere Architekturen in Frage kommen, hier eine Übersicht. Eine kostenlose 15-Tage-Testversion ist im Partner-Repository enthalten und kann über die Paketverwaltung installiert werden. Alternativ kann man gegen eine Registrierung eine kostenlose Testversion als DEB-Paket bei Parallels herunterladen.

Parallels Server

Für den Serverbereich sieht Parallels in Zukunft Parallels Server {de} vor. Noch ist das Produkt nicht fertig und kann deshalb hier als kostenlose Betaversion {de} heruntergeladen werden. Dazu gibt es auch eine Verwaltungskonsole für Linux, Mac OS X und Windows.

QEMU

QEMU {en} ist ein quelloffener Emulator und Virtualisierer. Es ist möglich, Maschinen zu virtualisieren, wenn sowohl Wirt- als auch Gastsystem auf der x86-Architektur basieren. Mit dem QEMU Beschleuniger, genannt KQEMU kann der virtualisierte Rechner eine gute Performance erreichen. Außerdem nutzt auch KVM QEMU. QEMU kann darüberhinaus viele Architekturen, z.B. PowerPC, emulieren. Dies ist allerdings langsamer als die Virtualisierung, da Befehle im Gastsystem nicht einfach an den Wirt durchgereicht werden können. Diese Seite {en} gibt Auskunft, welche Architekturen emuliert werden können und diese Übersicht {en} zeigt, welche Wirt- und Gastsysteme erfolgreich genutzt werden können. Außer unter Linux ist QEMU auch für andere Wirtsysteme {en} wie Windows, Mac OS X oder OpenSolaris erhältlich.

  • QEMU - Wikiartikel

  • AQEMU - Grafische Oberfläche für QEMU

VirtualBox

./VirtualBox.png VirtualBox {en} ist eine von der Firma innotek {en} (von Sun Microsystems aufgekauft, mittlerweile zu Oracle gehörend) entwickelte Virtualisierungslösung. Es werden Windows, Mac OS X und Linux (ab Kernel 2.4) als Wirtsysteme unterstützt und als Gastsysteme neben diesen zusätzlich noch OS/2, DOS-basierte Betriebssysteme, Linux (ab Kernel 2.2), L4, Solaris, NetWare sowie diverse BSD-Derivate. Seit der Version 2.2 beherrscht VirtualBox nun sogar 3D-Beschleunigung für die virtuelle Maschinen mit Windows, Linux und Solaris mit erstaunlich guter Performance.

Seit dem 15. Januar 2007 steht VirtualBox in zwei Versionen zur Verfügung.

VirtualBox PUEL

Die proprietäre Variante heißt VirtualBox Personal Use and Evaluation License, kurz PUEL und darf unter bestimmten Bedingungen {en}, darunter Privatgebrauch und akademische Nutzung, kostenlos verwendet werden.

VirtualBox OSE

Die VirtualBox Open-Source-Edition wurde unter der GPL v2 veröffentlicht. Merkmale, die der Open-Source-Edition (noch) fehlen:

  • Remote Display Protocol (RDP) Server - um sich per RDP mit dem Desktop der VM zu verbinden

  • USB über RDP - um USB-Geräte über RDP an die VM zu tunneln

  • iSCSI Unterstützung - um iSCSI Geräte auch dann als virtuelle Festplatten zu benutzen, wenn das Gastsystem kein iSCSI unterstützt

  • Serial ATA Unterstützung - um statt eines virtuellen IDE Controllers einen virtuellen SATA Controller anzulegen, der bei geringerer CPU-Last schneller arbeiten würde und mehr virtuelle Festplatten zuließe

innotek hat angekündigt, dass die Funktionen der proprietären Version schrittweise in die Open-Source-Edition einfließen sollen. Mehr zu den Unterschieden der Versionen findet man bei den Editionshinweisen {en} des Projekts.

VMware

./VMware.png Virtualisierungsspezialist VMware {de} stellt mehrere Varianten seiner Software zur Verfügung.

VMware Server

VMware Server {de} ist eine closed-source Variante (vergleichbar mit der Workstation), die nach einer Registrierung kostenlos genutzt werden darf. VMware Server ist als Client/Server Anwendung konzipiert. Man kann also VMware Server auf einem leistungsfähigen Rechner installieren und über eine Bedienoberfläche von einem Client-Rechner auf die virtuellen Maschinen zugreifen. Die ältere Version VMware Server {en} arbeitet mit der Bedienoberfläche VMware Server Console, die neuere Variante VMware Server 2 {en} setzt dagegen auf das Webinterface Vix.

VMware vSphere Hypervisor

vSphere Hypervisor {de}, ehemals ESX(i) ist der kostenlose Einstieg in die serverbasierende Virtualisierung ganzer Umgebungen. Ein auf Linux basierender Kernel arbeitet mit einer Mini HAL zusammen und stellt den virtuellen Maschinen die Ressourcen zur Verfügung. Der Hypervisor ist die Grundlage für hochverfügbare Umgebungen, welche das Verschieben von virtuellen Rechnern zur Laufzeit unterstützen. Bedient wird vSphere, durchaus komfortabel, über den mitgelieferten vSphere Client (aktuell leider nur für Windows).

VMware Workstation

Die VMware Workstation {de} ist eine proprietäre Variante und richtet sich an professionelle Nutzer im IT-Bereich.

VMware Player

Der VMware Player {de} ist nach einer Registrierung für den nicht-kommerziellen persönlichen Gebrauch kostenlos. Mit dem Player kann man existierende virtuelle Maschinen benutzen oder eigene Maschinen erstellen. Bei VMware {en} kann man dafür zahlreiche fertige VM herunterladen. In den früheren Versionen des VMware Players war es nicht möglich, Änderungen an einer virtuellen Maschine vorzunehmen oder eine neue VM zu erstellen. Dies ist nun in der aktuellen Version möglich.

Neben diesen vier Exemplaren gibt es noch weitere VMware Produkte {de} die sich nach Art der Verwendung unterscheiden, hier aber keine Rolle spielen sollen.

Xen

Xen ist ein Paravirtualisierer, arbeitet hardwarenah und damit sehr effizient. Weil auch die Kernel der Gastsysteme speziell angepasst werden müssen, gibt es derzeit noch keine so große Auswahl an Gastarchitekturen wie bei Emulatoren, allerdings kann man die meisten Linuxdistributionen und mittlerweile auch Windows als Gäste einrichten. Xen, das ursprünglich an der Cambridge Universität entstand, wird mittlerweile von starken Unternehmen unterstützt, darunter IBM, Microsoft, Intel, AMD, HP, Novell und SUN, die Xen zum Industriestandard für Virtualisierung machen wollen.

Ubuntu Linux als Gastsystem

Möchte man Ubuntu unter einem anderen Betriebssystem ausprobieren, sollte man sich die folgenden Programme ansehen.

Unter Windows

Allgemein

Mit Windowsversionen der bereits vorgestellten Programme kann Ubuntu auch unter Windows installiert werden:

Microsoft

Auch Microsoft {de} bietet Virtualisierungslösungen an.

Microsoft Hyper-V

Hyper-V {en} nennt sich Microsofts Versuch das Feld der Servervirtualisierung zumindest nicht ganz der Konkurrenz zu überlassen. Microsofts Hyper-V Server 2008 ist ein Paravirtualisierer. Auch wenn offiziell neben den meisten Windowsversionen sonst nur SuSE Linux Enterprise Server {de} von Novell {de} unterstützt werden, so besteht doch u.a. die Möglichkeit Ubuntu unter Hyper-V {en} zu installieren.

Wubi

./Wubi.png Eigentlich ist Wubi {en} hier völlig falsch am Platz, denn Wubi ist gar keine Virtualisierung. Es steht nur hier für diejenigen, die nach einer Möglichkeit suchen, Ubuntu einfach unter Windows zu installieren. Installiert wird Ubuntu über das Wubi-Programm und die Deinstallation verläuft wie gewohnt über die Systemsteuerung (unter Software).

Wubi legt keine Partition an, stattdessen wird auf einem beliebigen Windows-Laufwerk der Ordner Ubuntu (bzw. Kubuntu) mit mehreren großen Dateien als virtuelle Festplatte (Container) angelegt. Der Start des Ubuntu-Systems erfolgt über einen Eintrag im Windows-Bootmanager (und nicht in GRUB). Wubi ist auf der Desktop-CD enthalten und kann damit installiert werden.

Unter Linux

Mit den im vorherigen Abschnitt vorgestellten Programmen ist es natürlich auch möglich, Ubuntu als Gast auf einer anderen Wirt-Distribution zu verwenden.

Unter Mac OS X

Die großen VM-Spezialisten haben auch Virtualisierungslösungen für die Apfel-Community.

  • Parallels Desktop {de} ist ein Desktopvirtualisierer für Mac OS X.

  • Parallels Server für Mac {de} ist ein Paravirtualisierer für einen Server.

  • QEMU unterstützt auch mit Mac OS X als Wirtsystem einige Linuxdistributionen. Ubuntu steht zwar (noch) nicht auf der Liste {en}, aber dafür Debian. Insofern stehen die Chancen wohl günstig, dass es auch mit Ubuntu klappen könnte.

  • VirtualBox ist auch für Mac-OS-X-Wirte verfügbar.

  • VMware Fusion {de} ist ebenfalls ein Desktopvirtualisierer für Mac.

Unter anderen Systemen

Auch wenn das wahrscheinlich eher theoretischer Natur ist …

  • Mit VirtualBox kann man Ubuntu auch unter Solaris/OpenSolaris als Gastsystem betreiben.

  • Mit QEMU könnte es funktionieren, Ubuntu als Gast in FreeBSD auszuprobieren.

Diese Revision wurde am 16. Januar 2014 09:23 von frustschieber erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Emulation und Virtualisierung, Einsteiger