Hypervisor

Emulation von Hardware zum Betrieb von virtuellen Maschinen

Hypervisor,auchVirtual-Machine-Monitor(ausenglischvirtual machine monitor,kurzVMM) genannt, ist die Bezeichnung für eine Funktion in modernen Computern, die es erlaubt, eine virtuelle Umgebung (Hardwareressourcen, insbesondereCPU,Speicher,Festplattenspeicherplatz und verfügbarePeripherie) zu definieren, die dann unabhängig von der tatsächlich vorhandenen Hardware als Basis für die Installation von (Gast-)Betriebssystemen dient. Dies geschieht, indem eine abstrahierende Schicht zwischen tatsächlich vorhandenerHardware(und ggf. auf dem System bereits installiertem Betriebssystem) und weiteren zu installierendenBetriebssystemenbereitgestellt wird.

Einige Literatur, insbesondere imMikrokern-Kontext, macht eine Unterscheidung zwischenHypervisorundVirtual-Machine-Monitor(VMM). Dort bilden beide Komponenten denVirtualisierungs-Stackeines bestimmten Computersystems.Hypervisorbezieht sich aufkernel-spaceFunktionalität und VMM aufuser-spaceFunktionalität. Insbesondere in diesen Kontexten ist einHypervisorein Mikrokern, der Virtualisierungsinfrastruktur implementiert, die aus technischen Gründen im Kern laufen muss, wie beispielsweiseIntel VMX.Mikrokerne die Virtualisierungsmechanismen implementieren werden auchMicrohypervisorgenannt.[1][2]Wenn man diese Terminologie aufLinuxanwendet, dann istKVMeinHypervisorundQEMUoder auchCloud Hypervisorsind VMMs, die KVM als Hypervisor nutzen.[3]

Eigenschaften

Bearbeiten

Hypervisoren erlauben den simultanen Betrieb mehrerer Gastsysteme auf einem Hostsystem. Der Hypervisor verwaltet die Ressourcenzuteilung für einzelne Gastsysteme. Er verteilt die Hardware-Ressourcen derart, dass für jedes einzelne Gastbetriebssystem alle Ressourcen bei Bedarf verfügbar sind, so, als ob nur ein Betriebssystem vorhanden wäre. Dies kann durch Hardware-Emulation,Hardware-VirtualisierungoderParavirtualisierungstattfinden. Den einzelnen Gastsystemen wird dabei jeweils ein eigener kompletter Rechner mit allen Hardware-Elementen (Prozessor, Laufwerke, Arbeitsspeicher usw.) vorgespielt.

Die tatsächlich vorhandene Hardwareumgebung wird als Hostsystem bezeichnet. Das ggf. darauf installierte Betriebssystem wird als Hostbetriebssystem bezeichnet.

Die virtuelle Umgebung mit dem installierten Gastbetriebssystem (oft auch alsVirtuelle Maschineoder Gastsystem bezeichnet) ist auf allen Hostsystemen lauffähig, auf denen der Hypervisor installiert bzw. lauffähig ist. Es spielt dabei aus Sicht des Gastsystems keine Rolle, auf welcher Hardwareumgebung der Hypervisor selbst installiert ist, da der Hypervisor von der tatsächlich vorhandenen Hardware abstrahiert. Es ist die Aufgabe des Hypervisors, die Ressourcen der Hardware bedarfsgerecht an die virtuellen Maschinen zu verteilen.[4]

In ihrem Artikel „Formal Requirements for Virtualizable Third Generation Architectures “von 1974 legtenGerald J. PopekundRobert P. Goldbergdie formalen Grundlagen und stellen diegrundlegenden Anforderungenan eine Architektur dar, um Hypervisoren zu unterstützen.[5]

Hypervisoren können, wenn die Voraussetzungen wie im o. g. Artikel durch die Hardware erfüllt werden, vollständig softwarebasiert umgesetzt werden, d. h., es sind grundsätzlich keine virtualisierungsspezifischen Erweiterungen im Prozessor erforderlich. Da sich durch Erweiterungen im Prozessor (Befehlssatz) jedoch sowohl Geschwindigkeits- als auch Sicherheitsvorteile erzielen lassen, bieten viele Prozessorarchitekturen hardwareseitig implementiert Befehlserweiterungen für die Virtualisierung an.[6]

