En los tiempos de la co­mpu­tación en la nube, los hi­pe­r­vi­so­res como KVM y Xen son ab­so­lu­ta­me­n­te ese­n­cia­les. ¿En qué se di­fe­re­n­cian estas te­c­no­lo­gías de vi­r­tua­li­za­ción? En esta co­m­pa­ra­ti­va entre Xen y KVM abordamos las si­mi­li­tu­des y pa­r­ti­cu­la­ri­da­des de cada una.

Resumen del hi­pe­r­vi­sor Xen

El hi­pe­r­vi­sor Xen es un software de vi­r­tua­li­za­ción de código abierto que permite ejecutar al mismo tiempo múltiples sistemas ope­ra­ti­vos huésped en el mismo ordenador anfitrión. El hi­pe­r­vi­sor Xen se encarga de repartir los recursos de hardware del ordenador anfitrión.

¿Qué tipo de hi­pe­r­vi­sor es Xen?

Xen, un hi­pe­r­vi­sor de tipo 1 o bare-metal, se instala di­re­c­ta­me­n­te en el sistema físico. Se comunica con el hardware mediante sus propios co­n­tro­la­do­res. Los sistemas anfitrión y huésped se instalan sobre el hi­pe­r­vi­sor Xen. Xen asigna los sistemas ope­ra­ti­vos in­s­ta­la­dos a los dominios dom0 y domU para di­s­ti­n­guir entre niveles de pri­vi­le­gio. El sistema operativo anfitrión pertenece a dom0 y, por tanto, disfruta del mayor nivel de pri­vi­le­gio. Todos los sistemas ope­ra­ti­vos huéspedes forman parte de domU, como sistemas sin pri­vi­le­gios, o un­pri­vi­le­ged.

Sin embargo, el sistema operativo anfitrión y el hardware no se comunican di­re­c­ta­me­n­te mediante los co­n­tro­la­do­res del sistema operativo, sino a través de una API especial de Xen por medio del hi­pe­r­vi­sor. La in­te­gra­ción profunda del hi­pe­r­vi­sor Xen garantiza un uso más eficiente del hardware, con menos so­bre­ca­r­ga y una menor su­pe­r­fi­cie de ataque.

Xen: una mayor efi­cie­n­cia gracias a la pa­ra­vi­r­tua­li­za­ción

Xen hace uso de la pa­ra­vi­r­tua­li­za­ción para aumentar la efi­cie­n­cia. En este caso, el hi­pe­r­vi­sor no emula los co­m­po­ne­n­tes del hardware, por lo que el sistema huésped sabe que se está eje­cu­ta­n­do en un entorno vi­r­tua­li­za­do. De esta manera, la co­mu­ni­ca­ción entre los sistemas ope­ra­ti­vos huésped y el hi­pe­r­vi­sor Xen se produce con mayor rapidez, lo cual aumenta el re­n­di­mie­n­to. No obstante, esta técnica tiene exi­ge­n­cias es­pe­cia­les para los sistemas ope­ra­ti­vos in­s­ta­la­dos en Xen, entre las que se en­cue­n­tran que el núcleo del sistema operativo soporte la pa­ra­vi­r­tua­li­za­ción o que haya co­n­tro­la­do­res es­pe­cia­li­za­dos. En cualquier caso, hace ya años que los núcleos de los sistemas ope­ra­ti­vos típicos como Linux y BSD ya cumplen con estos re­qui­si­tos.

Si no se puede o no se quiere pa­ra­vi­r­tua­li­zar el sistema operativo, Xen también soporta una vi­r­tua­li­za­ción completa, en la que se emulan vi­r­tua­l­me­n­te los co­m­po­ne­n­tes del hardware. Esta opción ralentiza la vi­r­tua­li­za­ción, pero ofrece una mayor co­m­pa­ti­bi­li­dad. Así, también pueden eje­cu­tar­se en Xen los sistemas ope­ra­ti­vos que no permiten la pa­ra­vi­r­tua­li­za­ción.

Consejo

Además de KVM, también hay muchas otras al­te­r­na­ti­vas a Xen. Te pre­se­n­ta­mos algunas en este artículo.

Ca­ra­c­te­rí­s­ti­cas del hi­pe­r­vi­sor KVM

KVM (del inglés Kernel-based Virtual Machine) es otro hi­pe­r­vi­sor de código abierto con el que se pueden ejecutar múltiples sistemas ope­ra­ti­vos guest en un único ordenador físico. Aunque en principio KVM y Xen tienen la misma finalidad, se basan en pri­n­ci­pios de fu­n­cio­na­mie­n­to di­fe­re­n­tes y, por tanto, son idóneos para casos de uso distintos.

¿Qué tipo de hi­pe­r­vi­sor es KVM?

En el pasado KVM solía cla­si­fi­car­se como hi­pe­r­vi­sor de tipo 2, ya que solo podía co­mu­ni­car­se con el hardware mediante los co­n­tro­la­do­res del sistema operativo host. Tampoco permitía la pa­ra­vi­r­tua­li­za­ción, y todos los co­m­po­ne­n­tes de hardware del sistema huésped tenían que ser emulados por KVM.

