# Xen

Xen (Aussprache [ˈzɛn]), auch Xen Project (in Abgrenzung zu darauf basierenden kommerziellen Produkten), ist ein Hypervisor, also eine Software, die den Betrieb mehrerer virtueller Maschinen auf einem physischen Computer erlaubt. Sie entstand an der britischen Universität Cambridge und wird heute von dem US-Unternehmen Citrix Systems weiterentwickelt. Der Name leitet sich von der Vorsilbe xeno (zu altgriechisch ξένος xénos „Fremder, Gast“) ab.

## Technische Details

Xen ist ein Typ-1-Hypervisor (auch Virtual Machine Monitor, VMM, genannt), der direkt auf einer Hardware läuft. Xen kann mehrere Betriebssysteme in virtuellen Maschinen starten, den sogenannten Domänen. Für diese Betriebssysteme sind weder der Hypervisor noch andere Domänen „sichtbar“. Vom Prinzip her ist das Vorgehen vergleichbar mit virtuellem Speicher und Prozessen: Durch den virtuellen Speicher kann jeder Prozess (hier: das virtuelle System) den Speicher so nutzen, als wäre er der einzige Prozess, der vom Betriebssystem ausgeführt wird. Genauer gesagt: Der Hypervisor weist dem virtuellen System Teilbereiche des gesamten Hauptspeichers zu. Diese erscheinen dem virtuellen System als zusammenhängender Adressraum, so wie der physische Speicher einem nicht virtuellen System erscheint. Er kann vom virtuellen System entsprechend und exklusiv genutzt werden.
Eine besondere Bedeutung hat die erste Domäne, die von Xen gestartet wird: Diese Domäne ist privilegiert und dient der Interaktion mit dem eigentlichen Hypervisor. Die privilegierte Domäne, Dom0 genannt, kann andere Domänen starten, stoppen und verwalten. Dazu muss diese Verwaltungsfunktionalität in das Betriebssystem integriert werden, das in der Dom0 läuft.
Um völlig transparent für die unprivilegierten Domänen, häufig DomU genannt, zu sein, benötigt Xen einen Hauptprozessor mit der Befehlssatzerweiterung Secure Virtual Machine, wie beispielsweise Intel VT oder AMD-V. Mit dieser Hardware müssen die Betriebssysteme, die in den Domänen laufen, nicht angepasst werden – sie „bemerken“ nicht, dass sie die Hardware in Wirklichkeit mit anderen Systemen teilen. Diese Betriebsart wird als volle Virtualisierung oder Hardware Virtual Machine (HVM) bezeichnet. Wird auf anderer Hardware virtualisiert, haben die jeweiligen Kernels vollen Hardwarezugriff und könnten aufgrund fehlerhaften oder böswilligen Codes auf jeweils fremde Ressourcen (z. B. Hauptspeicher) zugreifen, was aus Gründen der Stabilität und Sicherheit des Ganzen nicht erwünscht ist.
Die Effizienz virtualisierter Systeme kann gesteigert werden, indem Unterstützung für den Betrieb als DomU in das Betriebssystem integriert wird. Dieser Ansatz wird als Paravirtualisierung bezeichnet und erfordert eine Modifikation des Systems, das in einer DomU laufen soll.

## Unterstützte Betriebssysteme

Der Linux-Kernel stellt ab Version 2.6.21 die Rahmenbedingungen für den Betrieb unterhalb eines beliebigen Hypervisors in Form von sogenannten paravirt ops bereit. Ab Version 2.6.23 ist eine eingeschränkte Unterstützung für den Betrieb unter Xen integriert. Dieser Basis-Support unterstützte jedoch zahlreiche Möglichkeiten von Xen nicht, beispielsweise das (dynamische) Durchreichen von PCI-Geräten oder dynamische Speichervergrößerungen. Ab Version 3.0 des Kernels unterstützt dieser Xen vollständig.
In den Linux-Distributionen openSUSE ist Xen ab Version 9.3 und in Fedora ab Version 4 integriert. Ebenfalls enthalten ist Xen im SUSE Linux Enterprise Server (SLES) ab Version 10 und im Red Hat Enterprise Linux 5 (RHEL5). Debian enthält ab Version 4 (Etch) einen Xen-Kernel und Ubuntu ab Version 12.04 (Precise Pangolin). Gentoo Linux und Arch Linux bieten beide Pakete für vollständige Xen-Unterstützung.
Bei den Versionen bis Xen 3.x ist für den Betrieb als Dom0 oder als vollwertige native DomU nur der „offizielle“ Linux-Kernel-Quellcode von Xen verwendbar, der lediglich in der Version 2.6.18.8 vorliegt. Durch die aktive Entwicklung am Linux-Kernel lässt sich der Patch für diese Version nicht ohne erheblichen Aufwand auf einen aktuellen Kernel anwenden. So wurde die aufwändige Praxis, die Xen-Patches an aktuellere Versionen anzupassen, beispielsweise von Debian eingestellt.
Seit Xen 4.0 unterstützt Xen per default auch die Standard-Kernel-Option PVOps für seine dom0-Kernel in Kernel-Version 2.6.31.x. Weiter ist eine Long-Term-Support-Version (LTS) unter pvops und dem Linux-Kernel 2.6.32.x für dom0-Kernel verfügbar. Trotzdem bleibt die Kompatibilität zum bisherigen 2.6.18-Kernel auch weiterhin erhalten und es sind weitere Xen-Patches für diese Version sowie auch für einige Kernel mit Forward-Patches (wie dem Kernel von RHEL 5.x) geplant.
NetBSD 2.0 unterstützte Xen 1.2 als Host und Gast sowie Xen 2.0 nur als Gast, die Version NetBSD 3.1 unterstützt Xen 2.0 komplett, also als Host und Gast, sowie Xen 3.0 als Gast. Seit NetBSD 4.0 wird Xen 3.0 vollständig unterstützt.
Sun hat Xen Anfang Oktober 2007 mit Nevada build 75 unter dem Namen xVM vollständig in OpenSolaris integriert, davor existierten Testversionen.
Auf der Novell BrainShare Conference stellte Novell 2005 eine Portierung von Netware auf Xen vor.
An einer Portierung von ReactOS auf Xen wird seit 2005 gearbeitet.