Wortherkunft

Bearbeiten

„Hyper “stammt aus dem Griechischen und bedeutet „über “. „Visor “lässt sich aus dem Lateinischen „videre “ableiten, was „sehen “bedeutet. Sinngemäß übersetzt handelt es sich also um ein System, welches als „Aufseher “etwas bzw. weitere Systeme „überblickt “bzw. „etwas überwacht “.

Klassifizierung

Bearbeiten
Typ-1-Hypervisor
Typ-2-Hypervisor

In seiner Doktorarbeit „Architectural Principles for Virtual Computer Systems “[7]von 1973 unterscheidet R. Goldberg zwei Typen von Hypervisoren:

  • EinTyp-1-Hypervisor (nativeoderbare-metal) setzt direkt auf derHardwareauf und benötigt keine vorherige Betriebssystem-Installation. Das setzt allerdings voraus, dass die Hardware des Hostsystems vom Typ-1-Hypervisor durch entsprechende Treiber unterstützt wird.
  • EinTyp-2-Hypervisor (hosted) setzt auf einem vollwertigenBetriebssystemauf dem Hostsystem auf und nutzt dieGerätetreiberdes Betriebssystems, um auf die Hardware des Hostsystems zuzugreifen. Typ-2-Hypervisoren sind daher auf allen Hostsystemen lauffähig, auf denen vom Hypervisor unterstützte Hostbetriebssysteme lauffähig sind.

Der Begriff Hypervisor wird in Veröffentlichungen und in der Presse zum Teil uneinheitlich verwendet, da er in einigen Quellen auf Typ 1[8]oder auf Typ 2 mitParavirtualisierungbeschränkt wird. Quellen vonIBMverwenden den Begriff Hypervisor allgemein, also für Typ 1 und Typ 2.[9]Auch Quellen von VMware sprechen von Bare-Metal-Hypervisor (Typ-1), um sie von Typ-2-Hypervisoren zu unterscheiden, und verwenden den Begriff Hypervisor damit für Kategorie Typ-1 wie auch Typ-2.[10]

Wurzeln der Virtualisierung im Mainframe-Bereich

Bearbeiten

Die ersten Hypervisoren, die Virtualisierung ermöglichten, waren das von IBM entwickelte TestwerkzeugSIMMONauf Basis der damals neuenSystem/360-Hardware sowie das ForschungssystemCP-40,das in der ersten Version 1967 fertiggestellt wurde und später zur ersten Version von IBMsCP/CMS-Betriebssystem mit der Bezeichnung CP-40/CMS weiterentwickelt wurde. CP-40/CMS lief ebenfalls auf der System/360-Hardware, die so modifiziert wurde, dass zum ersten Mal eine Implementierung dervirtuellen Speicherverwaltungverfügbar war. Vor 1967 war Virtualisierung in einigen Betriebssystemen nur in dem Sinne implementiert, dass mehrere Anwendungsprogramme zeitgleich ausgeführt werden konnten (zum BeispielCTSSund IBM M44/44X) und sich die gleiche Hardware (transparent für die Anwendungsprogramme) teilten. Mit CP-40/CMS war es zum ersten Mal möglich, mehrere Betriebssysteme in separaten virtuellen Maschinen zu betreiben.

Für dasIBM System/360-67wurde CP-40 komplett reimplementiert und alsCP-67zum ersten auch kommerziell verfügbaren Produktionssystem mit implementierter Komplett-Virtualisierung. Die erste Auslieferung der Hardware erfolgte 1967 – sie enthielt bereits Features wie in Hardware implementierte Page Translation Tables für virtuellen Speicher und andere Techniken, die es erlaubten,KernelTasks, I/O- und Interrupt Handling zu virtualisieren. Im gleichen Jahr wurden CP-40 und CP-67 auf ersten Großrechnern eingesetzt. Von 1968 bis 1972 stellte IBM seinen Kunden den Source Code von CP/CMS ohne Support zur Verfügung.

