of 49/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,

  • View
    1

  • Download
    0

Embed Size (px)

Text of 9.2 Virtuelle Maschinen - inf.fu-berlin.de · bs-9.2 2 Was bringt die Virtualisierung? Z.B. Linux...

  • bs-9.2 1

    9.2 Virtuelle Maschinen

    Zur Erinnerung (1.3):

    Virtuelle Maschine (virtual machine, VM) entsteht durchvollstä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 ;-)