XEN

Das Produkt XEN ist aus einem Forschungsprojekt an der University of Cambridge entstanden. Die erste XEN Release 2.0 wurde bereits im November 2004 veröffentlicht.

Bei XEN wird die Virtualization Layer durch den XEN Hypervisor abgebildet, welcher direkt auf der Hardware betrieben wird.
Ein Server mit XEN Virtualisierung besteht aus drei Komponenten:

  • XEN Hypervisor
  • Dom0 (Domain Null)
  • 1-n DomU

Der Xen Hypervisor läuft direkt auf der Hardware(=Type 1) und steuert den Zugriff auf HW Ressourcen wie CPU, Memory, Disk I/O.

XEN Architektur

Die Dom0 ist die sogenannte „Privileged Domain“, ein Gastsystem mit besonderen Rechten. Sie dient als Frontend für den Hypervisor und hat die Verantwortung für die Verwaltung der restlichen Virtual Machines.

Die DomU ist die sogenannte „Unprivileged Domain“, die eigentliche „Guest Virtual Machine“, welche nur über den Hypervisor Zugriff auf die Hardware erhält. Für PCI Devices kann ein direkter Zugriff konfiguriert werden (PCI-passthrough).

XEN Architektur

Paravirtualisierung

Das Produkt XEN fällt in die Kategorie der Paravirtualisierung. Das Gastsystem kommuniziert mit dem Hypervisor über sogenannte Hypercalls. Das ist aber nur möglich, wenn der Kernel des Gastsystems für die Virtualisierung modifiziert wurde.
Zum Beispiel kann der Gast nicht direkt auf den physikalischen Memory zugreifen. Wenn Speicher benötigt wird, wird dieser mittels Hypercall beim Hypervisor angefordert. Paravirtualisierung bietet sehr gute Performanceeigenschaften.

Hardware Virtualisierung

Die erforderliche Anpassung des Gast OS war auch der Grund, warum anfänglich keine virtuellen Windows Gastsysteme betrieben werden konnten. Erst durch die Möglichkeit der Hardware Virtualisierung HVM mit Hilfe spezieller Prozessoren (INTEL-VT, AMD-V) konnten auch nicht modifizierbare Betriebssysteme als VM betrieben werden.

CPU Ring Modell

Ein Programm wird auf einer CPU im sogenannten „Usermode“ ausgeführt. Das bedeutet, dass es nicht uneingeschränkt auf Ressourcen zugreifen kann.
Hingegen werden im „Kernelmode“ jene Softwarekomponenten betrieben, welche für den Zugriff auf HW Ressourcen privilegiert sind. Zentrale OS Funktionalitäten wie Memory Management, CPU Scheduler oder auch Hardwaretreiber fallen in diese Kategorie.

Das CPU Ring Modell veranschaulicht diese Abgrenzung. Programme laufen im Ring 3 (=Usermode) und können nicht eigenmächtig in einen höheren CPU Ring wechseln.
Ruft ein Prozess eine privilegierte Operation auf erzeugt die CPU eine Exception. Diese Exception wird dann vom privilegierten Ring behandelt.

In nicht virtualisierten Systemen laufen die Programme im Ring 3 und Systemcalls werden vom Kernel in Ring 0 behandelt.

CPU Ringe

Wie werden im Fall von XEN die CPU Ringe verwendet?

Der XEN Hypervisor wird im Ring 0 betrieben. Der Kernel des Gast Betriebssystems ist im Ring 1 angesiedelt und das Programm selbst läuft unverändert im Usermode im Ring 3.

XEN Hypercall