CP/CMS war Teil von IBMs Anstrengungen, ein robustes Time-Sharing-System für seineGroßrechnerbereitzustellen. Da durch den Hypervisor mehrere Betriebssysteme parallel ausgeführt werden konnten, erhöhte er Zuverlässigkeit und Robustheit: Selbst wenn ein Betriebssystem ausfiel, konnten die anderen Betriebssysteme unbeeinflusst weiterarbeiten. Es erlaubte außerdem den parallelen Betrieb unterschiedlicher (zum Teil experimenteller) Versionen der Betriebssysteme.

IBM kündigte dasSystem/370als Nachfolger derSystem/360-Serie 1970 ohne Virtualisierungsunterstützung an, fügte diese Funktionalität jedoch 1972 hinzu. Seitdem ist Virtualisierung ein Bestandteil aller Nachfolger-Systeme (alle modernen Systeme, wie dasSystem z,sind voll rückwärtskompatibel zu den Serie-S/360 Großrechnern der 1960er Jahre). Die Ankündigung der Unterstützung der Virtualisierung 1972 enthielt auch die Ankündigung desVM/370-Betriebssystems, einer Reimplementierung des CP/CMS-Systems für die S/370-Serie. Im Unterschied zu CP/CMS bot IBM Software-Support für diese Version, obwohl die Auslieferung lange Zeit immer noch in Form von Sourcecode erfolgte. Das Kürzel „VM “stand fürVirtual Machine– man wollte damit betonen, dass nun alle und nicht nur einige Hardware-Interfaces virtualisiert waren. Sowohl VM als auch CP/CMS erfreuten sich großer Akzeptanz seitens Universitäten, Forschungseinrichtungen, Geschäftskundenanwendern und innerhalb IBM selbst. Trotzdem verloren VM bzw. CP/CMS nach einer Reihe von heftigen Disputen und Diskussionen innerhalb von IBM zwischen „Time-Sharing “-Anhängern und „Batch-Processing “-Anhängern gegenüber dem batch-gestütztenMVS-Betriebssystem an Boden – schließlich wurde VM jahrzehntelang als IBMs „anderes “Betriebssystem neben MVS angesehen. Nach dem Jahr 2000 gewann VM wieder stärker an Bedeutung, da es in Form vonz/VMunter anderem als Plattform für „Linux for zSeries “diente.

Im Jahr 1985 führte IBM den PR/SM Hypervisor und mit ihm dasLogical Partitioninggenannte Konzept ein, das auch heute noch auf den PlattformenSystem/390,zSeries,pSeriesundiSerieseingesetzt wird.

Ausprägungen

Bearbeiten

Unix- und Linux-Server-Hypervisoren

Bearbeiten

Die großen Unixhersteller, insbesondere Sun Microsystems, HP, IBM and SGI, verkaufen Serverlösungen mit Virtualisierungsunterstützung bereits seit Ende der 1990er Jahre. Diese Lösungen waren meist nur mit sehr großen und entsprechend teuren Systemen erhältlich. Es gab aber auch einige im mittleren Preissegment angesiedelte Lösungen, wie z. B. IBMs pSeries Server, Sun/Oracles CoolThreads Server und HPs Superdome Server.

Mehrere Einflussfaktoren führten ab 2005 zu einem Wiederaufleben der Bemühungen um die Virtualisierungstechnologien unter den Unix- und Linux-Serverherstellern:[11]

  • Leistungsfähigere Hardware erlaubt es jeder einzelnen Maschine, mehr Dinge parallel zu bearbeiten
  • Anstrengungen, das Servermanagement und die Konsolidierung vorhandener Server zu vereinfachen
  • Die Notwendigkeit, große Multiprozessor- und Servercluster-Installationen – zum Beispiel in Server- und Render Farmen – zu verwalten
  • Verbesserung von Sicherheit, Zuverlässigkeit und größere Hardwareunabhängigkeit durch Hypervisor Installationen
  • Die Möglichkeit, komplexe, betriebssystemabhängige Applikationen auf verschiedenen Hardwareplattformen und Betriebssystemen zu betreiben

In den folgenden Abschnitten sind die durch die großen Serverhersteller angebotenen Hypervisor-Technologien dargestellt:

Sun/Oracle

Bearbeiten

