49
bs-9.2 1 9.2 Virtuelle Maschinen Zur Erinnerung (1.3): Virtuelle Maschine (virtual machine, VM) entsteht durch vollständige Virtualisierung einer realen Maschine Hardware VS Linux Windows Minix . . . Linux Mehrere virtuelle Maschinen mit potentiell verschiedenen Gastsystemen (evtl. auch VS!) Virtualisierungssystem (VS) (Virtual Machine Monitor, VMM, Hypervisor)

9.2 Virtuelle Maschinen - inf.fu-berlin.de · bs-9.2 2 Was bringt die Virtualisierung? Z.B. Linux und Windows auf einem Rechner; allgemein weniger - dafür größere - Maschinen,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

bs-9.2 1

9.2 Virtuelle Maschinen

Zur Erinnerung (1.3):

Virtuelle Maschine (virtual machine, VM) entsteht durch

vollständige Virtualisierung einer realen Maschine

Hardware

VS

Linux Windows Minix. . .

Linux

Mehrere virtuelle Maschinen mit potentiell verschiedenen

Gastsystemen (evtl. auch VS!)

Virtualisierungssystem (VS)(Virtual Machine Monitor,VMM, Hypervisor)

bs-9.2 2

Was bringt die Virtualisierung?

Z.B. Linux und Windows auf einem Rechner; allgemein weniger - dafür größere - Maschinen, damit potentiell bessere Auslastung der Hardware und weniger Aufwand für Wartung und Administration. Isolation und damit mehr Sicherheit und Zuverlässigkeit. BS-Entwicklung: Test neuer oder modifizierter Systeme!

Insgesamt: Verringerung der sog. total cost of ownership (TCO)

Nachteile: "zurück zum Großrechner" Hardware ist unverhältnismäßig teuer geringere Flexibilität bzgl. Erweiterung Effizienzverluste?

bs-9.2 3

Präzisierung des Begriffs Virtuelle Maschine:

Äquivalentes Verhalten: die virtuelle Maschine hatdie gleichen Ressourcen wie die reale Maschine, wenngleich kleinere (Speicher) und/oder weniger (Peripherie, Prozessoren). (Abgrenzung: JVM, CIL, ...)

Ressourcen-Aufteilung: der VMM versorgt jedevirtuelle Maschine mit einem bestimmten Anteil anden Hardware-Ressourcen, und keine VM hat beliebigenZugriff auf diese Ressourcen.

Keine Emulation: von wenigen Ausnahmen abgesehenwird jeder von einer virtuellen Maschine ausgeführteBefehl direkt von der realen Maschine ausgeführt.(Abgrenzung: Bochs, ... )

bs-9.2 4

Verwandte Prinzipien:

Paravirtualisierung

VS als Prozess

Server-Virtualisierung

und andere . . .

9.2.4 ff.

bs-9.2 5

Die Idee ist mehr als 30 Jahre alt:

CP-67 ("control program") für IBM System/360-67 (1969!); als CP/CMS mit Einplatzsystem CMS für Teilnehmer-betrieb eingesetzt, später VM/370 genannt ( S/390, zSeries) (9.2.3)

z/VM Nachfolger von VM/370 für die aktuelleGroßrechner-Familie IBM zSeries

VMware VMware WSX für Intel x86 (1999) (9.2.4)

Xen realisiert Paravirtualisierung für x86 (2003) (9.2.5)

und zahlreiche weitere . . .

bs-9.2 6

Terminologie:

Gastsystem (guest system)ist ein Betriebssystem, das in einer virtuellenMaschine läuft.

Virtualisierungssystem (Virtual Machine Monitor, VMM)ist die virtualisierende Software, die zwischender Hardware und den Gastsystemen liegt.

Hypervisorist ein Synonym für VMM und drückt aus, dass damit die Gastsysteme überwacht werden, so wie der Supervisor (Systemkern) eines Gastsystems die dortigen Benutzerprozesse überwacht.

bs-9.2 7

Information:

J. E. Smith, R. Nair: Virtual Machines. Morgan Kaufmann 2005

IEEE Computer May 2005 (Themenheft)

Wikipedia (englisch!): http://en.wikipedia.org/wiki/Virtualization

u.v.a.

bs-9.2 8

9.2.1 Funktionsweise

VS läuft im Systemmodus, VM läuft im Benutzermodus!VM speichert für jedes VS: Prozessorzustand (mit MMU)und Abbildung virtuelle Peripherie reale Peripherie

Hardware

VS

Hardware

BS

analog zu: Alarmbehandlung durch Benutzerprogramm

