Solaris Containers (que incluye Solaris Zones ) es una implementación de tecnología de virtualización a nivel de sistema operativo para sistemas x86 y SPARC, lanzada públicamente por primera vez en febrero de 2004 en la versión beta 51 de Solaris 10 , y posteriormente en la primera versión completa de Solaris 10 en 2005. Está presente en las distribuciones illumos (anteriormente OpenSolaris ), como OpenIndiana , SmartOS , Tribblix y OmniOS, y en la versión oficial de Oracle Solaris 11.
Un contenedor Solaris es la combinación de controles de recursos del sistema y la separación de límites proporcionada por zonas . Las zonas actúan como servidores virtuales completamente aislados dentro de una única instancia del sistema operativo. Al consolidar múltiples conjuntos de servicios de aplicaciones en un solo sistema y colocar cada uno en contenedores de servidores virtuales aislados, los administradores del sistema pueden reducir costos y proporcionar la mayoría de las mismas protecciones que las de máquinas separadas en una sola máquina. [ 1 ]
Terminología
El nombre de esta tecnología cambió durante su desarrollo y los eventos públicos previos al lanzamiento. Antes del lanzamiento de Solaris Zones en 2005, un contenedor Solaris era cualquier tipo de carga de trabajo limitada por las funciones de administración de recursos de Solaris. Estas últimas habían sido un paquete de software independiente en el pasado. Para 2007, el término "contenedores Solaris" pasó a referirse a una zona Solaris combinada con controles de administración de recursos.
Posteriormente, se produjo una evolución gradual que llevó a que Solaris Containers se refiriera específicamente a zonas no globales, con o sin gestión de recursos adicional. Las zonas alojadas en una zona global se conocen como "zonas no globales", aunque a veces se las denomina simplemente "zonas". Se desaconseja el uso del término "zona local", ya que en este contexto "local" no es un antónimo de "global". La zona global tiene visibilidad de todos los recursos del sistema, ya sean asociados a la zona global o a una zona no global. Salvo que se indique lo contrario, en este artículo el término "zona" se referirá a las zonas no globales.
Para simplificar la terminología, Oracle dejó de usar el término Contenedor en Solaris 11 y volvió a utilizar el término Zona Solaris, independientemente del uso de controles de administración de recursos.
Descripción
Cada zona tiene asignado un nombre de nodo, acceso a interfaces de red virtuales o físicas [ 2 ] y almacenamiento; no se requiere que una zona tenga una cantidad mínima de hardware dedicado, aparte del almacenamiento en disco necesario para su configuración única. Específicamente, no requiere una CPU, memoria, interfaz de red física o HBA dedicadas , aunque cualquiera de estas se puede asignar específicamente a una zona. [ 3 ]
Cada zona cuenta con un perímetro de seguridad que impide que un proceso asociado a una zona interactúe con procesos en otras zonas o los observe. Cada zona puede configurarse con su propia lista de usuarios. El sistema gestiona automáticamente los conflictos de ID de usuario; es decir, dos zonas de un sistema podrían tener definido el ID de usuario 10000, y cada una se asignaría a su propio identificador global único. [ 4 ]
Una zona puede estar en uno de los siguientes estados:
- Configurado: La configuración se completó y se confirmó.
- Incompleto: Estado de transición durante la operación de instalación o desinstalación.
- Instalado: Los paquetes se han instalado correctamente.
- Listo: La plataforma virtual ha sido establecida.
- En ejecución: La zona se inició correctamente y ahora está en funcionamiento.
- Apagando: La zona está en proceso de apagado ; este es un estado temporal que lleva a "Caído".
- Caído: La zona ha completado el proceso de apagado y está caída ; este es un estado temporal que lleva a "Instalado".
Algunos programas no se pueden ejecutar dentro de una zona no global; normalmente, esto se debe a que la aplicación requiere privilegios que no se pueden otorgar dentro de un contenedor. Dado que una zona no tiene su propio núcleo independiente (a diferencia de una máquina virtual de hardware ), las aplicaciones que requieren la manipulación directa de las características del núcleo, como la capacidad de leer o modificar directamente el espacio de memoria del núcleo, pueden no funcionar dentro de un contenedor.
Recursos necesarios
Las zonas generan una sobrecarga muy baja en la CPU y la memoria. La mayoría de los tipos de zonas comparten el espacio de direcciones virtuales de la zona global. Una zona puede asignarse a un grupo de recursos (conjunto de procesadores más clase de planificación) para garantizar un uso determinado, puede limitarse a una capacidad de cómputo fija ("CPU limitada") o puede recibir participaciones mediante una planificación de reparto equitativo . [ 5 ]
Actualmente, se pueden crear un máximo de 8191 zonas no globales dentro de una única instancia del sistema operativo. Las "Zonas dispersas", en las que la mayor parte del contenido del sistema de archivos se comparte con la zona global, pueden ocupar tan solo 50 MB de espacio en disco. Las "Zonas raíz completas", en las que cada zona tiene su propia copia de los archivos del sistema operativo, pueden ocupar desde varios cientos de megabytes hasta varios gigabytes, dependiendo del software instalado. El límite de 8191 se debe al límite de 8192 conexiones de bucle invertido por instancia de Solaris. Cada zona necesita una conexión de bucle invertido. La zona global dispone de una, dejando 8191 para las zonas no globales.
Incluso con zonas raíz completas, los requisitos de espacio en disco pueden ser insignificantes si el sistema de archivos del sistema operativo de la zona es un clon ZFS de la imagen de la zona global, ya que solo es necesario almacenar en disco los bloques que difieren de una imagen de instantánea; este método también permite crear nuevas zonas en pocos segundos.
Zonas de marca
Aunque todas las zonas del sistema comparten un núcleo común, se ha añadido un conjunto de características adicionales denominado zonas de marca ( BrandZ, por sus siglas en inglés). Esto permite que las zonas individuales se comporten de forma distinta a la marca predeterminada de la zona global. Las marcas existentes (octubre de 2009) se pueden agrupar en dos categorías:
- Marcas que no realizan traducción de llamadas al sistema:
- 'nativo' es el valor predeterminado para Solaris 10.
- 'ipkg' es el valor predeterminado para OpenSolaris , OpenIndiana y OmniOS.
- 'joyent' es el nombre predeterminado para SmartOS.
- 'cluster' se utiliza para las zonas de Solaris Cluster.
- 'labeled' se utiliza para zonas en un entorno de Solaris Trusted Extensions.
- Marcas que realizan traducción de llamadas al sistema:
- 'solaris8' proporciona un entorno Solaris 8 en un sistema Solaris 10, incluyendo la traducción de llamadas al sistema Solaris 8 a llamadas al sistema Solaris 10 (disponible solo en sistemas SPARC ).
- 'solaris9' proporciona un entorno Solaris 9 en un sistema Solaris 10, incluyendo la traducción de llamadas al sistema Solaris 9 a llamadas al sistema Solaris 10 (disponible solo en sistemas SPARC).
- 'lx' proporciona un entorno Red Hat Enterprise Linux 3 en un sistema Solaris 10, incluyendo la traducción de llamadas al sistema de RHEL 3 a llamadas al sistema de Solaris 10 (disponible solo en sistemas x86). En SmartOS, las zonas de marca lx pueden proporcionar un entorno de ejecución para la mayoría de las distribuciones Linux modernas, incluyendo Ubuntu, Debian, CentOS, Alpine y otras. La compatibilidad con LX no se ha incorporado a illumos.
- 's10brand' proporciona un entorno Solaris 10 en un sistema OpenSolaris u Oracle Solaris 11, incluyendo la traducción de llamadas al sistema Solaris 10 a llamadas al sistema OpenSolaris/Oracle Solaris 11.
- 'solaris-kz' proporciona una instancia separada de Solaris 11.2 o posterior, con su propio kernel y paquetes independientes, en un sistema Oracle Solaris 11.2 o posterior. [ 6 ] Esta característica estuvo disponible públicamente por primera vez en la versión beta de Solaris 11.2 (descarga pública). [ 7 ]
La marca de una zona se define en el momento de su creación. La segunda categoría se implementa mediante puntos de interposición dentro del núcleo del sistema operativo que permiten modificar el comportamiento de las llamadas al sistema , la carga de procesos , la creación de subprocesos y otros elementos.
Para la marca 'lx', se requieren las bibliotecas de Red Hat 3 o de una distribución equivalente como CentOS para completar el entorno emulado.
Documentación
El sistema operativo Solaris proporciona páginas de manual para Solaris Containers de forma predeterminada; se puede encontrar documentación más detallada en varios recursos técnicos en línea.
El primer documento publicado y referencia práctica para Solaris Zones fue escrito en febrero de 2004 por Dennis Clarke en Blastwave, proporcionando los aspectos esenciales para comenzar. Este documento fue ampliado considerablemente por Brendan Gregg en julio de 2005. [ 8 ] Los contenedores de Solaris 8 y Solaris 9 fueron documentados en detalle por Dennis Clarke en Blastwave nuevamente en abril de 2008. El documento de Blastwave sobre contenedores de Solaris 8 y Solaris 9 se publicó muy pronto en el ciclo de lanzamiento de la tecnología de contenedores de Solaris, y las acciones e implementación en Blastwave dieron como resultado un seguimiento por parte del departamento de marketing de Sun Microsystems. El libro Oracle Solaris 10 System Virtualization Essentials, escrito por Jeff Victor y otros, ofrece detalles de las características y mejores prácticas. Se puede encontrar documentación más extensa en el sitio de documentación de Oracle. [ 9 ]
Problemas de implementación
A partir de Solaris 10 10/08, las zonas de marca son compatibles con la arquitectura sun4us (servidores Fujitsu PRIMEPOWER) mediante los paquetes FJSVs8brandr y FJSVs9brandr. [ 10 ]
Véase también
Referencias
- ↑ "Introducción a las zonas de Oracle Solaris" .
- ↑ "Interfaces de red de zona" .
- ↑ "Capacidades proporcionadas por zonas no globales" .
- ↑ "Capacidades proporcionadas por zonas no globales" .
- ↑ "Administración de Oracle Solaris 11.1: Zonas de Oracle Solaris, Zonas de Oracle Solaris 10 y Gestión de recursos - Controles de recursos" .
- ↑ "Acerca de las zonas del kernel de Oracle Solaris" .
- ↑ "Descargas de Oracle Solaris 11.2 Beta" .
- ↑ "Zonas" . Wiki de Solaris Internals . 6 de noviembre de 2007. Consultado el 21 de abril de 2008 .
- ↑ "Biblioteca de información de Oracle Solaris 11.1" .
- ↑ "Novedades en los paquetes Solaris 10 10/08" . Oracle . 1 de septiembre de 2008. Consultado el 1 de septiembre de 2008 .
Enlaces externos
- Documentación para Solaris Zones (Contenedores)
- Documento: Cómo empezar a crear zonas de Oracle Solaris en Oracle Solaris 11
- Blogs dedicados a Oracle Solaris Zones
- Blog de Jeff Victor
- Blog de Mike Gerdts
- Trasladar Solaris 10 zonas
- Patente clave: US 7437556 , Tucker, Andrew G.; Beck, John T. y Comay, David S. et al., "Controles de visibilidad global para particiones del sistema operativo", publicada el 10 de noviembre de 2004, asignada a Sun Microsystems Inc. , y también como EP 1475703.
- Software de Sun Microsystems
- Software de virtualización