ObwohlSolarisimmer das einzige offiziell durchSun/Oracleunterstützte Gastsystem auf ihrem Logical Domains Hypervisor war, stehen seit Ende 2006 Portierungen vonLinux(UbuntuundGentoo) undFreeBSDzur Verfügung, die ebenfalls auf dem Sun/Oracles Logical Domains Hypervisor lauffähig sind. Auch Wind River „Carrier Grade Linux “läuft auf Suns Hypervisor.[12]Volle Virtualisierung auf Basis der SPARC-Prozessoren erwies sich als relativ einfach: Seit seiner Einführung Mitte der 1980er Jahre hatte Sun bewusst darauf geachtet, die Architektur frei von Artefakten zu halten, die der Virtualisierung entgegengestanden hätten.[12]

Sun’s Logical Domains Hypervisor ist ein Typ-1-Hypervisor, da er direkt auf der Hardware ausgeführt wird und die Ausführung der Gastsysteme steuert/überwacht.

HPnennt seine Technologie, um mehrere Gastsysteme auf seinen auf demItanium-Prozessor basierenden Systemen zu betreiben, „Integrity Virtual Machines “(Integrity VM). Die Itanium-Plattform unterstütztHP-UX,Linux, Windows undOpenVMSals Gastbetriebssysteme. Das HP-eigene HP-UX-Betriebssystem ist jedoch am besten auf die „Integrity VM “abgestimmt und bietet Virtualisierungsunterstützung mit Features wie Prozessor- und Speicher-Hotswaps(d. h. Austausch von Prozessoren oder Speicher im laufenden Betrieb) sowie Kernel-Updates ohne Reboot, die den anderen Betriebssystemen vorenthalten bleiben.

Der Integrity VM Hypervisor ist im Sinne der (Typ-1, Typ-2) Klassifizierung eine Hybridform. Der Integrity VM Hypervisor basiert im Wesentlichen auf HP-UX und läuft direkt auf der Hardware im Sinne eines Typ-1-Hypervisors. Die Gastbetriebssysteme laufen parallel zum Integrity VM Hypervisor, der als Spezialform des Betriebssystems HP-UX gleichzeitig auch prinzipiell die Ausführung von HP-UX-Anwendungen zulassen würde (auch wenn dies durch HP nicht empfohlen wird). Aus diesem Grund kann hier nicht von einem reinen Typ-1-Hypervisor, sondern nur von einer Hybridform gesprochen werden.

IBMbietet Virtualisierungsunterstützung durch eineLogical Partitioning(LPAR) genannte Technologie auf den PlattformenSystem/390,zSeries,pSeriesundiSeries.Der von IBM „PowerVM “genannte Hypervisor arbeitet auf allen genannten Plattformen als in der Firmware implementierter bare-metal- (Typ-1-) Hypervisor, der Isolation zwischen den logischen Partitionen (LPARs) gewährleistet. Prozessor-Kapazität wird den LPARs entweder explizit zugeteilt oder auf Basis verfügbarer Kapazität dynamisch dort zugeteilt, wo sie wegen hoher Last gerade am dringendsten benötigt wird. LPAR-Gruppen können gemeinsame CPU-Kapazität in Form eines Pools verwalten lassen – IBM bezeichnet dieses Feature als Multiple Shared-Processor Pools (MSPPs) und stellt es in Servern mit dem POWER6-Prozessor zur Verfügung. LPAR und MSPP-Kapazitätszuweisungen können angepasst werden. Speicher wird jedem LPAR entweder beim Start fest zugewiesen oder dynamisch bereitgestellt und bezüglich des Adressraums von der PowerVM kontrolliert (zum Schutz der Adressräume der unterschiedlichen VMs). I/O-Adapter können entweder exklusiv einem LPAR „gehören “oder zwischen LPARs über einen Mechanismus mit der Bezeichnung Virtual I/O Server (VIOS) geteilt werden. Der Power Hypervisor sorgt durch Hotswap-Features für Prozessoren, Speicher, I/O-Adapter, Ventilatoren, Festplatten, Controller etc. (welche Features genau unterstützt werden, hängt vom genauen Modell ab) für hohe Ausfallsicherheit, kurze Wartungsfenster und hohe Verfügbarkeit.

x86-Hypervisor

Bearbeiten

