La plataforma de Clouding utiliza el Hypervisor KVM para todos los Servidores Cloud.
En la actualidad, KVM está considerado como el mejor hypervisor y también es de los más utilizados en los Cloud Públicos, como Clouding.
Existen otros sistemas de virtualización (como OpenVZ o Virtuozzo), pero no realizan una auténtica virtualización del hardware, ya que son más similares a contenedores -como por ejemplo Docker.
Sistemas de contenedores como OpenVZ
Existen diferentes formas de virtualizar sistemas operativos en un servidor, como podrían ser los contenedores.
Entre los sistemas de contenedores más habituales encontramos opciones como: OpenVZ o Virtuozzo, Linux LXC Containers, u opciones más modernas como Docker. En todo caso, la mayoría de estás tecnologías utilizan las mismas extensiones del kernel de Linux.
Los sistemas de contenedores no simulan realmente hardware, sino que utilizan un sistema de particionado que existe en el kernel de Linux para separar una instalación de un sistema operativo de otro.
Todos los contenedores funcionan sobre el mismo Kernel -por eso mismo, por ejemplo, no es posible cargar módulos del kernel en solo un contenedor. Esto tiene algunas ventajas pero también varias desventajas.
La principal ventaja es la densidad. Al compartir todos los contenedores el mismo kernel, es posible utilizar técnicas de de duplicación en la memoria del equipo host. De forma que, si por ejemplo, dos contenedores cargan la misma librería -vamos a imaginar, una extensión de Apache-, ésta solo se carga una vez en la memoria física del equipo host, accediendo a la misma ambos contenedores.
Pero esta principal ventaja, también es su principal desventaja. Al compartir todos los hypervisores un mismo kernel, un ataque a un contenedor puede extenderse al equipo físico (host) y a todos los contenedores. Asimismo, no es posible tener diferentes sistemas operativos, ya que todos utilizan el mismo kernel.
También resulta muy complicado separar correctamente los recursos asignados a cada servidor, ya que un contenedor no es un solo proceso en el equipo físico (host), sino todos los procesos que el mismo ejecuta.
Por otro lado, en la gran mayoría de casos, al trabajar con contenedores no se hace una reserva del 100% de la RAM asignada a cada servidor. Al ser una de las ventajas inherentes de esta tecnología el compartir RAM en algunos casos se abusa de la misma para reducir costes y eso afecta a la calidad del servicio.
Por lo tanto, podríamos definir estos sistemas de virtualización (OpenVZ y similares), como una alternativa más económica a los auténticos Servidores Cloud.
Virtualización de Hardware (KVM, ESXi y Xen en modo HVM)
Por otro lado tenemos los sistemas Hypervisores que realizan virtualización real de hardware.
En la actualidad uno de los más populares que se ha ido estableciendo como estándar es KVM (Kernel Virtualization Module).
KVM utiliza extensiones del kernel en Linux, para realizar una virtualización emulando hardware real, con un rendimiento virtualmente igual al del equipo físico (host).
Al virtualizar hardware, KVM presenta al servidor virtual (guest) hardware como el que se encontraría en un equipo físico. De esta forma, cualquier sistema operativo puede funcionar normalmente sobre un servidor virtual basado en KVM.
Al realizar una emulación de hardware real, cada servidor virtualizado dispone de su propio hardware, BIOS y kernel. De esta forma, no se comparte espacio de memoria entre servidores, disponiendo cada servidor de espacio de memoria totalmente aislado del resto de servidores virtualizados en el mismo servidor físico.
En entornos Cloud suele utilizarse siempre virtualización por hardware, al contrario de en los Servidores VPS de bajo coste: donde se sigue utilizando OpenVZ o similares por su mayor densidad, menor coste y mayor capacidad de sobre venta de recursos.
KVM con VirtIO (Drivers paravirtualizados)
En Clouding utilizamos KVM con VirtIO. VirtIO es un set de drivers paravirtualizados, que ofrecen un mayor rendimiento, ya que son drivers pensados especialmente para entornos de virtualización.
Pongamos por ejemplo, la tarjeta de red de un servidor virtual:
En el caso de utilizar un hardware virtualizado normal -sin VirtIO- muchas tareas se duplican, ya que el servidor virtual (guest) realiza muchas acciones innecesarias que luego el servidor físico (host) volverá a realizar.
Pero si utilizamos VirtIO, la tarjeta de red virtual apenas realiza acciones, ya que simplemente transmite los datos a la tarjeta de red física del equipo host. Esta transmisión simplificada, aumenta mucho el rendimiento, ya que en lugar de enviarse los datos en un formato adecuado para ser transmitidos a una red física, se envían de forma que el equipo físico pueda recibirlas a alta velocidad y transmitirlas a la red física.
Este tipo de drivers se utiliza para el acceso a la red y para el acceso a disco, ya que es donde más rendimiento ofrecen.
Ventajas de KVM en Clouding
En Clouding estamos obsesionados con el rendimiento y con ofrecerte la mejor plataforma Cloud del mercado. Por ello utilizamos KVM como hypervisor en todos los servicios que te ofrecemos.
Utilizando KVM podemos ofrecerte el mejor rendimiento, la máxima seguridad y la mayor estabilidad.