# Xen

Xen is een vrije, opensource- en virtuele machinemonitor (VMM) of hypervisor voor x86-, Itanium- en PowerPC-systemen. Het is software die draait op een host-besturingssysteem die het mogelijk maakt om meerdere gast-besturingssystemen tegelijk op dezelfde hardware te draaien. Deze vorm van virtualisatie wordt bereikt door gebruik te maken van een techniek die paravirtualisatie wordt genoemd. Het wordt ontwikkeld door het Xen Project, geleid door Ian Pratt van XenSource.
Xen levert beveiligde isolatie, beheer van resources, kwaliteitsgaranties en livemigraties van virtuele machines. Op oudere computersystemen moeten de besturingssystemen specifiek aangepast ("geporteerd") worden voordat ze op Xen kunnen draaien (ook al blijft de compatibiliteit voor gebruikerapplicaties behouden). Op processoren met Intel VT of AMD-V-extensies kan Xen ieder besturingssysteem ongemodificeerd draaien. Paravirtualisatie maakt gebruik van hardwarematige virtualisatie voor betere prestaties en beveiliging.

## Gebruik

Virtuele machines worden veelal gebruikt door IBM, HP en anderen op mainframes en servers. Zij worden ook in toenemende mate gebruikt door hosting providers op het internet om virtuele toegewijde servers (virtual private server, VPS) te leveren. Virtualisatie maakt het mogelijk om op een fysieke server een (groot) aantal virtuele servers te gebruiken waardoor de fysieke server een veel groter deel van de tijd gebruikt wordt. Daarnaast levert het gebruik van virtuele servers inherent beveiliging; een gecompromitteerd VPS heeft geen consequenties voor andere VPS'en. Virtualisatie kan ook gebruikt worden om verschillende en niet-uitwisselbare besturingssystemen op dezelfde computer te draaien. De ondersteuning van Xen voor het live migreren van een virtuele machine (naar fysiek andere hardware) maakt verdeling van de belasting (load balancing) mogelijk en maakt een einde aan de noodzaak tot uitschakelen bij onderhoud en storingen.
Xen kan op twee manieren in de markt gezet worden: als een virtualisatieplatform, zoals XenSource met hun XenEnterprise-product, of geïntegreerd in een besturingssysteem. Een voorbeeld van de laatste optie is de toevoeging van Xen in Novells Linuxdistributie SLES 10, Red Hats RHEL 5 en Suns Solaris 10. Microsoft gaat ook paravirtualisatie via Xen ondersteunen in het aankomende Windows Server-besturingssysteem (codenaam "Longhorn").
Een resultaat van Xens lichtgewichtarchitectuur is dat alle x86-besturingssystemen paravirtualisatie gaan ondersteunen in hun volgende grote versie. Virtualisatiemarktleider VMware heeft ook aangekondigd paravirtualisatie voor Linux te gaan ondersteunen om prestatie- en beveiligingsredenen.

## Paravirtualisatie met Xen

Xen gebruikt een techniek genaamd paravirtualisatie om hogere prestaties te bereiken (dat wil zeggen dat er in de meeste gevallen een prestatievermindering van rond de 2% is, met in het ergste geval een prestatievermindering van 8%). In tegenstelling tot traditionele virtuele machinemanagers, die voorzien in een softwaregebaseerde omgeving precies zoals de gesimuleerde hardware, was bij Xen voor versie 3.0 een Intel VT-ondersteuning vereist om een gastbesturingssysteem eerst te porteren naar de Xen API. Tot nu toe is dit gebeurd voor Plan 9, NetBSD, OpenBSD, Linux, FreeBSD en OpenSolaris. Tijdens Brainshare 2005 toonde Novell een portering van NetWare naar Xen. Een portering voor Windows XP werd uitgevoerd tijdens de initiële ontwikkeling van Xen, maar de licentiëring van Microsoft voorkwam de openbare uitgave hiervan.

## Volledige virtualisatie

Intel heeft aanpassingen aan Xen bijgedragen om hun VT-extensies te ondersteunen. AMD heeft op een gelijke manier bijgedragen om hun AMD-V-extensies te ondersteunen. Deze technologieën, hoewel ze vrij verschillend zijn geïmplementeerd, worden aangeroepen door een abstractielaag in Xen die het mogelijk maakt om ongemodificeerde besturingssystemen te draaien binnen virtuele Xen-machines.

## Migratie van een virtuele machine

De virtuele machines van Xen kunnen live gemigreerd worden tussen fysieke systemen zonder ze te stoppen. Gedurende deze procedure wordt het geheugen van de machine integraal gekopieerd naar de doelbestemming zonder dat de uitvoering wordt gestopt. Een zeer kleine stop van 60–300 ms is nodig om de uiteindelijke synchronisatie te verrichten, voordat de virtuele machine begint uit te voeren vanaf zijn doelbestemming, waardoor het voorziet in een illusie van naadloze integratie. Gelijksoortige technologie wordt gebruikt om lopende virtuele machines naar een schijf toe op non-actief te zetten, om vervolgens over te schakelen naar een andere virtuele machine en de eerste virtuele machine op een latere moment te hervatten.

## Hardware-architecturen

Xen werkt momenteel op x86-, x86-64-, IA64- en PPC-gebaseerde systemen. Er wordt momenteel ook gewerkt aan een SPARC-implementatie.

## Softwareplatformen
### Xen op Unix-achtigen

Xen draait voornamelijk op Linux of NetBSD als hoofdsysteem. De eerste commerciële implementatie van Xen die breed ondersteund wordt is in Novells Linuxdistributie SLED 10. Er is ook beperkte ondersteuning in FreeBSD. Red Hats RHEL 5 ondersteunt ook Xen, net zoals de meeste andere commerciële en niet-commerciële Linuxdistributies. Beschikbare edities:
* XenSource biedt een live-ISO-cd aan die je in staat stelt om Xen te proberen zonder iets te installeren op de harde schijf.
* Debian biedt ook Xen-pakketten aan in hun distributies squeeze, testing en unstable.
* NetBSD 2.0 ondersteunt Xen 1.2, NetBSD 3.0 ondersteunt Xen 2.0 en ondersteuning voor Xen 3.0 is toegevoegd in NetBSD 3.1. Ondersteuning om NetBSD als hoofdsysteem voor Xen te gebruiken wordt verwacht in NetBSD 4.0.
* FreeBSD's -CURRENT-versie ondersteunt Xen als gastsysteem. Aan ondersteuning van FreeBSD als hoofdsysteem wordt nog gewerkt.
* OpenSolaris heeft een BFU-uitgave voor Xen beschikbaar gesteld.

### Xen op Windows

Het is op dit moment mogelijk om Windows als gastsysteem te draaien in de nieuwste Xen-versie door gebruik te maken van hardwarevirtualisatie zoals Intel VT of AMD-V. Het is niet mogelijk om Windows als hoofdsysteem te gebruiken, met uitzondering van Microsoft Windows Server 2008, dat wel als hoofdsysteem voor Xen kan fungeren. In andere Windowsversies is deze ondersteuning niet aanwezig.