virtueller Alarm = realer Alarm Alarmbehandlung im VS:Rückkehr zur VM, und zwar zur Behandlungsroutine des BS

bs-9.2 9

virtueller privilegierter Befehl im virtuellen Benutzermodus (= realer Benutzermodus) realer Alarm Alarmbehandlung im VS (wie oben)

Hardware

VS

virtueller privilegierter Befehl im virtuellen Systemmodus (= realer Benutzermodus!) realer Alarm Alarmbehandlung im VS emuliert den Befehl!

(dies kann Spooling implizieren!)

bs-9.2 10

realer Eingriff Eingriffsbehandlung im VSsimuliert virtuellen Eingriff bei zugehöriger* VM:

gespeicherten Maschinenstatus entsprechend ändernunter Berücksichtigung des Inhalts der virtuellenUnterbrechungsadresse (interrupt location) des BS ;sobald die VM wieder zum Zug kommt, beginnt siemit der Behandlung des virtuellen Eingriffs .

Hardware

VS

* "zugehörige VM":VS hatte sich gemerkt,für welche VM das Gerätgestartet worden war

bs-9.2 11

Rückkehr einer VM vom virtuellen Systemmodus (= realer Benutzermodus!)zum virtuellen Benutzermodus (= realer Benutzermodus!)mit virtuellem privilegiertem Befehl Emulation dieses Befehls durch VS (wie auf S. 9)

Aber: Was tun bei einer Maschine, bei der dieser Befehlnicht privilegiert ist?

Oder bei einer Maschine, bei der es anderenicht privilegierte Befehle gibt, die sensibleSystemregister (zwar nicht ändern, aber:)lesen können?

bs-9.2 12

9.2.2 Virtualisierbare Hardware

Fundamentale Erkenntnisse:

G.J. Popek, R.P.Goldberg: Formal requirements for virtualizablethird-generation architectures. Proc. 4. ACM Symp. on OperatingSystem Principles. Ferner in: Comm. ACM, July 1974

Def.: Eine Rechnerarchitektur heißt virtualisierbar,wenn sie die Konstruktion eines VMM zulässt.

Achtung: Nicht jede Hardware ist virtualisierbar, und manche Hardware ist "schwerer" virtualisierbar als andere!

bs-9.2 13

Def.: Ein Maschinenbefehl heißt privilegiert,wenn er im Benutzermodus einen Alarm auslöst,im Systemmodus aber nicht.

Beispiel: LPSW auf IBM System/360

Hardware-Modellierung:

Arbeitsspeicher Prozessor Prozessor-Modus (user oder supervisor) einfache MMU (base und length) Alarme: Speicherschutz, privilegierter Befehl

9.2.2.1 Virtualisierbarkeit nach Popek/Goldberg

bs-9.2 14

Def.: Ein Maschinenbefehl heißt steuerungssensitiv,(control sensitive), wenn er Modus oder MMUverändern kann (ohne dass ein Speicherschutz-Alarm die Ursache wäre).

Beispiele: LPSW auf IBM System/360 (privilegiert)

POPF auf IA-32 (nicht privilegiert):lädt das EFLAGS-Register bei CPL 0;bei CPL 3 aber werden etliche Flags stillschweigend ignoriert (z.B. IF) !

Wenn POPF also von einem Gast-BSin einer VM ausgeführt wird (mit CPL 3 !),verhält es sich anders als wenn es vondiesem BS auf der realen Maschineausgeführt wird.

bs-9.2 15

Def.: Ein Maschinenbefehl heißt verhaltenssensitiv,(behaviour sensitive), wenn sein Verhalten von der MMU (d.h. seiner Lage im Speicher) oder vom Modus abhängt (auch lagesensitiv bzw. modussensitiv).

Beispiele: MOV AX,CS auf IA-32 (nicht privilegiert):liest vom Code Segment Registerins Register AX - und kann damitden CPL erfragen.

BS-Code in der VM erhält hierbei den CPL 3, in der realen Maschine aber 0(oder 1 oder 2).

bs-9.2 16

Satz: (Popek/Goldberg)Eine Rechnerarchitektur ist virtualisierbar,wenn alle sensitiven Operationen privilegiert sind.

Achtung: dies ist hinreichende, nicht notwendige Bedingung!

Beispiele: IBM System/360Motorola 68020

Gegenbeispiel: Intel x86, IA-32/64: Virtualisierung möglich,aber schwierig HW-Modifikationen?

J.S. Robin, C.E. Irvine: Analysis of the Intel Pentium’s Ability to Support aSecure Virtual Machine Monitor. Proc. Usenix 2000.

bs-9.2 17

