Solaris Containers (incluidas las zonas de Solaris ) 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 51 beta de Solaris 10 y, posteriormente, en la primera versión completa de Solaris 10, 2005. Está presente en distribuciones de illumos (antes OpenSolaris ), como OpenIndiana , SmartOS , Tribblix y OmniOS, así como en la versión oficial de Oracle Solaris 11.
Autor (es) original (es) | Microsistemas solares |
---|---|
Desarrollador (es) | illumos y Oracle |
Lanzamiento inicial | Enero de 2005 |
Escrito en | C |
Sistema operativo | Oracle Solaris |
Plataforma | SPARC , x86 |
Disponible en | inglés |
Tipo | Virtualización a nivel de sistema operativo |
Licencia | CDDL , propietario |
Sitio web | oracle |
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 sola instancia de sistema operativo. Al consolidar varios conjuntos de servicios de aplicaciones en un sistema y colocar cada uno en contenedores de servidores virtuales aislados, los administradores del sistema pueden reducir los costos y proporcionar la mayoría de las mismas protecciones de máquinas separadas en una sola máquina. [1]
Terminología
El nombre de esta tecnología cambió durante el 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 restringida por las funciones de administración de recursos de Solaris. Este último había sido un paquete de software independiente en la historia anterior. En 2007, el término Contenedores Solaris pasó a significar una Zona Solaris combinada con controles de gestión de recursos.
Más tarde, hubo un movimiento gradual de modo que Solaris Containers se refirió específicamente a zonas no globales, con o sin administración de recursos adicional. Las zonas alojadas por una zona global se conocen como "zonas no globales", pero a veces se denominan simplemente "zonas". El término "zona local" se desaconseja específicamente, ya que en este uso "local" no es un antónimo de "global". La zona global tiene visibilidad de todos los recursos del sistema, ya sea que estén asociados con la zona global o con una zona no global. A menos que se indique lo contrario, "zona" se referirá a zonas no globales en este artículo.
Para simplificar la terminología, Oracle eliminó el uso del término Contenedor en Solaris 11 y ha vuelto a usar el término Zona Solaris independientemente del uso de controles de administración de recursos.
Descripción
Cada zona tiene su propio nombre de nodo, acceso a interfaces de red virtuales o físicas, [2] y almacenamiento asignado; No es necesario que una zona tenga una cantidad mínima de hardware dedicado que no sea el almacenamiento en disco necesario para su configuración única. Específicamente, no requiere una CPU dedicada, memoria, interfaz de red física o HBA , aunque cualquiera de estos puede asignarse específicamente a una zona. [3]
Cada zona tiene un límite de seguridad que la rodea, lo que evita que un proceso asociado con una zona interactúe o observe procesos en otras zonas. Cada zona se puede configurar con su propia lista de usuarios separada. El sistema gestiona automáticamente los conflictos de ID de usuario; es decir, dos zonas de un sistema podrían tener un ID de usuario 10000 definido 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 confirmó.
- Incompleto: estado de transición durante la operación de instalación o desinstalación.
- Instalado: los paquetes se han instalado correctamente.
- Listo: se ha establecido la plataforma virtual.
- En ejecución: la zona se inició correctamente y ahora se está ejecutando.
- Cerrando: La zona está en proceso de cerrarse; este es un estado temporal que conduce a "Inactivo".
- Inactivo: la zona ha completado el proceso de apagado y está inactiva; este es un estado temporal que conduce a "Instalado".
Algunos programas no se pueden ejecutar desde una zona no global; normalmente, esto se debe a que la aplicación requiere privilegios que no se pueden otorgar dentro de un contenedor. Como una zona no tiene su propio kernel separado (a diferencia de una máquina virtual de hardware ), las aplicaciones que requieren la manipulación directa de las características del kernel, como la capacidad de leer o alterar directamente el espacio de memoria del kernel, pueden no funcionar dentro de un contenedor.
Recursos necesarios
Las zonas inducen 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 ser asignada a un fondo de recursos (conjunto de procesadores más clase de planificación) para garantizar determinados usos, o puede ser limitada a una capacidad de computación fijo ( "CPU cubiertas") o se puede dar acciones a través de la programación de participación equitativa . [5]
Actualmente, se puede crear un máximo de 8191 zonas no globales dentro de una única instancia de 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. "Whole Root Zones", en el que cada zona tiene su propia copia de los archivos de su sistema operativo, puede ocupar desde varios cientos de megabytes hasta varios gigabytes, dependiendo del software instalado. El límite de 8191 surge del límite de 8192 conexiones de bucle invertido por instancia de Solaris. Cada zona necesita una conexión de bucle invertido. La zona global obtiene uno, dejando 8.191 para las zonas no globales.
Incluso con Whole Root Zones, los requisitos de espacio en disco pueden ser insignificantes si el sistema de archivos del SO de la zona es un clon ZFS de la imagen de la zona global, ya que solo los bloques diferentes de una imagen instantánea deben almacenarse en el disco; este método también permite crear nuevas zonas en unos pocos segundos.
Zonas de marca
Aunque todas las zonas del sistema comparten un núcleo común, se ha agregado un conjunto de características adicionales llamadas zonas de marca ( BrandZ para abreviar). Esto permite que las zonas individuales se comporten de una manera diferente 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 la traducción de llamadas al sistema:
- 'nativo' es el predeterminado para Solaris 10
- 'ipkg' es el valor predeterminado para OpenSolaris , OpenIndiana y OmniOS
- 'joyent' es el predeterminado para SmartOS
- 'cluster' se utiliza para las zonas de Solaris Cluster
- 'etiquetado' se utiliza para zonas en un entorno Solaris Trusted Extensions
- Marcas que realizan la traducción de llamadas al sistema:
- 'solaris8' proporciona un entorno Solaris 8 en un sistema Solaris 10, incluida la traducción de las llamadas del sistema Solaris 8 a las llamadas del sistema Solaris 10 (disponible solo en sistemas SPARC )
- 'solaris9' proporciona un entorno Solaris 9 en un sistema Solaris 10, incluida la traducción de las llamadas del sistema Solaris 9 a las llamadas del sistema Solaris 10 (disponible solo en sistemas SPARC)
- 'lx' proporciona un entorno Red Hat Enterprise Linux 3 en un sistema Solaris 10, incluida la traducción de las llamadas al sistema RHEL 3 a las llamadas al sistema Solaris 10 (disponible solo en sistemas x86). En SmartOS, las zonas de la marca lx pueden proporcionar un tiempo de ejecución para la mayoría de las distribuciones modernas de Linux, incluidas Ubuntu, Debian, CentOS, Alpine y otras. La compatibilidad con LX no se ha actualizado a illumos.
- 's10brand' proporciona un entorno Solaris 10 en un sistema OpenSolaris u Oracle Solaris 11, incluida la traducción de las llamadas al sistema Solaris 10 a las llamadas al sistema OpenSolaris / Oracle Solaris 11
- 'solaris-kz' proporciona una instancia separada de Solaris 11.2 o más reciente, con su propio kernel y paquetes independientes, en un sistema Oracle Solaris 11.2 o más reciente. [6] Esta función estuvo disponible públicamente por primera vez en Solaris 11.2 Beta (descarga pública). [7]
La marca de una zona se establece en el momento en que se crea la zona. La segunda categoría se implementa con puntos de interposición dentro del kernel del sistema operativo que se pueden usar para cambiar 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 bibliotecas de Red Hat 3 o una distribución equivalente como CentOS para completar el entorno emulado.
Documentacion
El sistema operativo Solaris proporciona páginas de manual para los contenedores Solaris 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 elementos esenciales para comenzar. Este documento fue ampliado en gran medida por Brendan Gregg en julio de 2005. [8] Los contenedores Solaris 8 y Solaris 9 fueron documentados en detalle por Dennis Clarke en Blastwave nuevamente en abril de 2008. El documento Blastwave Solaris 8 y Solaris 9 Containers fue muy temprano en el ciclo de lanzamiento de la tecnología Solaris Containers y las acciones y la implementación en Blastwave dieron como resultado un seguimiento por parte de marketing de Sun Microsystems. El libro Oracle Solaris 10 System Virtualization Essentials escrito por Jeff Victor, et al., Ofrece detalles de 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) a través de los paquetes FJSVs8brandr y FJSVs9brandr. [10]
Ver 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" .
- ^ "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 de los paquetes Solaris 10 10/08" . Oracle . 1 de septiembre de 2008 . Consultado el 1 de septiembre de 2008 .
enlaces externos
- Documentación para zonas de Solaris (contenedores)
- Documentar Cómo empezar a crear zonas de Oracle Solaris en Oracle Solaris 11
- Blogs dedicados a las zonas de Oracle Solaris
- Blog de Jeff Victor
- Blog de Mike Gerdts
- Mover las zonas de Solaris 10
- Patente clave: EE . UU. 7437556 , "Controles de visibilidad global para las particiones del sistema operativo", publicada el 27 de enero de 2005y también como EP 1475703