GNU/Linux >> Tutoriales Linux >  >> Linux

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

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

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

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

qemu-kvm y VMWare son ejemplos de los primeros. Emplean un hipervisor para gestionar los entornos virtuales en los que se ejecuta un sistema operativo completo. Por ejemplo, en un qemu-kvm puede tener una máquina virtual 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 son 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 paravirtualizado, en el que se desarrolla un nuevo controlador y dispositivo virtual para el invitado que está diseñado para el rendimiento en un entorno virtual. qemu-kvm proporcione el virtio variedad de dispositivos y controladores para esto. Una desventaja de esto es que el sistema operativo invitado debe ser compatible; pero si es compatible, los beneficios de rendimiento son excelentes.

lxc es un ejemplo de virtualización a nivel de sistema operativo, o contenedores. Bajo este sistema, solo hay un kernel instalado:el kernel host. Cada contenedor es simplemente un aislamiento de los procesos de la zona de usuario. 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 está al tanto de la instalación del servidor web, solo es propio. Otro contenedor puede contener la instalación completa del área de usuario de una distribución de Linux (siempre y cuando esa distribución sea capaz de ejecutarse con el kernel del sistema host).

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

Los contenedores generalmente se crean usando un chroot . Esto crea una raíz privada separada (/ ) para un proceso con el que trabajar. 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 cgroups puede aislar otros recursos como la red y la memoria RAM.

Hay pros y contras para 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 de Linux (en hosts de Linux). Además, debido a que comparten el kernel, 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 debe ser relativamente poderoso.

Un contenedor es un poco como un entorno chroot, excepto que logra un aislamiento más completo del espacio de usuario. No proporciona una máquina virtual 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 sistema completo. "Sistema operativo completo" aquí incluye un núcleo. Algunas máquinas virtuales (por ejemplo, QEMU) incluso permiten estimular diferentes tipos de arquitecturas "bare metal".

En cambio, los contenedores crean la ilusión de varios núcleos, cada uno de los cuales ejecuta un espacio de usuario completo. 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 compatible con el kernel real, en este caso, Linux. Esto es diferente a las máquinas virtuales reales, donde puede ejecutar un kernel independiente y, por lo tanto, cualquier tipo de sistema operativo.

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

Hay otros sistemas de virtualización que hacen algo similar a LXE, como openVZ, muy utilizado por los proveedores de VPS. Un VPS openVZ es un espacio de usuario independiente que utiliza el núcleo de su sistema operativo host. Esta es la razón por la cual dichos VPS vienen en un montón de sabores de Linux pero nada más; deben ser compatibles con el núcleo host.

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

Un hipervisor es un sistema que gestiona máquinas virtuales, como VirtualBox, QEMU o Xen. Algunos hipervisores, como Xen, se ejecutan sin sistema operativo y no requieren un sistema operativo host (aunque pueden requerir un sistema operativo alojado para servir 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áquinas; otros, como VirtualBox, no (es decir, la arquitectura de la máquina virtual es siempre la misma que la del host real). La simulación de una arquitectura requiere más recursos, al igual que las máquinas virtuales reales requieren más recursos que los contenedores.

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


Linux
  1. ¿Cuál es la diferencia entre un contenedor de Linux y una imagen?

  2. ¿Qué son los enlaces blandos y los enlaces duros en el sistema de archivos de Linux?

  3. ¿Qué son vdso y vsyscall?

  4. Cómo aprender las partes internas del sistema Linux

  5. ¿Cuál es la diferencia entre una llamada de biblioteca y una llamada de sistema en Linux?

Redox OS:un sistema operativo escrito en Rust

Primeros pasos con el sistema operativo Linux

¿Linux es un sistema operativo o un kernel?

Historia de Unix y Linux

¿Qué es el sistema de archivos de Linux? Guía fácil

¿Qué son las llamadas al sistema Linux y las funciones de biblioteca?