## Unterstützer und Zusammenarbeit

Zu den Unterstützern von Xen zählen weltweit agierende IT-Konzerne – selbst direkt stark untereinander konkurrierende Unternehmen vereinen sich unter diesem Dach, unter anderem: Microsoft, Oracle, Intel, AMD, IBM, HP, Red Hat und SUSE.
Die Open-Source-Software Xen entstand ursprünglich an der Universität Cambridge. Die Entwickler haben mit XenSource ein Unternehmen gegründet, das Xen zum Industriestandard machen soll. Die Firma XenSource wurde im August 2007 für 500 Millionen US-Dollar durch die Firma Citrix Systems übernommen.
Anfang 2013 wurde Xapi dann zusammen mit Xen.org wieder zurück an das Xen-Project übertragen, das unter dem Dach der Linux-Foundation arbeitet. Xapi ist heute demnach ein Unterprojekt des Xen-Projects.

## Kommerzielle Produkte

Auf Xen basieren unter anderem die Citrix Produkte XenServer und XenClient.

## Versionen

| Version | Veröffentlichung | Bemerkungen |
| 1.0 | 9. September 2003 | |
| 2.0 | 5. November 2004 | |
| 3.0 | 5. Dezember 2005 | Unterstützung von Intel VT für HVM-Gäste. Unterstützung der IA-64-Architektur. Bis zur Version 3.0.4 kamen außerdem folgenden Features hinzu: Unterstützung der AMD-Virtualisierungs-Technik. Unterstützung der PowerPC-Architektur. Unterstützung eines grafischen Framebuffers für paravirtualisierte Gäste. |
| 3.1 | 18. Mai 2007 | |
| 3.2 | 17. Januar 2008 | PCI-Passthrough und ACPI-S3-Standby-Modus für das Host-System. |
| 3.3 | 24. August 2008 | Verbesserungen am PCI-Passthrough und am Powermanagement. |
| 3.4 | 18. Mai 2009 | Enthält eine erste Version der „Xen Client Initiative“, kurz XCI. |
| 4.0 | 7. April 2010 | Schafft die Voraussetzungen, um einen mittels PVOps implementierten dom0-Kernel nutzen zu können. Ein Kernel in Version 2.6.31 wurde speziell für diesen Zweck angepasst, da die auf PVOps aufbauenden Funktionen des offiziellen Kernels noch nicht den Betrieb als dom0 unterstützen (Stand Juli 2010). |
| 4.1 | 25. März 2011 | Unter anderem: Unterstützung für mehr als 255 Prozessoren, Verbesserung der Stabilität. |
| 4.2 | 17. September 2012 | Unter anderem neues Standardmanagementwerkzeug (XL statt xend), Unterstützung größerer Systeme (bis zu 4095 Prozessoren), Fortentwicklungen des Sicherheitssubsystems und Bemühungen um bessere Dokumentation. |
| 4.3 | 9. Juli 2013 | Experimenteller Support für ARM-Virtualisierung, NUMA-aware scheduling, Support für openvswitch als Bridging-Mechanismus, verbesserte Sicherheit, PCI-Passthrough. |
| 4.4 | 10. März 2014 | Produktreifer ARM-Support, stabiler „libvirt“ support für „libxl“, skalierbares Event-Channel-Interface, Nested Virtualization auf Intel-Hardware. |
| 4.5 | 14. Januar 2015 | Verschlankung des Codes, neue PVH-Extension, xf oder libxf anstatt xen |
| 4.6 | 13. Oktober 2015 | |
| 4.7 | 20. Juni 2016 | |
| 4.8 | 5. Dezember 2016 | |
| 4.9 | 28. Juni 2017 | |
| 4.10 | 12. Dezember 2017 | |
| 4.11 | 10. Juli 2018 | |
| 4.12 | 2. April 2019 | |
| 4.13 | 18. Dezember 2019 | |
| 4.14 | 24. Juli 2020 | |
| 4.15 | 8. April 2021 | |
| 4.16 | 2. Dezember 2021 | |
| 4.17 | 14. Dezember 2022 | |