Virtualisierung

Was ist Virtualisierung?

Der Begriff Virtualisierung ist mehrdeutig. In der Regel verwendet man den Begriff Virtualisierung in der Computertechnik. Typischerweise versteht man unter Virtualisierung die Prozessor-Virtualisierung. Neben der Prozessor-Virtualisierung gibt es auch noch andere Möglichkeiten. Dazu zählt zum Beispiel das Partitionieren von Festplatten oder die Netzwerk-Virtualisierung durch VLAN.

Virtualisierung

Virtualisierung ist eine Hardware-Unterstützung, die den Betrieb virtueller Computer auf einem echten Computer erleichtert oder beschleunigt. Mit der Virtualisierung kann man mehrere Software-Systeme auf einer Hardware laufen lassen. Das können zum Beispiel unterschiedliche Betriebssysteme sein. Virtualisierung macht dann Sinn, wenn ein Hardware-System nicht ausgelastet ist und die Ressourcen parallel für weitere Systeme genutzt werden sollen.

Da eine steigende Taktfrequenz bei Prozessoren so einfach nicht möglich ist, sind die Prozessorhersteller, insbesondere Intel und AMD, auf alternative leistungssteigernde Techniken für Prozessoren angewiesen. Neben Mehrkern-Prozessoren, Multimedia-Erweiterungen und 64-Bit gelten Virtualisierungs-Funktionen als die bahnbrechende Entwicklung.

Gründe für Virtualisierung

  • Erhöhung der Ausfallsicherheit
  • bessere Auslastung der IT-Systeme durch Konsolidierung der Hardware
  • niedrigere IT-Kosten
  • geringerer Stromverbrauch

Wichtigstes Merkmal der Virtualisierung ist die Ausfallsicherheit. Wenn eine Applikation sich selbst oder sogar das gesamte Betriebssystem zum Absturz bringt, laufen die anderen virtuellen Maschinen weiter.
Der Betrieb unterschiedlicher Applikationen in mehreren Umgebungen ist die häufigste Anwendung. Zum Beispiel um Applikationen aus Sicherheitsgründen und wegen des Datenschutzes getrennt zu halten. Um aber nicht für jede Applikation eine eigene Hardware bereitstellen zu müssen, werden virtuelle Maschinen geschaffen, auf denen dann die Applikationen getrennt voneinander arbeiten können.
Auf den ersten Blick scheint Virtualisierung nur etwas für Server zu sein. Doch auch normale Anwender können davon profitieren. Zum Beispiel zwei Umgebungen für das Arbeiten mit dem Computer. Die eine ganz normal und die andere bei Verbindung mit dem Internet. Hat sich das Internet-System Würmer oder Viren eingefangen, wird sie gelöscht und neu aufgesetzt. So etwas lässt sich zum Beispiel bei jedem Systemstart automatisieren. So hat man immer ein sauberes System. Das könnte auch soweit gehen, dass unsichere Programme in einer eigenen Umgebung laufen, damit das Betriebssystem von außen nicht angreifbar ist.

Was ist eine virtuelle Maschine

Virtuelle Maschine

Eine virtuelle Maschine ist ein Software-Container, der einem darin installierten Betriebssystem eine Scheinwelt vorgaukelt, in dem gängige Hardware-Komponenten emuliert werden. Üblicherweise verfügen Betriebssystem über Standard-Treiber mit denen sie die emulierte Hardware ansprechen können.
Virtuelle Maschinen verfügen nur über eine eingeschränkte Grafikleistung. 3D-Software und die Wiedergabe und Bearbeitung von Videos ist in einer virtuellen Maschine nicht ausreichend schnell machbar.
Mit virtuell ist die Hardware gemeint, die dem Betriebssystem in der virtuellen Maschine zur Verfügung steht. Denn CPU, Arbeitsspeicher, Grafikkarte, Laufwerke und Schnittstellen stehen den parallel arbeitenden Betriebssystemen nicht direkt zur Verfügung. Eine im Hintergrund laufende Virtualisierungssoftware überwacht die Zugriffe auf die Hardware. Sie organisiert und verwaltet die virtuellen Maschinen (VM).
Diese Aufgabe kann zum Beispiel ein Hypervisor übernehmen. Er benötigt einen kleinen Teil der Hardware-Leistung, insbesondere von Prozessor und Arbeitsspeicher, um seine Arbeit erledigen zu können.

