Virtuelle Maschinen

Virtuelle Maschinen

Designparadigma

Im Grunde genommen stellt jedes eine virtuelle Maschine dar.
In diesem Sinne ist jede Schicht aus einem Schichtenmodell eine virtuelle Maschine dar.

Virtualisierer

Virtual Machine Monitor VMM /Hypervisor

Ein Hypervisor schafft eine Umgebung für mehrere virtuelle Maschienen.

Typ 1 läuft direkt auf der Hardware,
Typ 2 setzt auf einem vollwertigen Betriebssystem auf

Verwaltet ein Hypervisor im Unterschied zu einem einfachen Virtualisierer mehrere Virtuellen Maschinen ? Ja, [GuZhao2012]

Wie ist der Zusammenhang zwischen dem Betriebssystemmechanismus Partitionierung und einem Hypervisor ? Es ist nach [GuZhao2012] zumindest eine Implementierung

Zweck

Hier steht die gemeinsame Nutzung einer supertollen Hardware und die vereinfachte Verwaltung im Vordergrund.
Beispielsweise eine WWW-Hostingfirma könnte folgende Vorteile haben:

Vorkommen:

IBM z/VM
  • seit VM/370 von 1972
  • bis 8 mal mehr virtueller Speicher als realer Speicher
VmWare ESXi
Erfahrungen mit ESXi
Linux KVM
Hier ist der Linux-Kern gleichzeitig der Hypervisor
Verwaltung: oVirt
Jailhouse
Linux wird zur Verwaltung eingesetzt, Betriebsmittel z.B.CPUs und Geräte werden einem Real-Time-System zugeordnet.
Karma VMM
Virtual Maschine Monitor auf dem L4/Fiasco OC mit aggressiver Paravirtualisierung
NOVA Microhypervisor
(auch von TU Dresden) die Mischung zwischen Hypervisoren und 3 Generationen von Mikrokernen, capability-basiert mit sehr kleiner Codebasis
(Nach den Copyright her bei https://github.com/IntelLabs/NOVA/ zu mutmaßen ist der Autor nun direkt bei Intel)

Vorteile

VMWare über Virtualisierung:
bessere Resourcennutzung
Die heutigen ix86-Systeme sind immer leistungsfähiger geworden und sond daher häufig nicht voll ausgelastet. Virtualisierung kann mehrere (auch unterschiedliche Systeme) auf einem einzelnen pysikalischen Rechner laufen lassen.
Erweiterte Schutzumgebung
eine einzelne Virtuelle Maschine ist eine Isolation, verschiedene virtuelle Maschienen dürfen/können sich nicht stören:
  • Würde auf einer Virtuellen Maschine das System amok laufen, so ist das Problem auf diese Virtuelle Maschine begrenzt.
  • Sicherheit: auch für einen externen Angreifer muß jede virtuelle Maschine einzeln angegriffen werden.
Das Betriebssystem merkt selber nicht, daß es auf einer Virtuellen Maschine läuft, daher kann man es als Anwendungsprogramm nicht feststellen.
Migration
Skalierbarkeit
Falls eine Menge von Viruellen Maschinen einen erhöhten Resourcenbedarf hat, kann man einen Teil auf einen anderen Server migrieren.
Höherere Verfügbarkeit - schnellere Systemreperatur
folgt aus der Migrierbarkeit - Vorraussetzung: Man hat auch die aktuellen Daten verfügbar.
Einfrieren von Systemkonfigurationen
Langlebige Entwicklungs/Wartungsprojekte brauchen einen festen Stand einer Softwarekonfiguration u.a. für Tests

Die Migrationsmöglichkeit erlaubt auch die Nutzung von Resourcen auf verschiedenen Rechnern. und erzeugt daher eine Ortstransparentz. Heute wird das auch mit dem Business-Wort "Cloud Computing" bezeichnet.

Hardwareunterstützung

[SLW2009] berichtet von "faithful Virtualization": trap and emulate: Hier läuft das Gastsystem im einem virtualisierten Modus. Bei einer priviligerten Instruktion ruft die Hardware eine Operation des Virtualisieres auf dem Hostbetriebssystems auf. Damit läuft das Gastsystem direkt auf der Hardware.

Paravirtualisierung

Das Gastbetriebssystem bzw. sein Kern wird so modifiziert, dass es auf einem Host-Betriebssystem läuft. Dabei werden priviligierte Instruktionen und Codesequenzen durch Aufrufe auf dem Gastsystem ersetzt. [SLW2009]
(da muß der Betriebssystemhersteller mitmachen - Vorteil bei Opensource)

Vorteile:

Vorkommen:

Xen (Wikipedia)
erlaubt echte Virtualisierung mit Hardwareunterstützung, Effizenter ist jedoch eine Unterstützung im Gastsystem.
L4Linux
ist die Paravirtualisierung des Linuxkerns auf L4 Kerne

weitere Literatur

[GuZhao2012] Gu,Zhoa: "A State-of-the-Art Survey on Real-Time Issues in Embedded Systems Virtualization",Journal of Software Engineering and Applications 2012
betrachtet Virtualisierung für Echtzeitsysteme, u.a. mit Microkernen wie L4. Hier wird auch der Einsatz zur Virtualisierung für Smartphones bestätigt.

Typ2 Hypervisor/Virtualisierer

Umgebung für ein unmodifiziertes Gastsystem auf einem existierendem System (host) (siehe Virtual Box Wiki)

VMware
Hier kann man ein Betriebssystem mit VMware auf einem Hostsystem booten
Wikipedia
VirtualBox
frei: GPL V2
MS Virtual PC

Vorteile

Bemerkungen

Exo Kerne

Exokerne partionieren die Hardware.

Wie ist die Beziehung zu den Exo-Kernen und Hypervisors ?

Emulatoren:

hier wird ein ganzer Rechner simuliert, d.h. die Maschinenbefehle werden von einer Softwarebasierten virtuellen Maschiene interpretiert (anstatt von einem Hardwareprozessor direkt.
Damit kann man auch noch nicht/nicht mehr verfügbare Systeme simulieren.

Bochs IA33 Emulator
simuliert PC
PowerPC-Emulator
C64-Emulator in Java
QEmu
Emulationen von einem System auf Linux.

Ubuntuwiki über qemu

Wikibook über QEMU

KVM macht das Kernunterstützt
QEMU-Buch Beschreibt QEMU und KVM
[GuZhao2012] beschreibt in Kap.4 Versuche, die KVM realtimefähig zu machen und Realtime Gäste (RTOS) und allgemeine Gäste (GPOS - general purpose OS) nebeneinander laufen zulassen.
Betriebssystemkerne im Usermode
sind auch virtuelle Maschinen (Überlegung von Walter Jäger)
Captive
ist eine virtuelle Maschine, die die Umgebung eines Treibers liefert.
jslinux
ist ein PC-Emulator auf javascript-Basis, der gleich ein kleines Linux im Browser startet.

Nutzen

Komponenten für virtuelle Umgebungen

Open vSwitch
ist eine Switch-Emulation (gefunden im Linux-Kern)
Openflow
emuliert router, switches,vswitches und Zugangssysteme
Open Network Platform

Emulatoren für Laufzeituntersuchungen

Valgrind
Virtuelle Maschine von i586 auf i586 um diverse Laufzeituntersuchungen machen zu können, unter anderem auch Speicherallokationsfehlersuche

Ablaufsystem für Programmiersprachen

Kennzeichen:

Vorkommen

1970 : Firma Datapoint für Programmiersprache PL/B
HP hatte um 1970 JIT-Compiler für BASIC-Maschinen
1980: Orginalimplementierung von UCSD-Pascal: p-code wird auf virtueller Maschine ausgeführt
Java Virtual Machine
Die JVM ist die weit verbreiteste und es gibt sie in verschiedenen Implementierungen.
Dalvik VM ist eine Register VM für Java
.NET
eine virtuelle Maschine für mehrere Sprachen.
(Leider war die Betriebssystemunabhängigkeit aus firmenstrategischen Gründen weniger das Ziel, ist aber möglich)
The LLVM Compiler Infrastructure
  • Virtuell Instruction Set
  • sprachunabhängige Compiler-Infrastuktur, Optimierer

Vorteile

Portabilität
Sun-Paradigma: Write Once, run Everywhere
Sicherheitsumgebung
(Ada on JVM Kap. 2) Nachteil: Emulationen kosten immer Leistung

Anwendung

Applets im Browser
Browser auf verschiedenen Prozessorarchitekturen wollen Applets nutzen.
Pervasive Computing
http://www.nist.gov/pc2000/
Software Agenten
Ein Softwareagent möchte über verschiedene Rechenknoten mit verschiedenen Prozessorarchitekturen migrieren.

Links

Konzepte und Implementierung virtueller Maschinen Ernst Schneider Diplomarbeit 2000 Uni Hamburg
Wikipedia über Virtualisierung
http://virt.kernelnewbies.org/ über Virtualisierung mit Linux

Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber
(Der Anfang war die Überlegung von Walter Jäger, dass User Mode-Betriebssysteme auch Virtuelle Maschinen seien in einer Diskussion mit Rudolf Weber)