Geänderte x86-Hardware:

VT (virtualization technology, auch "Vanderpool", 2005)als VT-x für IA-32 und VT-i für IA-64 (Itanium)

Virtual Machine Extension (VMX) unterscheidet zwischen

root operation mode ≈ x86, für VSnon-root operation mode = virtuelle x86, für VMs

(Folgerung: keine rekursive Virtualisierung möglich)

http://en.wikipedia.org/wiki/X86_virtualizationhttp://developer.intel.com/technology/itj/2006/v10i3/1-hardware/1-abstract.htm

9.2.2.2 Intel VT

bs-9.2 18

Hardware-Erweiterungen:

VMCS - Virtual Machine Control Structure für eine VMauf bestimmter (realer!) Adresse besteht aus 2 Teilen:

guest-state area (für BS)host-state area (für VS)

für die Aufnahme der Zustände der entsprechendenSystemregister.

Übergang rootnon-root rettet Zustand nach host-state areaund lädt Zustand aus guest-state area.

Übergang non-rootroot rettet umgekehrt.

Außerdem erweiterter Befehlssatz für root operation.

bs-9.2 19

9.2.3 Klassische Virtualisierung

Die IBM-360-Architektur ist virtualisierbar!

CP-67 ("control program") ist ein VS für die 360-67, zusammen mit dem Einbenutzersystem CMS(Cambridge Monitor System) eingesetzt alsTeilnehmersystem CP/CMS (typisch: 30 Benutzer)

R.A. Meyer, L.H. Seawright: A virtual machine time-sharing system.IBM Systems Journal, Sept. 1970.http://www.research.ibm.com/journal/sj/093/ibmsj0903D.pdf

Einschränkung: MMU des Modells 360-67 wird benutzt, aber nicht virtualisiert. (Viele 360-Modelle haben gar keine MMU!)

bs-9.2 20

9.2.3.1 IBM CP-67

bs-9.2 21

360-Architektur:

Benutzermodus und Systemmodus

MMU für virtuellen Speicher (Option, modellabhängig)

Ein/Ausgabe über programmierbare Kanäle,angestoßen durch privilegierten E/A-Befehl SIO

typische Peripherie der 60er/70er Jahre,einschließlich zeichenorientierter Datenstationen

bs-9.2 22

Jedem Benutzer des CP gehört eine eigene virtuelle Maschine.Typisch für die Benutzung mit CMS: Prozessor, 256 KBArbeitsspeicher, 2 Plattenlaufwerke, 1 Operateur-Konsole,1 Drucker, 1 Lochkartenleser.

Benutzerverwaltung des CP führtName, Passwort, Konfiguration der virtuellen Maschine.

Erfolgreiches Einloggen bei CP erzeugt virtuelle Maschine.Der Benutzer ist der Operateur dieser Maschine!

Anschalten der virtuellen Maschine mit Laden/Starten eines BS:Befehl initial program load, z.B. IPL CMS (CP hält einige BSe vor, mnemonisch benennbar).Danach Operateur/Benutzer-Befehle des jeweiligen BS.

bs-9.2 23

Beachte: Über die Konsole werden zwei Arten von Interaktionenabgewickelt:

Interaktionen mit dem BS Interaktionen mit der virtualisierten Hardware: "virtuelle Tasten" (z.B. IPL), "virtuelle Anzeigen"

In den Zustand gelangt man u.a. durch IPL,in den Zustand durch eine spezielle Taste an der Datenstation.

Ausgewählte weitere "virtuelle Tasten" im Zustand :

BEGIN Übergang nach LOGOUT Abschalten der VMDISPLAY Registerinhalte der VM anzeigen...

bs-9.2 24

Verwaltung des CP

durch "realen" Operateur (der realen Maschine)

mit eigener Befehlssprache

in privilegierter Verwaltungs-VM

bs-9.2 25

Hardware Virtualisierung Jahr

360-67 CP/CMS 1969

370 VM/370 1972 ("Virtual Machine Facility")Weiterentwicklung des CP/CMS,rekursive Virtualisierung

370/XA VM/XA ≈ 1985 ("Extended Architecture")(32-Bit-Architektur)

bs-9.2 26

390 VM/ESA 1990 ("Enterprise Systems A.")neuer Maschinenbefehl SIE - start interpretive execution -

beschleunigt die Emulation im CP;ferner leistungsfähigeres CMS (Multitasking, ...)

zSeries z/VM 2000 (64-Bit-Architektur)angepasst

z9 z/VM 2005auch Paravirtualisierung (9.2.4) für Linux

bs-9.2 27