Betriebssystem-Virtualisierung mit Container

Betriebssystem-Virtualisierung

Bei der Betriebssystem-Virtualisierung läuft nur ein Betriebssystem. Darauf werden mehrere virtuelle Laufzeitumgebungen erzeugt (Jails), die für die laufenden Programme als normale Betriebssysteme wirken. Die Applikationen sehen nur die Applikationen, mit denen sie ihre virtuelle Umgebung teilen. Die Laufzeitumgebungen sind schnell erzeugt, da sie nur Abbilder des Wirtssystems sind. Allerdings können einzelne Abbilder nicht verändert werden. Nur das Grundsystem kann verändert werden und dass verändert dann auch die Abbilder.
Beispiele sind FreeBSD Jails, Solaris Zone/Container, Linux VServer, Open VZ und Virtuozzo.

System-Virtualisierung mit Hypervisor

Bei der System-Virtualisierung wird ein oder mehrere vollständige Systeme nachgebildet, auf dem beliebige Betriebssysteme ausführbar sind. Die Systeme orientieren sich an echter Hardware. So kann man verschiedene virtuelle Systeme nachbilden und mit unterschiedlicher Hardware ausstatten.
Beispiele sind VMWare Workstation, Virtual PC, Virtual Server und Parallels.

Hypervisor / Virtual Machine Monitor (VMM)

Der Hypervisor wird auch als Virtual Machine Monitor (VMM) bezeichnet. Er erstellt und verwaltet virtuelle Hardware. In der Regel stellt ein Hypervisor innerhalb der virtuellen Maschinen Standard-Schnittstellen zur Verfügung. Gleichzeitig stellt er eine Abstraktionsschicht zur Verfügung, die den Zugriff der Treiber auf die Hardware verhindert. Damit ist sichergestellt, dass sich verschiedene Betriebssysteme nicht gegenseitig in die Quere kommen.

System-Virtualisierung System-Virtualisierung
Hypervisor Typ 1 Hypervisor Typ 2

Man unterscheidet zwischen zwei Arten. Typ 1 und Typ 2. Ein Typ-1-Hypervisor läuft als Betriebssystem direkt auf der Hardware (native). Das Gesamtsystem verbraucht so wenig Ressourcen. Aber der Hypervisor muss alle Treiber für die gesamte Hardware mitbringen.
Ein Typ-2-Hypervisor setzt auf einem vollwertigen Betriebssystem auf (hosted) und nutzt alle Ressourcen, die ihm in dieser Umgebung zur Verfügung stehen.

Der Hypervisor kann also ein vollwertiges Betriebssystem sein (Typ 1). Er ist dann ein Betriebssystem für ein Betriebssystem. Es bildet eine Virtualisierungsschicht, die es ermöglicht, mehrere Betriebssysteme gleichzeitig auf einem Computersystem zu betreiben. Der Hypervisor vermittelt den Betriebssystemen den Eindruck sie würden alleine auf dem System laufen und hätten die Hardware für sich alleine. Der Hypervisor stellt gleichzeitig sicher, dass ein Betriebssystem nicht die Daten eines andere Betriebssystems zerstört oder auch nur darauf Zugriff hat. Er verhindert, dass die Betriebssysteme miteinander in Konflikt geraten. Die Sicherheitsanforderungen an den Hypervisor sind entsprechend hoch.

Betriebssystem-Virtualisierung mit Container (Jail)

  • Solaris/OpenSolaris
  • Zoning
  • BSD jails
  • Mac-on-Linux
  • OpenVZ
  • Virtuozzo
  • Linux-VServer
  • UML - User Mode Linux
  • Linux Container (LXC)

System-Virtualisierung mit Hypervisor (Typ 1)

  • Hyper-V (Microsoft)
  • vSphere Hypervisor, ehemals ESX/ESXi (VMware)
  • XenServer (Citrix)
  • PowerVM (IBM)
  • LPAR und PR/SM (IBM)
  • Proxmox VE (Proxmox)
  • KVM - Kernel-based Virtual Machine (Open Source)
  • QEMU - Quick Emulator (Freie Software)

