Solaris Containers (incluido 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, 2005. Está presente en distribuciones de 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 varios conjuntos de servicios de aplicaciones en un sistema y colocar cada uno en contenedores de servidores virtuales aislados, los administradores de sistemas 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 limitada por las funciones de administración de recursos de Solaris. En un principio, este último había sido un paquete de software independiente. En 2007, el término Solaris Containers pasó a significar una zona Solaris combinada con controles de administración de recursos.
Más tarde, se produjo un cambio gradual, de modo que los contenedores de Solaris se referían 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 las llama 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 abandonó el uso del término Contenedor en Solaris 11 y volvió al uso del término Zona Solaris independientemente del uso de controles de administración de recursos.
Descripción
Cada zona tiene su nombre de nodo, acceso a interfaces de red virtuales o físicas [2] y almacenamiento asignado; no existe ningún requisito para que una zona tenga una cantidad mínima de hardware dedicado aparte del almacenamiento en disco necesario para su configuración única. En concreto, no requiere una CPU, memoria, interfaz de red física o HBA dedicados , 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 impide que un proceso asociado con una zona interactúe con procesos de otras zonas o los observe. Cada zona se puede configurar con su propia lista de usuarios independiente. El sistema administra 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 de ellas se asignaría a su propio identificador global único. [4]
Una zona puede estar en uno de los siguientes estados:
- Configurado: La configuración fue completada y confirmada.
- 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á ejecutándose.
- Apagando: La zona está en proceso de apagarse; este es un estado temporal, que lleva al estado "Inactivo".
- Abajo: La zona ha completado el proceso de apagado y está inactiva; este es un estado temporal, que lleva a "Instalada".
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 conceder dentro de un contenedor. Como una zona no tiene su propio núcleo independiente (a diferencia de una máquina virtual de hardware ), las aplicaciones que requieren manipulación directa de las características del núcleo, como la capacidad de leer o alterar 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 programación) para garantizar un uso determinado, puede limitarse a una capacidad de cómputo fija ("CPU limitada") o se le pueden asignar partes a través de una programación de reparto equitativo . [5]
Actualmente, se puede 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 de su sistema operativo, pueden ocupar desde varios cientos de megabytes hasta varios gigabytes, según el software instalado. Los límites de 8191 surgen 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 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 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 añadido un conjunto de características adicionales llamadas zonas de marca ( BrandZ , para abreviar). Esto permite que las zonas individuales se comporten de una manera 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 valor predeterminado para SmartOS
- 'cluster' se utiliza para zonas de Solaris Cluster
- 'etiquetado' 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, incluida la traducción de llamadas del sistema Solaris 8 a llamadas del sistema Solaris 10 (disponibles solo en sistemas SPARC )
- 'solaris9' proporciona un entorno Solaris 9 en un sistema Solaris 10, incluida la traducción de llamadas del sistema Solaris 9 a llamadas del sistema Solaris 10 (disponibles solo en sistemas SPARC)
- 'lx' proporciona un entorno Red Hat Enterprise Linux 3 en un sistema Solaris 10, incluida la traducción de llamadas del sistema RHEL 3 a llamadas del sistema 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, incluidas 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, incluida la traducción de llamadas del sistema Solaris 10 a llamadas del sistema OpenSolaris/Oracle Solaris 11
- 'solaris-kz' proporciona una instancia independiente de Solaris 11.2 o posterior, con su propio núcleo 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 establece en el momento en que se crea la zona. La segunda categoría se implementa con puntos de interposición dentro del núcleo 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.
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 de referencia práctica para Solaris Zones fue escrito en febrero de 2004 por Dennis Clarke en Blastwave, y proporcionaba los elementos esenciales para comenzar. Brendan Gregg amplió considerablemente este documento 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 contenedores de Solaris 8 y Solaris 9 de Blastwave se publicó en una etapa muy temprana del 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, et al., ofrece detalles de las características y las 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]
Véase también
- Virtualización a nivel de sistema operativo
- Comparación de software de virtualización de plataformas
- Maquinas virtuales
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 en los paquetes de 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)
- Documento Cómo comenzar a crear zonas de Oracle Solaris en Oracle Solaris 11
- Blogs dedicados a las zonas de Oracle Solaris
- El blog de Jeff Victor
- Blog de Mike Gerdts
- Traslado de zonas de Solaris 10
- Patente clave: US 7437556, Tucker, Andrew G.; Beck, John T. y Comay, David S. et al., "Controles de visibilidad global para particiones de sistemas operativos", publicada el 10 de noviembre de 2004, asignada a Sun Microsystems Inc. , y también como EP 1475703