- ¿Qué es el LXC?
- ¿Para qué es útil?
- ¿Cuáles son las diferencias entre LXC y la virtualización común?
Respuestas:
Si por "inglés simple" te refieres a personas poco técnicas, la diferencia no puede explicarse fácilmente. Ese cabello es demasiado fino para partirlo sin una consideración muy cuidadosa.
Si por "inglés simple" te refieres a los tipos gerenciales que hablan con personas técnicas y, por lo tanto, tienen una comprensión mínima de los temas técnicos, presento la siguiente información:
Es una forma diferente de virtualización.
Si observa VMWare ESXi, es un hipervisor completo que ejecuta lo que se denomina virtualización completa. Hay una capa muy pequeña entre los sistemas virtualizados que se ejecutan en la parte superior del hardware. Existe una virtualización de hardware completa, donde el sistema operativo que se ejecuta en la máquina virtual es totalmente independiente del hipervisor y se le presenta todo el hardware que espera.
Da un paso más y mira algo como VMWare Player, Workstation, ESX (no ESXi) o VMWare Server, y tienes un sistema operativo completo que proporciona la función de hipervisor. Sin embargo, las máquinas virtuales todavía se presentan con una gama completa de hardware virtual.
Otro enfoque es la para-virtualización, que Xen siguió durante bastante tiempo. En esta forma de virtualización, el sistema operativo invitado es consciente de que está virtualizado y se ha modificado para funcionar en ese entorno. A veces, todo lo que necesita son controladores especiales de para-virtualización. Otras veces, se necesitan cambios directos en el núcleo.
LXC, o Linux Containers, es otro paso más. En este caso, ejecuta múltiples instancias del mismo sistema operativo . El núcleo puede ser el mismo, pero se están ejecutando múltiples espacios de usuario para cada contenedor del sistema operativo. Cada contenedor puede o no tener un sistema de archivos diferente.
Los contenedores ofrecen una manera de proporcionar una fuerte separación de seguridad entre procesos de una manera que no está disponible en sistemas que tienen el mismo espacio de usuario. Los sistemas operativos tipo Unix han tenido la 'cárcel chroot' durante bastante tiempo, pero no proporciona separación de procesos o la capacidad de limitar los recursos consumidos por los procesos en la cárcel. Al contener tales procesos, el uso de los recursos puede limitarse, se les pueden asignar direcciones IP discretas y las vulnerabilidades de seguridad que explotan el espacio del usuario están contenidas en el resto del sistema.
¿Dónde usarías LXC versus algún otro tipo de virtualización? Depende, pero LXC debería proporcionar menos penalización de virtualización que cualquier otro método de vitualización, ya que es el mismo núcleo que media todas las llamadas de espacio de usuario en lugar de un hipervisor que finge ser hardware para un grupo de imágenes de sistema operativo que esperan comunicarse con el hardware físico. Entonces, si tiene un montón de procesamiento que necesita la misma versión del sistema operativo, y puede reiniciarse al mismo tiempo para obtener actualizaciones, LXC podría proporcionar una forma de bajo costo para ejecutar todo eso de forma segura y con administración de recursos.
LXC es un medio para aislar sistemas / procesos en el núcleo. El sistema está bloqueado en un "contenedor" para que no pueda interactuar con nada fuera de ese contenedor. De ahí el nombre de Contenedores Linux.
Podría ser útil para muchas cosas, una de las cuales sería aislar los servicios que se ejecutan en una máquina. Si uno de estos servicios se ve comprometido, el sistema host en sí (junto con los otros servicios que se ejecutan en sus propios LXC) no se vería afectado. Incluso podría usarse como un medio tonto para dar a cada usuario acceso root a su propio sistema, sin preocuparse de que interactúen entre sí.
La mayoría de las otras virtualizaciones "comunes" imponen una gran sobrecarga de uso de recursos debido a la necesidad de emular dispositivos de hardware. LXC no requiere ningún tipo de emulación para dispositivos de hardware, ya que cada LXC tiene acceso directo limitado / no directo al hardware. Cada sistema está "ejecutándose" en el host, pero no puede afectar nada fuera de su contenedor. Este tipo de virtualización se ha llamado virtualización a nivel del sistema operativo (google it). Lo que esencialmente significa muy poca / inexistente sobrecarga para ejecutar un contenedor de Linux. Por lo tanto, puede tener cientos de LXC en una máquina determinada, pero se quedaría sin recursos con bastante rapidez utilizando el software de máquina virtual "común".
En realidad, estoy más familiarizado con Linux-Vserver, pero la teoría es muy parecida.
La forma más sencilla de entenderlo es aprender qué hace chroot. chroot le permite "iniciar sesión" en una carpeta de un sistema similar a Unix, como si fuera el sistema completo por derecho propio. En otras palabras:
si usted tiene:
/
/boot
/etc
/home
...
etc., entonces puede agregar un directorio some_new_install:
/
/some_new_install
/boot
/etc
/home
/usr
...
/boot
/etc
/home
/usr
...
e inicie sesión en / some_new_install. Entonces / some_new_install / etc es el nuevo / etc, por ejemplo, y el / etc original está oculto y (en su mayoría) inaccesible. / usr / bin podría ser diferente del original, con diferentes programas. MySQL podría ser el mismo programa en / usr / bin / mysql, pero con diferentes datos en / var / lib / mysql.
El sistema de archivos ha sido virtualizado; ha dividido su sistema de archivos original, compartiendo sus recursos, aislando esos recursos de otros recursos virtualizados.
Esto es muy bueno En lugar de ejecutar una copia virtual completamente nueva de Unix, solo para ejecutar un programa adicional, puede saltar a un sistema de archivos virtual y ejecutarlo en el mismo núcleo, las mismas bibliotecas (si utilizó enlaces simbólicos), etc. Es MUCHO más eficiente que algo como Xen o VirtualBox.
El problema es que, si uno de esos programas, por ejemplo, MySQL, se vuelve loco y comienza a usar toda su CPU e intercambiar en el disco, todavía afectará al resto de la máquina, porque solo se virtualizó el sistema de archivos, no la CPU o rendimiento subyacente del disco. Las direcciones IP y los puertos tampoco están virtualizados, por lo que si dos programas envían información en la red, lo harán desde las mismas IP, lo que podría causar conflictos. Del mismo modo, si dos copias de mysql intentan escuchar en un puerto, la segunda fallará porque el puerto está en uso.
LXC resuelve esto virtualizando no solo el sistema de archivos, sino también los ips / puertos / interfaces de red, la CPU, el uso de memoria, etc.
LXC no es tan seguro como las máquinas virtuales completas, pero en general, es la solución superior. Después de todo, los sistemas operativos se tratan de compartir recursos de forma segura. La mayoría de las veces, es una tontería ejecutar múltiples sistemas operativos para hacer eso, solo necesitamos un mejor sistema operativo con un mejor aislamiento. Eso es lo que proporcionan LXC y herramientas similares.