System-Virtualisierung mit Hypervisor (Typ 2)

  • VMware Workstation/Player (VMware)
  • Windows Virtual PC (Microsoft)
  • VirtualBox (Oracle)
  • Parallels Workstation

Hardware-Unterstützung

Ursprünglich war Virtualisierung reine Software-Sache. Doch für manche Funktionen braucht die Virtualisierungssoftware Hardware-Unterstützung. 64-Bit und Mehrkern-Prozessoren unterstützen die Virtualisierung. Erst mit einem großen Adressraum und viel Rechenleistung macht Virtualisierung Sinn. Mehrere parallel laufende virtuelle Computer sind darauf angewiesen. Sonst leidet der Bedienkomfort unter der schleichenden Ausführungsgeschwindigkeit der Anwendungen.

Bei der Hardware-Unterstützung geht es weniger um die Geschwindigkeitssteigerung, sondern um Zusatzfunktionen. Das sind bestimmte Funktionen im Prozessor und im Chipsatz. Befehlserweiterungen in Prozessoren gibt es von AMD mit Secure Virtual Machine (SVM) und von Intel mit VT-x und VT-d. Ob AMD-SVM oder Intel VT, mit der Virtualisierungsunterstützung des Prozessors kann der Hypervisor die Virtualisierung deutlich schneller ausführen.
AMD-SVM und Intel VT reichen für die Hardware-Virtualisierung nicht aus. Zusätzlich nötig ist auch Second-Level Address Translation (SLAT). Das ist ein Adressverwaltungsbeschleuniger, der in der CPU angesiedelt ist und sich in einer höheren Geschwindigkeit bemerkbar macht. Bei AMD heißt das Nested Page Tables (NPT) oder Rapid Virtualization Indexing (RVI). Bei Intel heißt es Extended Page Tables (EPT).

Im Regelfall ist Virtualisierung ein Aufgabenbereich des Prozessors. Doch auch bei der I/O-Virtualisierung ist die Unterstützung von CPU, BIOS und Chipsatz nötig. Dann kann man eine bestimmte PCIe-Komponente direkt an eine virtuelle Maschine durchreichen, sodass sich darin ein Treiber für dieses Gerät installieren lässt. Das ist vor allem bei Grafikkarten interessant.

Intel Virtualization Technology (VT)

Die Virtualization Technology ist die Virtualisierungsunterstützung von Intel, die seit November 2005 in Intel-Prozessoren eingebaut ist.

AMD Secure Virtual Machine (SVM)

Die Virtualisierungsunterstützung von AMD heißt Secure Virtual Machine (SVM), und ist seit 2006 in den AMD-Prozessoren eingebaut.

Was bringen VT (Intel) und SVM (AMD)?

Hinweis: Die folgende Beschreibung ist stark vereinfacht und allgemein gehalten.

Ein Prozessor ist normalerweise darauf ausgelegt nur ein Betriebssystem auszuführen. Wenn ein Computersystem nun neben einem Host- auch ein Gast-Betriebssystem (virtuelle Maschine) beherbergt, dann ist es ohne Änderungen am Original-Code nicht möglich, bei der Befehlsausführung zwischen Host und Gast zu unterscheiden. Wenn bestimmte Instruktionen auf die gleiche Ressource zugreifen, dann kann es zu Abstürzen und Datenverlust kommen. Schon einfache Instruktionen, wie das Sichern und Schreiben von Statusregistern im Prozessor, können zu Problemen führen.
Um Probleme auszuschließen muss der Code vor der Ausführung auf problematische Instruktionen durchsucht und diese gegebenenfalls ersetzt werden. Für die Überprüfung ist der Hypervisor zuständig. Weil jede einzelne Instruktion überprüft werden muss, geht dabei die Performance des gesamten Systems etwas in die Knie. Im Prinzip muss der Hypervisor den virtuellen Maschinen vorgaukeln, dass sie den Prozessor für sich alleine haben.

