.
Virtualization on the OS level, a.k.a. containers virtualization
No todo es Xen, KVM, Vmware,etc. también tenemos los Containers! Ya se ha hablado mucho de las grandes ventajas que nos ofrecen los hipervisores tipo XEN, KVM, VMWare… aislamiento, seguridad, etc. Pero si nos encontramos un entorno que no nos hace falta arrancar distintos tipos de sistemas operativos en nuestros servidores. Es cuando podríamos estudiar la opción de utilizar los Containers y su virtualización a nivel de OS. En este artículo queríamos introducir la virtualización a nivel Sistema Operativo. Ella nos permite arrancar multiples instancias del mismo Sistema Operativo. Actualmente hay muchas opciones del tipo OS-level virtualization como OpenVZ, Virtuozzo, Linux-VServer, Solaris Zones, LXC y FreeBSD Jails
Containers (LXC, Zones, Jails)
Containers es una tecnología de virtualización en el nivel de sistema operativo. En comparación otros como Xen, KVM, Vmware, etc. Los containers no proveen de una máquina virtual, más bien proveen un entorno virtual que tiene su propio espacio de procesos y redes. Por eso que los containers vienen integrados en el Kernel del Sistema Operativo. Pues según que tipo de sistema operativo nos encontremos, los podemos clasificar por: Linux Containers (LXC) en Linux, en Solaris tenemos Solaris Zones y en FreeBSD los Jails.
Normalmente las instancias tienen compartido el acceso al hardware principal, el hardware no está virtualizado como en el caso de las soluciones típicas de hipervisor. Y estas instancias suelen compartir el mismo kernel.
Los Containers son similarer a otras tecnologías de virtualización en el nivel de SO como OpenVZ y Linux-VServer,
Las ventajas de estos es que son entornos muy ligeros (no incluye el overhead de los hipervisores tradicionales). Además los discos virtuales són presentados como directorios en el sistema central. Luego dependiendo de que sistema operativo, tendrán su sistema de monitorizacion, herramientas de mantenimiento tipo ps, pkg, etc, herramientas de gestión para limitar CPU, RAM, etc.
OpenVZ and Linux V-Server
En comparación los containers, OpenVZ y Linux V-Server no vienen integrados en el kernel. Aunque igualmente aprovechan cosas de él . Los Kernels se tienen que parchear y compilar para ser usados.
En el resto de cosas, las características son muy parecidas a los Containers comentados anteriormente.
Las máquinas virtuales tienen compartido el acceso al hardware principal, ya que el hardware no está virtualizado como en el caso de las típicas soluciónes hypervisor. Por lo tanto no tienen este overhead de los hipervisores.
Las instancias virtuales tienen en común el mismo Kernel y los discos son presentados como directorios en el sistema principal.
Aunque en casos como Open-VZ es posible tener muchas distribuciones Linux, estas soluciones también permiten limitar los recursos de hardware como RAM, IO, CPU, … Hasta el momento V-Server no permite migración en caliente, OpenVZ si.
OpenVZ y V-Server eran una sólida alternativa a los LXC, ya que se encontraban antes un poco verdes. Actualmente con las últimas actualizaciónes del Kernel de Linux el LXC ya se encuentra en un estado más solido.
User Mode Linux
User Mode Linux es un caso poco común ya que UML se creó para que los desarrolladores del núcleo de Linux pudieran probar versiones inestables del núcleo sobre un sistema en funcionamiento. Como el núcleo en prueba es sólo un proceso de usuario, si se cuelga, no compromete al sistema que lo aloja. Pero además, el uso de UML se ha extendido a otras posibilidades como la creación de honeypots, ejecución de servicios de red, realizar pruebas con software inestable o incompatible, …
Wikipedia: UML es una modificación del núcleo Linux para que funcione sobre su propia interfaz de llamadas al sistema. De este modo, un núcleo compilado para la arquitectura um puede operar como un proceso de usuario más de otro núcleo Linux que hace las veces de anfitrión.
Tabla comparativa:
Esta tabla no incluye las Zonas de Solaris, ni los Jails de BSD: http://virt.kernelnewbies.org/TechComparison
Por cierto, para los que usais Libvirt , este soporta como Containers el LXC, OpenVZ y UML.