Desde entonces, KVM ha añadido la función de la pa­ra­vi­r­tua­li­za­ción, aunque funciona de manera distinta a Xen, ya que en KVM no se instala en el sistema operativo anfitrión. En su lugar, KVM se integra di­re­c­ta­me­n­te en el núcleo de Linux y hace uso de los co­m­po­ne­n­tes de software del sistema Linux para ad­mi­ni­s­trar los sistemas vi­r­tua­li­za­dos y sus procesos. En KVM, cada sistema operativo huésped cuenta con su propio hardware vi­r­tua­li­za­do, in­clu­ye­n­do interfaz de red, al­ma­ce­na­mie­n­to en disco duro, etc. Para acelerar esta vi­r­tua­li­za­ción total, KVM hace uso de la Hardware-Assisted Vi­r­tua­li­za­tion, la vi­r­tua­li­za­ción asistida por hardware, ya integrada en la mayoría de los pro­ce­sa­do­res modernos.

Sin embargo, con KVM no se vi­r­tua­li­zan ple­na­me­n­te todos los co­m­po­ne­n­tes. Para acelerar los sistemas y apli­ca­cio­nes, ofrece algunas in­te­r­fa­ces pa­ra­vi­r­tua­li­za­das que pueden co­mu­ni­car­se di­re­c­ta­me­n­te con el hi­pe­r­vi­sor mediante la Virtio API. Por tanto, la pa­ra­vi­r­tua­li­za­ción en KVM se ofrece sobre todo para di­s­po­si­ti­vos de entrada y salida como las in­te­r­fa­ces de red, de manera que este hi­pe­r­vi­sor pro­po­r­cio­na más bien una pa­ra­vi­r­tua­li­za­ción parcial.

KVM vs. Xen: ¿qué hi­pe­r­vi­sor rinde mejor?

La principal di­fe­re­n­cia entre estos dos hi­pe­r­vi­so­res es el nivel de conjunto de software en el que operan. Como parte del núcleo Linux, KVM utiliza la vi­r­tua­li­za­ción asistida por hardware para vi­r­tua­li­zar to­ta­l­me­n­te muchos co­m­po­ne­n­tes de hardware sin pe­r­ju­di­car de manera si­g­ni­fi­ca­ti­va el re­n­di­mie­n­to. Las in­te­r­fa­ces IO más im­po­r­ta­n­tes están pa­ra­vi­r­tua­li­za­das; este pro­ba­ble­me­n­te es el factor más im­po­r­ta­n­te para la mayoría de las apli­ca­cio­nes de servidor. Por su parte, Xen se instala de manera clásica como hi­pe­r­vi­sor de tipo 1 bajo el sistema operativo co­rre­s­po­n­die­n­te. Es el mismo hi­pe­r­vi­sor el que se encarga de di­s­tri­buir los recursos de hardware, lo que garantiza que Xen pueda, en teoría, ofrecer una co­mu­ni­ca­ción más eficiente y de mayor re­n­di­mie­n­to con el hardware. Sin embargo, Xen y KVM tienen un re­n­di­mie­n­to similar gracias al co­n­tro­la­dor Virtio de KVM y a la vi­r­tua­li­za­ción asistida por hardware.

CPU Pinning

Evi­de­n­te­me­n­te, los dos hi­pe­r­vi­so­res no funcionan igual con todas las apli­ca­cio­nes. KVM ofrece a sus usuarios más potencia que Xen sobre todo en lo re­s­pe­c­ti­vo al CPU Pinning. Gracias a la afinidad de pro­ce­sa­dor, KVM puede asignar un pro­ce­sa­dor físico (o núcleo de pro­ce­sa­dor) a un pro­ce­sa­dor vi­r­tua­li­za­do para que solo el sistema virtual pueda usar el pro­ce­sa­dor. Esto es es­pe­cia­l­me­n­te ventajoso para las apli­ca­cio­nes que consumen mucha CPU, y solo es posible con KVM.

Re­n­di­mie­n­to de red

En lo relativo al re­n­di­mie­n­to de red, Xen lleva ventaja. Aunque ambos hi­pe­r­vi­so­res ofrecen in­te­r­fa­ces de red pa­ra­vi­r­tua­li­za­das, en KVM cada sistema vi­r­tua­li­za­do tiene su propio di­s­po­si­ti­vo de red. En Xen, todos los sistemas huésped comparten una única interfaz de red virtual, lo que garantiza una mejor efi­cie­n­cia.

Co­n­clu­sión

Para saber qué hi­pe­r­vi­sor es mejor, si Xen o KVM, deberás pensar en tus ne­ce­si­da­des. KVM suele ser más fácil de utilizar ya que además de ser líder en el mercado, se integra en el núcleo de Linux y permite la vi­r­tua­li­za­ción completa. Xen dispone en principio de un re­n­di­mie­n­to superior gracias a la pa­ra­vi­r­tua­li­za­ción completa. Por tanto, todo depende de las apli­ca­cio­nes que quieras vi­r­tua­li­zar y de tu nivel de ex­pe­rie­n­cia.

Ir al menú principal