# Xen

Xen és una màquina virtual de codi obert desenvolupada per la Universitat de Cambridge. La meta del disseny és poder executar instàncies de sistemes operatius amb totes les seves característiques, de forma completament funcional en un equip senzill.
Xen proporciona un aïllament segur, control de recursos, garanties de qualitat de servei i migració de màquines virtuals en viu. Els sistemes operatius han de ser modificats explícitament per córrer Xen (encara que mantenint la compatibilitat amb aplicacions d'usuari). Això permet a Xen assolir virtualització d'alt rendiment sense un suport especial de maquinari.

## Ús

Les màquines virtuals són usades sovint per IBM i altres companyies als seus servidors i ordinadors centrals per a abstreure la major quantitat d'aplicacions possibles i assegurar les aplicacions posant-les en màquines virtuals diferents (semblant a una gàbia chroot). Pot ser utilitzada, no només per raons de seguretat o funcionament, sinó també per poder tenir diferents sistemes operatius arrencats al mateix ordinador. Amb la migració de màquines virtuals en viu de Xen es pot aconseguir fer balanç de càrregues sense temps morts.

## Comparació amb altres màquines virtuals

* Denali utilitza la paravirtualització per proporcionar màquines virtuals d'alt rendiment en ordinadors x86. La màquina virtual Denali dona suport a Sistemes Operatius mínimament especialitzats cap a serveis d'Internet. El sistema pot escalar a milers de màquines virtuals. A diferència de Xen, Denali no preserva la interfície binaria (ABI), i algunes aplicacions han de ser recopilades perquè funcionin amb les llibreries del sistema operatiu; en aquest sentit és similar a Exokernel.
* VMware proporciona màquines virtuals per a x86 que pugui executar sistemes operatius sense modificar. La tecnologia per aconseguir això és extremadament complexa i aconsegueix un baix rendiment. Xen té completa compatibilitat amb els Sistemes Operatius amb relativa simplicitat i un alt rendiment.
* Virtuozzo substitueix la capa d'abstracció del maquinari per una versió modificada permetent-li funcionar amb un millor rendiment dels sistemes operatius, però força a la qual totes les Màquines Virtuals s'executin en un equip i amb el mateix sistema operatiu. Actualment existeix una versió per a Windows 2003 i per a Fedora Core Linux.

## Paravirtualització amb Xen

Xen utilitza una tècnica anomenada paravirtualització per assolir alt rendiment (és a dir, baixes penalitzacions del rendiment, típicament al voltant del 2%, amb els pitjors casos de rendiment rondant el 8%; això contrasta amb les solucions d'emulació que habitualment sofreixen penalitzacions d'un 20%). Amb la paravirtualització es pot assolir alt rendiment fins i tot en arquitectures (x86) que no solen aconseguir-se amb tècniques tradicionals de virtualització. A diferència de les màquines virtuals tradicionals, que proporcionen entorns basats en programari per simular maquinari, Xen requereix portar els sistemes operatius per adaptar-se a l'API de Xen. Fins al moment hi ha ports per a NetBSD, Linux, FreeBSD i Plan 9. En 2005, Novell mostra un port de NetWare per Xen. Un port de Windows XP es va crear durant el desenvolupament inicial de Xen, però les llicències de Microsoft prohibeixen el seu llançament públic.

## Virtualizació completa amb Xen

Intel ha realitzat modificacions a Xen per suportar la seva arquitectura d'extensions Vanderpool. Aquesta tecnologia permetrà que sistemes operatius sense modificacions s'executin en màquines virtuals Xen, si el sistema suporta les extensions Vanderpool o Pacifica (d'Intel i AMD respectivament, extensions per suportar virtualització de forma nativa). Pràcticament, això significarà que hi haurà una millora de rendiment, i que serà possible virtualitzar Windows sense haver de modificar-lo.

## Migració de màquines virtuals

Les màquines virtuals Xen poden ser migrades en viu entre equips físics sense parar-los. Durant aquest procés, la memòria de la màquina virtual és copiada iterativament a la destinació sense detenir la seva execució. Una parada molt breu al voltant de 60 a 300 ms és necessària per realitzar la sincronització final abans que la màquina virtual comenci a executar-se en la seva destinació final. Una tecnologia similar és utilitzada per suspendre les màquines virtuals a disc i canviar una altra màquina virtual.

## Plataformes suportades

Xen funciona actualment en sistemes basats en x86. Actualment s'està portant les plataformes x86-64, IA64 i PPC. Els ports d'altres plataformes són tècnicament possibles i podran estar disponibles en el futur.

## Xen en sistemes Unix

* Ubuntu 6.10 (Edgy Eft) inclou Xen 3.0.3.
* Mandriva 2006 inclou Xen 2.6.
* Novell Suse Linux Professional 10 inclou Xen 3.
* Fedora Core 5 inclou la versió 3 de Xen.
* Xen demo CD és una ISO live CD basada en Debian que permet provar Xen en el teu sistema sense instal·lar-la en el disc dur.
* Debian també inclou els paquets de Xen, en els seus repositoris inestable i experimental.
* NetBSD 2.0 inclou suport per Xen 1.2.

## Xen i Llenguatges de programació

* Haskell amb HaLVM (The Haskell Lightweight Virtual Machine): GHC runtime adaptat a l'hipervisor Xen.
* OCaml amb Mirage. Nucli de S.O. sobre Xen, especialitzat per a servidors de Cloud Computing (com ara Amazon Elastic Compute Cloud). Presentació aquí.

## Serveis Comercials

Hi ha companyies, per exemple vpsland Arxivat 2006-08-04 a Wayback Machine., que proporcionen servidors privats virtuals basats en Xen.

## Referències

* ↑ web de HaLVM: The Haskell Lightweight Virtual Machine(anglès)
* ↑ Run Haskell on Xen - No Operating System Required! Arxivat 2010-12-04 a Wayback Machine.(anglès)
* ↑ Mirage Arxivat 2010-10-24 a Wayback Machine. (anglès)
* ↑ Mirage: ML kernels in the Cloud (anglès)

## Enllaços externs

* Xen - Lloc web oficial