9.2.4 Paravirtualisierung

bedeutet: Gast-Systeme sehen eine verbesserte Hardware

Beispiel: Flag für enable/disable interrupt nicht in Systemregister, sondern in spezieller Speicherzelle! sogar ohne Intervention des Hypervisor umsetzbar!

Nachteil: Gast-Systeme müssen portiert werden

Vorteile:

anwendbar für die nichtvirtualisierbare x86-Architektur,

effizienter als dynamische Code-Umwandlung (9.2.5)

Ressourcen-Garantien für die beteiligten Systeme (QoS)

bs-9.2 28

Xen

leistet Paravirtualisierung für x86, IA-64, Power 5 für(bisher) portierte Betriebssysteme Linux und Windows XP

P. Barham et al.: Xen and the Art of Virtualization. Proc. 19. ACM Symp. on Operating System Principles, 2003 http://www.cl.cam.ac.uk/research/srg/netos/xen http://www.xensource.com/

Prominente Vertreter:

Denali (Univ. of Washington, 2002)

Xen (Univ. of Cambridge, 2003)

bs-9.2 29

Architektur: CPL

Benutzer Benutzer Benutzer Control 3Software

XenoLinux XenoXP (XenoBSD) XenoLinux 1

Xen Hypervisor 0

x86-Maschinen

bs-9.2 30

Interaktion zwischen Supervisor und Hypervisor :

Hypercall

Aufruf des Hypervisor durch Systemaufruf-Instruktion ( Alarm), ersetzt sensitiven Befehl (in portiertem BS-Code!)

Event

Benachrichtigung eines Supervisor von Geräte-Unterbrechung, ersetzt HW-Unterbrechung, ist realisiert wie SW-Unterbrechung in Einzelsystem

bs-9.2 31

Interaktion zwischen Benutzer und Supervisor :

Alarme (Systemaufruf, Fehler – außer Seitenfehler)

werden direkt vom Supervisor behandelt, weil Xen die Unterbrechungsvektoren so einrichtet, wie ihm vom Supervisor beim Start mitgeteilt wurde

Seitenfehler: Die verursachende Adresse befindet sich im Register CR2 – and dieses ist nur über eine privilegierte Instruktion erreichbar! Daher:

Xen übernimmt, speichert CR2 im Keller des BS

und überlässt danach dem BS die Behandlung

bs-9.2 32

Zur Virtualisierung der Prozessoren:

Parameter der Zuteilung von Prozessorzeit an dieGastsysteme einstellbar über die Control Software

Ablaufsteuerung bevorzugt System, das geradeaufgeweckt wurde (damit zeitkritische Aktionen

nicht verzögert werden *)

* z.B. TCP basiert seine Einschätzung der Netzgeschwindigkeit auf den Antwortzeiten der Quittungen!

bs-9.2 33

Zur Virtualisierung der Uhren:

Jedes Gastsystem hat eigene virtuelle Geräte fürRealzeit (!), eigene virtuelle Zeit (bleibt stehen bei

Inaktivität) und Uhrzeit, ferner 2 Wecker – für

Realzeit und virtuelle Zeit

bs-9.2 34

Zur Virtualisierung von Seitentabellen und MMU:

Es gibt keine Unterscheidung zwischen „virtuellen Seitentabellen“ eines Gastsystems und „realen Seitentabellen“ des Hypervisor

Gastsystem liest die realen, vom Hypervisor verwalteten Seitentabellen – kann sie aber nicht direkt verändern.

Seitentabellen können nur über Hypercall modifiziert werden.

bs-9.2 35

Unterscheidung zwischen hardware memory und physical memory: letzteres ist der aus Sicht des Gastsystems reale, physisch zusammenhängende Speicher, in Wirklichkeit aber der von Xen angebotene virtuelle Speicher, dessen Seiten gestreut liegen.

Beim Start eines Gastsystems wird ihm von Xen ein bestimmter Anteil am realen Speicher (nicht notwendig zusammenhängend)

zugesichert.

Dieser Anteil kann auf Wunsch des Systems (in Grenzen) vergrößert bzw. verkleinert werden.

bs-9.2 36

Zur Virtualisierung der Ein/Ausgabe:

Einfache Hypervisor-Schnittstelle für E/A(geräteunabhängige Block-E/A, USB-E/A etc.).

Daher keine komplizierten Treiber bei den Gastsystemen.

Xen-Treiber laufen mit CPL 1 - was Xen vor fehlerhaftenTreibern schützt.

bs-9.2 37

9.2.5 Dynamische Code-Umwandlung(dynamic recompilation)

