¿Qué es un contenedor de Linux y un hipervisor de Linux?

10

Miré el sitio de stackexchange pero no pude encontrar nada. Miré la entrada de Wikipedia en el contenedor de Linux https://en.wikipedia.org/wiki/LXC y también el hipervisor https://en.wikipedia.org/wiki/Hypervisor, pero la explicación para ambos está más allá de una persona que no ha trabajado en ninguno de los dos lo entenderá. También vi http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun pero eso tampoco lo explica.

He jugado con máquinas virtuales como virtualbox. Una de las ideas iniciales para mi comprensión limitada podría haber sido que las Máquinas Virtuales fueran quizás probar el software en un entorno de espacio aislado (Tener una caja Solaris cuando no puede comprar / permitirse el lujo de tener la máquina y aún tener alguna idea de cómo está desarrollando el software para que el hardware de destino esté funcionando.) Si bien está limitado si lo usa. Esta es probablemente una de las formas en que también dio el salto en la computación en la nube. Las preguntas son amplias, así que así es como lo destilo:

¿Pueden algunas personas explicar qué es un hipervisor y un contenedor * nix (con analogías si es posible)?
¿Es un hipervisor * nix lo mismo que una máquina virtual o hay alguna diferencia?

shirish
fuente

Respuestas:

9

Una máquina virtual (VM) es un término bastante genérico para muchas tecnologías de virtualización.

Existen muchas variaciones en las tecnologías de virtualización, pero las principales son:

  • Virtualización a nivel de hardware
  • Virtualización a nivel del sistema operativo

qemu-kvmy VMWareson ejemplos de lo primero. Emplean un hipervisor para administrar los entornos virtuales en los que se ejecuta un sistema operativo completo. Por ejemplo, en un qemu-kvmsistema puede tener una VM que ejecute FreeBSD, otra que ejecute Windows y otra que ejecute Linux.

Las máquinas virtuales creadas por estas tecnologías se comportan como computadoras individuales aisladas para el huésped. Estos tienen una CPU virtual, RAM, NIC, gráficos, etc., que el huésped cree que es el artículo genuino. Debido a esto, se pueden instalar muchos sistemas operativos diferentes en las máquinas virtuales y funcionan "listos para usar" sin necesidad de modificaciones.

Si bien esto es muy conveniente, ya que muchos sistemas operativos se instalarán sin mucho esfuerzo, tiene el inconveniente de que el hipervisor tiene que simular todo el hardware, lo que puede ralentizar las cosas. Una alternativa es el hardware para-virtualizado, en el que se desarrolla un nuevo dispositivo virtual y controlador para el huésped que está diseñado para el rendimiento en un entorno virtual. qemu-kvmproporcione la virtiogama de dispositivos y controladores para esto. Una desventaja de esto es que el SO huésped debe ser compatible; pero si es compatible, los beneficios de rendimiento son excelentes.


lxces un ejemplo de virtualización a nivel de sistema operativo, o contenedores. Bajo este sistema, solo hay un núcleo instalado: el núcleo host. Cada contenedor es simplemente un aislamiento de los procesos de usuario y tierra. Por ejemplo, un servidor web (por ejemplo apache) está instalado en un contenedor. En lo que respecta a ese servidor web, el único servidor instalado es él mismo. Otro contenedor puede estar ejecutando un servidor FTP. Ese servidor FTP no tiene conocimiento de la instalación del servidor web, solo que es propio. Otro contenedor puede contener la instalación completa del usuario de una distribución de Linux (siempre que esa distribución sea capaz de ejecutarse con el núcleo del sistema host).

Sin embargo, no hay instalaciones separadas del sistema operativo cuando se usan contenedores, solo instancias aisladas de servicios de usuario. Debido a esto, no puede instalar diferentes plataformas en un contenedor, no Windows en Linux.

Los contenedores generalmente se crean usando a chroot. Esto crea una raíz privada separada ( /) para que un proceso funcione. Al crear muchas raíces privadas individuales, los procesos (servidores web o una distribución de Linux, etc.) se ejecutan en su propio sistema de archivos aislado. Técnicas más avanzadas, como cgroupspueden aislar otros recursos como la red y la RAM.


Hay pros y contras en ambos y muchos debates de larga data sobre cuál es el mejor.

  • Los contenedores son más livianos, ya que no se instala un sistema operativo completo para cada uno; que es el caso de los hipervisores. Por lo tanto, pueden ejecutarse en hardware con especificaciones más bajas. Sin embargo, solo pueden ejecutar invitados Linux (en hosts Linux). Además, debido a que comparten el núcleo, existe la posibilidad de que un contenedor comprometido pueda afectar a otro.
  • Los hipervisores son más seguros y pueden ejecutar diferentes sistemas operativos porque se instala un sistema operativo completo en cada máquina virtual y los invitados no conocen otras máquinas virtuales. Sin embargo, esto utiliza más recursos en el host, que tiene que ser relativamente poderoso.
garethTheRed
fuente
2

Un contenedor es un poco como un entorno chroot, excepto que logra un aislamiento más completo del espacio de usuario. No proporciona una VM real, sino un sistema operativo virtual. Las máquinas virtuales crean la ilusión de múltiples máquinas, dentro de cada una de las cuales un sistema operativo real y completo puede ejecutarse como si fuera un metal desnudo. El "sistema operativo completo" aquí incluye un núcleo. Algunas máquinas virtuales (por ejemplo, QEMU ) incluso permiten estimular diferentes tipos de arquitecturas "de metal desnudo".

En cambio, los contenedores crean la ilusión de múltiples núcleos, cada uno de los cuales ejecuta una tierra de usuario completa. Podría, por ejemplo, ejecutar Debian en un contenedor y Arch en otro, por lo que la perspectiva desde dentro del contenedor es muy similar a la de una máquina virtual. Sin embargo, solo puede ejecutar un sistema operativo de usuario compatible con el núcleo real, en este caso, Linux. Esto es diferente de las máquinas virtuales reales, donde puede ejecutar un kernel independiente y, por lo tanto, cualquier tipo de sistema operativo.

Entonces, las máquinas virtuales verdaderas son más caras, en cuanto a recursos, que los contenedores; Si no necesita núcleos diferentes en cada máquina virtual, también podría usar un contenedor.

Hay otros sistemas de virtualización que hacen algo similar a LXE, como openVZ , ampliamente utilizado por los proveedores de VPS. Un VPS openVZ es un país de usuario independiente que utiliza el núcleo de su sistema operativo host. Es por eso que tales VPS vienen en un montón de sabores de Linux, pero nada más; deben ser compatibles con el núcleo del host.

La virtualización de estilo OpenVZ y LXC se denomina virtualización a nivel de sistema operativo .

Un hipervisor es un sistema que administra máquinas virtuales, como VirtualBox , QEMU o Xen . Algunos hipervisores, como Xen, se ejecutan en el bare metal y no requieren un sistema operativo host (aunque pueden requerir un sistema operativo alojado para que sirva como interfaz de control). Otros, como VirtualBox y QEMU, se ejecutan dentro de un sistema operativo host. Algunos, como QEMU, permiten simular diferentes arquitecturas de máquina; otros, como VirtualBox, no lo hacen (es decir, la arquitectura VM es siempre la misma que el host real). Simular una arquitectura requiere más recursos, así como las máquinas virtuales reales requieren más recursos que los contenedores.

La virtualización de estilo hipervisor se llama virtualización a nivel de plataforma .

encerrada dorada
fuente