Viel besser ist die Virtualisierungsunterstützung durch den Prozessor. Dadurch wird die Virtualisierung etwas schneller (Geschwindigkeitsvorteil). Das hilft vor allem "einfachen" Virtualisierungslösungen. Viel wichtiger ist, dass unter einem 32-Bit-Betriebssystem auch ein 64-Bit-Gastsysteme ausgeführt werden kann, wenn der Prozessor Virtualisierung unterstützt. Denn mit speziellen Virtualisierungsinstruktionen lassen sich die virtuellen Maschinen in eine Umgebung verschieben, wo das Durchsuchen auf problematische Instruktionen nicht mehr nötig ist.
Wenn die Virtualisierungsunterstützung trotzdem nicht sehr viel zur Geschwindigkeitssteigerung führt, dann liegt das daran, weil die meisten Instruktionen immer noch vom Hypervisor abgefangen werden müssen. Das bedeutet, dass die Virtualisierungsunterstützung des Prozessors nicht besonders umfangreich ist. Der Prozessor kann nicht alle Instruktionen selber abhandeln.
Ob Instruktionen von der Hypervisor oder vom Prozessor behandelt werden, hängt vom Umfang der Virtualisierungsunterstützung des Prozessors ab. Die Behandlung durch den Prozessor ist auf alle Fälle schneller. Aber prinzipiell ist immer ein Hypervisor nötig, der sich um die Organisation und die aufwendigeren Instruktionen kümmert.

Anwendungen

Virtuelle Computer sind eher selten im Einsatz. Es werden aber schon konkrete Anwendungen diskutiert. Einiges davon ist jetzt schon möglich. Mit einem neuen Software-Zweig ist zu rechnen.

  • Software-Entwickler nutzen virtuelle Computer, um ihre Produkte unter verschiedenen Betriebssystemen zu testen.
  • Auf Arbeitsplatz-Rechnern könnte man verschiedene Arbeitsumgebungen schaffen. Eine normale Arbeitsoberfläche, eine Oberfläche für den Internet-Zugang und eine für spezielle Hardware-Ressourcen. So lassen sich die verschiedenen Oberflächen gegen Hardware- und Software-Fehler, Viren und Würmern schützen.
  • Bestimmte Anwendungen für ältere Betriebssysteme können in einem virtuellen Computer ausgeführt werden. Parallel dazu kann ein aktuelles Betriebssystem mit vollem Leistungsumfang arbeiten.
  • Wenn zwei Applikationen sich nicht vertragen, kann man sie unter eigenen virtuellen Umgebungen installieren und ausführen.

Virtualisierung in der Server-Umgebung

  • bessere Systemauslastung erreichbar
  • leichter managebar
  • Energiekosten senken -> Umweltrichtlinien einhalten
  • höhere Sicherheit und Stabilität
  • schneller Anforderungen umsetzen

Virtualisierung in der Desktop-Umgebung

  • höhere Sicherheit und Stabilität
  • Abwärtskompatibilität

Virtualisierung im großen Maßstab

Ab 20 virtuellen Maschinen auf einem Rechner, tritt die Überwachung, das Update-Management und die Leistungsmessung in den Vordergrund. Es stellt sich unter anderem auch die Frage, wie man ein Update-Patch auf allen virtuellen Maschinen einspielt, ohne das jede einzelne virtuelle Maschine gestoppt und gestartet werden muss.
Ein Verteilungs- und Kontrollmechanismus muss in der Lage sein, die virtuellen Maschinen automatisch auf eine andere Hardware zu verteilen.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Die Computertechnik-Fibel, das Computer-Buch
Computertechnik-Fibel

Alles was Sie über Computertechnik wissen müssen.

Die Computertechnik-Fibel ist ein Buch über die Grundlagen der Computertechnik, Prozessortechnik, Halbleiterspeicher, Schnittstellen, Datenspeicher, Laufwerke und wichtige Hardware-Komponenten.

Das will ich haben!

Die Computertechnik-Fibel, das Computer-Buch
Computertechnik-Fibel

Alles was Sie über Computertechnik wissen müssen.

Die Computertechnik-Fibel ist ein Buch über die Grundlagen der Computertechnik, Prozessortechnik, Halbleiterspeicher, Schnittstellen, Datenspeicher, Laufwerke und wichtige Hardware-Komponenten.

Das will ich haben!

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen