Folge uns

Folge uns auf Facebook Folge uns auf Twitter Folge uns auf Google Abonniere unseren RSS-Feed Abonniere unseren Newsletter

Das Buch zu dieser Webseite

Computertechnik-Fibel

Die Computertechnik-Fibel, das Computer-Buch

Käufer der Computertechnik-Fibel Kundenmeinung:
Die Computertechnik-Fibel ist wirklich verständlich geschrieben, frei von Ballast und ein tolles Nachschlagewerk. Insgesamt ein sehr empfehlenswertes Buch.

Computertechnik-Fibel
jetzt bestellen!

 

Die Computertechnik-Fibel ist im iBookstore erhältlich

Die Computertechnik-Fibel für Amazon Kindle erhältlich

Die Computertechnik-Fibel bei Google Play erhältlich

Computertechnik-Fibel als PDF-Datei ohne DRM

Das Buch zu dieser Webseite

Netzwerktechnik-Fibel

Die Netzwerktechnik-Fibel

Käufer der Netzwerktechnik-Fibel Kundenmeinung:
Die Netzwerktechnik-Fibel ist sehr informativ und verständlich. Genau das habe ich schon seit langem gesucht.

Netzwerktechnik-Fibel
jetzt bestellen!

 

Die Netzwerktechnik-Fibel ist im iBookstore erhältlich

Die Netzwerktechnik-Fibel für Amazon Kindle erhältlich

Die Netzwerktechnik-Fibel bei Google Play erhältlich

Netzwerktechnik-Fibel als PDF-Datei ohne DRM

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

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.

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)

System-Virtualisierung mit Hypervisor (Typ 1)

System-Virtualisierung mit Hypervisor (Typ 2)

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 AMD-V (Pacifica) und von Intel mit VT-x. Ob AMD-V oder Intel VT-x, mit der Virtualisierungsunterstützung des Prozessors kann der Hypervisor die Virtualisierung deutlich schneller ausführen.
AMD-V von AMD und VT-x von Intel 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 Vanderpool Technology (VT-x)

Vanderpool Technology, kurz VT-x, und Virtualization Technology for Directed I/O, kurz VT-d, bilden die Virtualisierungsunterstützung von Intel, die seit November 2005 in den beiden Prozessoren Pentium 4 662 und 672 eingebaut eingebaut wurde. Im Laufe des Jahres 2006 wurden auch die anderen Prozessor-Typen Centrino (Yonah), Pentium D (Presler), Pentium 4 und Celeron (Cedar Mill), die Xeon- und Itanium-Reihe mit VT ausgestattet.

AMD Pacifica (AMD-V)

Die Virtualisierungsunterstützung von AMD heißt AMD-V (Pacifica) oder Secure Virtual Machine (SVM), die seit 2006 in den AMD-Prozessoren eingebaut ist. Im Zusammenhang mit Pacifica wird auch immer die Sicherheitsfunktionen Presidio genannt. Beide Techniken hängen eng miteinander zusammen.

Was bringen VT-x (Intel) und AMD-V?

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 bzw. der Virtual Machine Monitor (VMM) 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 VMM 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 VMM 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 VMM 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 VMM 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.

Virtualisierung in der Server-Umgebung

Virtualisierung in der Desktop-Umgebung

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:

Die Computertechnik-Fibel, das Computer-Buch

Die Computertechnik-Fibel ist im iBookstore erhältlich Die Computertechnik-Fibel für Amazon Kindle erhältlich