linux-kernel kvm lxc cgroups linux-namespaces

linux kernel - Diferencia entre KVM y LXC



linux-kernel cgroups (3)

Texto de https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7-Beta/html/Resource_Management_and_Linux_Containers_Guide/sec-Linux_Containers_Compared_to_KVM_Virtualization.html Copyright © 2014 Red Hat, Inc .:

Contenedores Linux comparados con la virtualización KVM

La diferencia principal entre la virtualización de KVM y los Contenedores de Linux es que las máquinas virtuales requieren una instancia separada del kernel para ejecutarse, mientras que los contenedores se pueden implementar desde el sistema operativo host. Esto reduce significativamente la complejidad de la creación y mantenimiento de contenedores. Además, la sobrecarga reducida le permite crear una gran cantidad de contenedores con velocidades de inicio y cierre más rápidas. Tanto los contenedores de Linux como la virtualización de KVM tienen ciertas ventajas y desventajas que influyen en los casos de uso en los que estas tecnologías se aplican normalmente:

Virtualización KVM

La virtualización KVM le permite arrancar sistemas operativos completos de diferentes tipos, incluso sistemas que no sean Linux. Sin embargo, a veces se necesita una configuración compleja. Las máquinas virtuales consumen muchos recursos, por lo que puede ejecutar solo un número limitado de ellas en su equipo host.

Ejecutar instancias de kernel separadas generalmente significa una mejor separación y seguridad. Si uno de los kernels finaliza inesperadamente, no deshabilita todo el sistema. Por otro lado, este aislamiento hace que sea más difícil para las máquinas virtuales comunicarse con el resto del sistema, y ​​por lo tanto, se deben utilizar varios mecanismos de interpretación.

La máquina virtual invitada está aislada de los cambios del host, lo que le permite ejecutar diferentes versiones de la misma aplicación en el host y la máquina virtual. KVM también proporciona muchas funciones útiles, como la migración en vivo. Para obtener más información sobre estas capacidades, consulte la Guía de implementación y administración de Virtualización de Red Hat Enterprise Linux 7.

Contenedores de Linux:

La versión actual de Linux Containers está diseñada principalmente para admitir el aislamiento de una o más aplicaciones, con planes para implementar contenedores completos de SO en el futuro cercano. Puede crear o destruir contenedores muy fácilmente y son fáciles de mantener.

Los cambios en todo el sistema son visibles en cada contenedor. Por ejemplo, si actualiza una aplicación en la máquina host, este cambio se aplicará a todas las cajas de arena que ejecutan instancias de esta aplicación.

Como los contenedores son livianos, muchos de ellos pueden ejecutarse simultáneamente en una máquina host. El máximo teórico es 6000 contenedores y 12,000 montajes bind de directorios del sistema de archivos raíz. Además, los contenedores son más rápidos de crear y tienen tiempos de arranque bajos.

fuente

¿Cuál es la diferencia entre KVM y Linux Containers (LXC)? Para mí, parece que LXC también es una forma de crear múltiples máquinas virtuales dentro del mismo kernel si utilizamos funciones de "espacios de nombres" y "grupos de control" del kernel.


Este documento técnico proporciona la diferencia entre el hipervisor y los contenedores de Linux y también un poco de historia detrás de los contenedores http://sp.parallels.com/fileadmin/media/hcap/pcs/documents/ParCloudStorage_Mini_WP_EN_042014.pdf

Un extracto del documento: un hipervisor funciona haciendo que el sistema operativo del host emule el hardware de la máquina y luego muestre otras máquinas virtuales (VM) como sistemas operativos invitados encima de ese hardware. Esto significa que la comunicación entre los sistemas operativos invitados y host debe seguir un paradigma de hardware (todo lo que el host puede hacer en el hardware puede ser realizado por el huésped).

Por otro lado, la virtualización de contenedores (que se muestra en la figura 2) es la virtualización en el nivel del sistema operativo, en lugar del nivel de hardware. De modo que cada uno de los sistemas operativos invitados comparte el mismo kernel, y algunas veces partes del sistema operativo, con el host. Este intercambio mejorado brinda a los contenedores una gran ventaja ya que son más delgados y más pequeños que los invitados al hipervisor, simplemente porque comparten muchas más piezas con el host. También les brinda la enorme ventaja de que el kernel invitado es mucho más eficiente para compartir recursos entre contenedores, ya que considera que los contenedores son simplemente recursos que deben administrarse.

Un ejemplo: el Contenedor 1 y el Contenedor 2 abren el mismo archivo, el núcleo del host abre el archivo y coloca las páginas en la memoria caché de la página del kernel. Estas páginas se entregan al Contenedor 1 y al Contenedor 2 según se necesiten, y si ambos desean leer la misma posición, ambos obtienen la misma página. En el caso de VM1 y VM2 haciendo lo mismo, el host abre el archivo (creando páginas en el caché de la página del host) pero luego cada uno de los kernels en VM1 y VM2 hace lo mismo, lo que significa que si VM1 y VM2 leen el mismo archivo , ahora hay tres páginas separadas (una en los cachés de páginas del host, los kernels VM1 y VM2) simplemente porque no pueden compartir la página de la misma manera que un contenedor. Este intercambio avanzado de contenedores significa que la densidad (cantidad de contenedores de máquinas virtuales que puede ejecutar en el sistema) es hasta tres veces mayor en el caso del contenedor que en el caso del hipervisor.

Resumen: KVM es un hipervisor basado en la emulación de hardware virtual. Los contenedores, por otro lado, se basan en sistemas operativos compartidos y son más delgados. Pero esto plantea una limitación en los contenedores de que estamos utilizando un solo kernel compartido y, por lo tanto, no podemos ejecutar Windows y Linux en el mismo hardware compartido.


LXC o Linux Containers son las unidades de virtualización basadas en SO ligeras y portátiles que comparten el kernel del sistema operativo base, pero al mismo tiempo actúan como entornos aislados con su propio sistema de archivos, procesos y pila TCP / IP. Se pueden comparar con las Zonas de Solaris o las Cárceles en FreeBSD. Como no hay sobrecarga de virtualización, funcionan mucho mejor que las máquinas virtuales. Por otro lado, KVM representa las capacidades de virtualización integradas en el kernel de Linux. Como ya se dijo en las respuestas anteriores, es el hipervisor de tipo 2, es decir, no se ejecuta en un metal desnudo.