2005 haben dieCPU-Herstellerimx86-Bereich begonnen, Virtualisierungsunterstützung in ihre Produkte zu integrieren: Beispielsweise haben Intel-ProzessorenIntel VT-x(codenamed Vanderpool) und Intel APICv zur Interrupt-Virtualisierung integriert, AMD-ProzessorenAMD-V(codenamed Pacifica) und AMD AVIC zur Interrupt-Virtualisierung und VIA-Prozessoren VIA VT integriert. Virtualisierungssoftware, die diese Prozessorerweiterungen zur Virtualisierung ausnutzen, sind z. B.VirtualBox,Virtual PC,VMware Workstation,Parallels Desktop for Mac,Xen,VMware ESX/ESXi,KVMundHyper-V.

BeiHyper-V(Codename „Viridian “– früher auch „Windows Server Virtualization “) handelt es sich um einen von Microsoft erstmals 2008 ausgelieferten Typ-1-Hypervisor;[13]Windows-Versionen abWindows Vistaenthalten Erweiterungen, um die Performance zu optimieren, wenn sie basierend auf Hyper-V betrieben werden.

BeiVMware ESX/ESXiundXenhandelt es sich ebenfalls um einen Typ-1-Hypervisor.

BeiVirtualBox,Virtual PC,VMware WorkstationundParallels Desktop for Machandelt es sich hingegen um Typ-2-Hypervisoren, die ein Basisbetriebssystem zur Installation benötigen.

Storage-Hypervisoren

Bearbeiten

Hypervisor für eingebettete Systeme

Bearbeiten

Daeingebettete Systeme(Embedded-Systeme) häufig nur stark beschränkte Ressourcen zur Verfügung haben (insbesondere batteriebetriebene, mobile oder kartenintegrierte „on-chip “Systeme), sind wichtige Anforderungen an Hypervisoren im Embedded-Bereich insbesondere geringer Speicherplatzverbrauch und geringer Verwaltungsaufwand in Form von zusätzlicher CPU-Rechenzeit. Hypervisoren für Embedded-Echtzeitbetriebssysteme(RTOS) als Sonderform müssen zusätzlich bereits unter Berücksichtigung von strengenEchtzeit-Anforderungen entworfen werden.

Schließlich existieren in der Welt der eingebetteten Systeme viel mehr konkurrierende Architekturen als in der vergleichsweise überschaubaren Welt derx86-Architekturender PC-Welt. Unterstützung für Virtualisierung durch das Betriebssystem erfordert aber mindestens Speicherschutzmechanismen in Form einerMemory Management Unitoder zumindest einer einfachen Speicherschutzeinheit, und eine Unterscheidung zwischen einemprivilegierten und einem Benutzermodusauf Betriebssystemebene. Diese Anforderungen schließen die Umsetzung der Virtualisierung auf vielen Embedded-Plattformen bereits aus. Die o. g. Features werden aber mindestens von x86-,MIPS-,ARM-undPowerPC-Architekturen als weitverbreiteten Architekturen im Embedded-Umfeld unterstützt.[14]

Da Hersteller von eingebetteten Systemen normalerweise auch ihr eigenes Betriebssystem mit dem Chip mitliefern und damit volle Hoheit über Betriebssystemänderungen haben, besteht weniger Bedarf für volle Virtualisierung als im PC-Bereich (in dem es eine klare Trennung zwischen Hardware- und Betriebssystemherstellern gibt). Stattdessen machen Performancevorteile derParavirtualisierung[15]diese häufig zur Technologie der Wahl im Embedded-Bereich.ARMbietet mit demARM Cortex A15aber auch einen Highend-Embedded-Prozessor mit Unterstützung für volle Hardware-Virtualisierung an.

Weitere Unterschiede zwischen der Virtualisierung im Server/Desktop-Bereich und Embedded-Umgebungen liegen in Anforderungen bezüglich effizienten Sharings von Ressourcen zwischen virtuellen Maschinen, Inter-VM-Kommunikation mit hoher Bandbreite und geringer Latenz sowie feingranularer Kontrolle des Informationsflusses zwischen VMs.[16]

Anwendungsmöglichkeiten

Bearbeiten

Auslastung von Hardware

Bearbeiten