Die "sensitiven Stellen" im Code des Gastsystems werden direkt vor ihrer Ausführung geeignet modifiziert.

Das dafür zuständige VS wird nicht auf der nacktenMaschine, sondern samt Gast-BS in einem normalen

Benutzerprozess eines Gastgeber-BS ausgeführt!("hosted virtual machine architecture")

VSBS

VS

zur Erinnerung: klassisches VS

bs-9.2 38

Gastgeber-BS

VS

Gast-BS

HW

...

...

read(file,buf,len);

Systemaufruf wird emuliert:Sprung ins Gastsystem: E/A-Befehl für virtuelle Platte;

E/A-Befehl wird emuliert:read(disk,...)Systemaufruf für Gastgeber-BS

E/A-Befehl für reale Platte

Vorteile: einfache Installation und Verwaltung

Nachteil: Effizienzverluste

Beispiele: VMware Workstation für x86 unter Windows, Linux, Mac OSMS Virtual PC für x86 unter Windows

bs-9.2 39

VS überwacht den Ablauf des Gastsystems: der Code wird fragmentweise so modifiziert, dass er zwar größtenteils nicht-emuliert abläuft (Effizienz!), regelmäßig aber immer wieder zum VS zurückkehrt.

VS kümmert sich nur um denjenigen Code, der tatsächlichzur Ausführung kommt.

Die vorgenommenen Modifikationen umfassen die Emulation sensitiver Maschinenbefehle. Zu diesem Zweckwerden virtuelle Systemregister geführt.

Die modifizierten Fragmente werden eine Zeit lang ineinem Cache abgespeichert und dort wiederverwendet,wenn der Programmablauf wieder auf sie stößt.

(Vergleiche mit just-in-time compilation für JVM!)

9.2.5.1 VMware Workstation

bs-9.2 40

Fragment endet mit einem Sprungbefehl oder einem sensitiven Befehl, spätestens aber nach 12 Befehlen.

Beispiel: ...JGE x ; Fragment-Ende

c: ...

wird übersetzt in...JGE ...; Adresse im VS für die Behandlung

des bei x beginnenden CodesJMP ...; Adresse im VS für die Behandlung

des bei c beginnenden Codes

und im Cache abgelegt.

bs-9.2 41

Schutz des VS vor fehlerhaften Zugriffen seitens des Gastsystems mittels Segmentierung:

Den Segmenten des Gastsystems werden jeweilsüberlappende Segmente zugeordnet, bei denen im oberen Adressbereich die VS-Teile hinzugefügt sind.

Übersetzter Befehl kann nur auf die kürzerenOriginalsegmente zugreifen (andernfalls Alarm).

Ein übersetzter Befehl, der auf VS-Datenzugreifen muss, verwendet dafür das GS-Register.(Original-Befehle, die ebenfalls GS verwenden,Wurden zuvor geeignet umgewandelt.)

bs-9.2 42

Neue VMware-Variante für virtualisierbare Intel VT-x:

Umfangreiche Experimente mit Leistungsmessungen zeigen eher Verlangsamung!

K. Adams, O. Ageson: A Comparison of Software and Hardware Techniques for x86 Virtualization. Proc. ASPLOS 2006

bs-9.2 43

(Quelle: Xen)

bs-9.2 44

verwendet ebenfalls dynamische Code-Umwandlung,realisiert aber das VS direkt auf der Hardware(mit Elementen der Paravirtualisierung).

Vorteil: Effizienz, auch durch eigene Treiber

Nachteil: (geringer) Portierungsaufwand für die Gastsysteme

9.2.5.2 VMware ESX Server

Ferner: Migration virtueller Maschinen möglich.Voraussetzung: reale Maschinen imgleichen Storage Area Network!

bs-9.2 45

(Quelle: www.vmware.com/...)

bs-9.2 46

(Quelle: www.vmware.com/...)

Eige

nes

Exem

plar

fü r

jed

e VM

!

bs-9.2 47

Empfehlenswerte Einführung in Virtualisierung:

M. Rosenblum, T. Garfinkel: Virtual Machine Monitors:current technology and future trends.IEEE Computer, May 2005

bs-9.2 48

9.2.6 Virtualisierung auf Betriebssystem-Ebene

Ein Betriebssystem verwaltet verschiedene Bereiche (partitions, containers, ...) mit jeweils fest zugeordneten Ressourcen.

Effekt: Schutz zwischen Bereichen, insbesondere gegenDenial-of-Service-Angriffe

Beispiele: Linux Vserver, Solaris Containers, FreeBSD Jail, ...

bs-9.2 49

(Quelle: Wikipedia ;-)