Vor der Virtualisierung benötigte jedes System eigene Hardware. Die mit Abstand meiste Zeit verbringt moderne Hardware jedoch im Leerlauf. Folglich werden Energie und Platz verschwendet. Durch den Betrieb von mehreren Systemen auf derselben Hardware lassen sich die Ressourcen der Hardware besser auslasten und es wird weniger Hardware benötigt. Dies führt zu direkten Kosteneinsparungen für die Betreiber.

Softwareentwicklung

Bearbeiten

Virtuelle Maschinen mit unterschiedlichen Gastbetriebssystemen erlauben es dem Entwickler, seine Software mit geringem Aufwand auf den gewünschten Zielplattformen zu testen. Falls die zu testende Software gravierende Fehler enthält, beschädigen diese nur das Gastsystem und haben keine Auswirkungen auf das Hostsystem.

Ausfallsicherheit

Bearbeiten

Durch den Einsatz virtueller Speicherpools oder Failover-Cluster, deren Knoten auf die VMs mehrerer physischer Servern verteilt wurden, lässt sich kostengünstig Ausfallsicherheit erreichen.

Literatur

Bearbeiten
  • R. Goldberg:Architectural Principles for Virtual Computer Systems.Ph.D. thesis, Harvard University, Cambridge, MA, 1972.

Einzelnachweise

Bearbeiten
  1. Udo Steinberg, Bernhard Kauer:NOVA: A Microhypervisor-Based Secure Virtualization Architecture.EuroSys 2010. In:Proceedings of the 2010 ACM European Conference on Computer Systems.Paris, France 2010 (englisch,hypervisor.org[PDF; abgerufen am 28. September 2024]).
  2. Hedron Microkernel.In:GitHub.Cyberus Technology,abgerufen am 27. August 2024(amerikanisches Englisch).
  3. Cloud Hypervisor.In:GitHub.Cloud Hypervisor Project,abgerufen am 27. August 2024(amerikanisches Englisch).
  4. Microsoft Hyper-V,Rheinwerk Computing
  5. Gerald J. Popek and Robert P. Goldberg:Formal Requirements for Virtualizable Third Generation Architectures.In:Communications of the ACM.17. Jahrgang,Nr.7,1974,S.412–421,doi:10.1145/361011.361073(englisch).
  6. Everything you need to know about the Intel Virtualization Technology(Mementovom 19. August 2014 imInternet Archive)
  7. Robert P. Goldberg:Architectural Principles for Virtual Computer Systems.1. Februar 1973 (dtic.mil[abgerufen am 24. Januar 2017]).Architectural Principles for Virtual Computer Systems(Mementovom 24. Januar 2017 imInternet Archive)
  8. Alles über Virtualisierung.In:Computerwoche,abgerufen am 16. August 2014.
  9. IBM Systems Virtualization,IBM Corporation, Version 2 Release 1 (2005), available on-line atpublib.boulder.ibm(PDF; 247 kB) – description of basic concepts
  10. Was ist vSphere Hypervisor?Abgerufen am 8. Juli 2022.
  11. virtualization quickly becoming open source ‘killer app’(Mementovom 17. April 2011 imInternet Archive)
  12. abWind River To Support Sun’s Breakthrough UltraSPARC T1 Multithreaded Next-Generation Processor(Mementovom 10. November 2006 imInternet Archive)
  13. Peter Galli:Microsoft Sheds More Light on Windows Hypervisor Technology.In:eweek.5. April 2006,abgerufen am 31. Januar 2023(englisch).
  14. Marius Strobl:Virtualization for Reliable Embedded Systems.Hrsg.: GRIN Publishing GmbH. Munich 2013,ISBN 978-3-656-49071-5,S.5–6(grin).
  15. Virtualization | SYSGO.Abgerufen am 8. Juli 2022.
  16. Gernot Heiser:The role of virtualization in embedded systems.Eurosys '08: Eurosys 2008 Conference Glasgow Scotland 1 April 2008. In:Proc. 1st Workshop on Isolation and Integration in Embedded Systems (IIES'08).April 2008,S.11–16(englisch,ertos.nicta.au(MementodesOriginalsvom 21. März 2012 imInternet Archive) [abgerufen am 16. August 2014]).