VZ abierto

Tecnología de virtualización a nivel de sistema operativo
VZ abierto
Desarrollador(es)Comunidad Virtuozzo y OpenVZ
Lanzamiento inicial2005 ; hace 19 años (2005)
Repositorio
  • src.openvz.org/scm/ovz/openvz-docs.git
Escrito endo
Sistema operativoLinux
Plataformax86 , x86-64
Disponible enInglés
TipoVirtualización a nivel de sistema operativo
LicenciaLicencia GPL versión 2
Sitio webes:openvz.org

OpenVZ ( Open Virtuozzo ) es una tecnología de virtualización a nivel de sistema operativo para Linux . Permite que un servidor físico ejecute múltiples instancias de sistema operativo aisladas, llamadas contenedores, servidores privados virtuales (VPS) o entornos virtuales (VE). OpenVZ es similar a Solaris Containers y LXC .

OpenVZ comparado con otras tecnologías de virtualización

Mientras que las tecnologías de virtualización como VMware , Xen y KVM proporcionan una virtualización completa y pueden ejecutar múltiples sistemas operativos y diferentes versiones de kernel, OpenVZ utiliza un único kernel de Linux y, por lo tanto, solo puede ejecutar Linux. Todos los contenedores OpenVZ comparten la misma arquitectura y versión de kernel. Esto puede ser una desventaja en situaciones en las que los invitados requieren versiones de kernel diferentes a las del host. Sin embargo, como no tiene la sobrecarga de un verdadero hipervisor , es muy rápido y eficiente. [1]

La asignación de memoria con OpenVZ es flexible, ya que la memoria que no se utiliza en un entorno virtual puede ser utilizada por otros o para el almacenamiento en caché de discos . Mientras que las versiones anteriores de OpenVZ utilizaban un sistema de archivos común (donde cada entorno virtual es simplemente un directorio de archivos que está aislado mediante chroot ), las versiones actuales de OpenVZ permiten que cada contenedor tenga su propio sistema de archivos. [2]

Núcleo

El kernel OpenVZ es un kernel de Linux modificado para agregar compatibilidad con contenedores OpenVZ. El kernel modificado proporciona virtualización, aislamiento, administración de recursos y puntos de control . A partir de vzctl 4.0, OpenVZ puede funcionar con kernels Linux 3.x sin parches, con un conjunto de funciones reducido. [3]

Virtualización y aislamiento

Cada contenedor es una entidad independiente y se comporta en gran medida como lo haría un servidor físico. Cada uno tiene sus propios:

Archivos
Bibliotecas del sistema , aplicaciones , virtualizadas /procy /sys, bloqueos virtualizados , etc.
Usuarios y grupos
Cada contenedor tiene su propio usuario root , así como otros usuarios y grupos .
Árbol de procesos
Un contenedor solo ve sus propios procesos (a partir de init). Los PID están virtualizados, de modo que el PID inicial es 1, como debería ser.
Red
Dispositivo de red virtual , que permite que un contenedor tenga sus propias direcciones IP , así como un conjunto de netfilter( iptables) y reglas de enrutamiento .
Dispositivos
Si es necesario, a cualquier contenedor se le puede otorgar acceso a dispositivos reales como interfaces de red , puertos seriales , particiones de disco , etc.
Objetos del IPC
Memoria compartida , semáforos , mensajes .

Gestión de recursos

La gestión de recursos de OpenVZ consta de cuatro componentes: cuota de disco de dos niveles, programador de CPU justo, programador de E/S de disco y contadores de usuarios (consulte a continuación). Estos recursos se pueden cambiar durante el tiempo de ejecución del contenedor , lo que elimina la necesidad de reiniciar .

Cuota de disco de dos niveles
Cada contenedor puede tener sus propias cuotas de disco , medidas en términos de bloques de disco e inodos (aproximadamente, cantidad de archivos). Dentro del contenedor, es posible utilizar herramientas estándar para establecer cuotas de disco UNIX por usuario y por grupo .
Programador de CPU
El programador de CPU en OpenVZ es una implementación de dos niveles de la estrategia de programación de reparto justo. En el primer nivel, el programador decide a qué contenedor se le debe dar la porción de tiempo de CPU, en función de los valores de cpuunits por contenedor . En el segundo nivel, el programador estándar de Linux decide qué proceso ejecutar en ese contenedor, utilizando las prioridades de proceso estándar de Linux. Es posible establecer diferentes valores para las CPU en cada contenedor. El tiempo real de CPU se distribuirá proporcionalmente a estos valores. Además, OpenVZ proporciona formas de establecer límites estrictos de CPU, como el 10% de un tiempo total de CPU ( --cpulimit), limitar el número de núcleos de CPU disponibles para el contenedor ( --cpus) y vincular un contenedor a un conjunto específico de CPU ( --cpumask). [4]
Programador de E/S
De manera similar al programador de CPU descrito anteriormente, el programador de E/S en OpenVZ también es de dos niveles y utiliza el programador de E/S CFQ de Jens Axboe en su segundo nivel. A cada contenedor se le asigna una prioridad de E/S y el programador distribuye el ancho de banda de E/S disponible según las prioridades asignadas. Por lo tanto, ningún contenedor puede saturar un canal de E/S.
Contadores de usuarios
User Beancounters es un conjunto de contadores, límites y garantías por contenedor, cuyo objetivo es evitar que un solo contenedor monopolice los recursos del sistema. En los kernels OpenVZ actuales (042stab* basado en RHEL6) hay dos parámetros principales y los demás son opcionales. [5] Otros recursos son principalmente memoria y varios objetos internos del kernel, como segmentos de memoria compartida para la comunicación entre procesos y búferes de red. Cada recurso se puede ver desde /proc/user_beancountersy tiene cinco valores asociados: uso actual, uso máximo (durante la vida útil de un contenedor), barrera, límite y contador de errores. El significado de barrera y límite depende de los parámetros; en resumen, se pueden considerar como un límite suave y un límite duro. Si algún recurso alcanza el límite, se aumenta el contador de errores correspondiente. Esto permite al propietario detectar problemas al monitorear /proc/user_beancounters en el contenedor.

Puntos de control y migración en vivo

A mediados de abril de 2006 se lanzó una función de migración en vivo y puntos de control para OpenVZ. Esto permite mover un contenedor de un servidor físico a otro sin apagar el contenedor. El proceso se conoce como puntos de control: se congela un contenedor y todo su estado se guarda en un archivo en el disco. Luego, este archivo se puede transferir a otra máquina y se puede descongelar (restaurar) un contenedor allí; el retraso es de aproximadamente unos segundos. Debido a que el estado generalmente se conserva por completo, esta pausa puede parecer un retraso computacional común.

Limitaciones

De manera predeterminada, OpenVZ restringe el acceso del contenedor a dispositivos físicos reales (lo que hace que el contenedor sea independiente del hardware). Un administrador de OpenVZ puede habilitar el acceso del contenedor a varios dispositivos reales, como unidades de disco, puertos USB [6] , dispositivos PCI [7] o tarjetas de red físicas [8] .

/dev/loopNA menudo, se restringe en las implementaciones (ya que los dispositivos de bucle utilizan subprocesos del núcleo que pueden ser un problema de seguridad), lo que restringe la capacidad de montar imágenes de disco. Una solución alternativa es utilizar FUSE .

OpenVZ se limita a proporcionar solo algunas tecnologías VPN basadas en PPP (como PPTP/L2TP) y TUN/TAP. IPsec es compatible dentro de los contenedores desde el kernel 2.6.32.

En 2007 se intentó desarrollar una interfaz gráfica de usuario llamada EasyVZ, [9] pero no pasó de la versión 0.1. Hasta la versión 3.4, Proxmox VE podía utilizarse como un entorno de virtualización de servidores basado en OpenVZ con una interfaz gráfica de usuario, aunque las versiones posteriores cambiaron a LXC .

Véase también

Referencias

  1. ^ "Evaluación del rendimiento de las tecnologías de virtualización para la consolidación de servidores". Archivado desde el original el 15 de enero de 2009.
  2. ^ "Ploop - Wiki de contenedores Linux OpenVZ". Archivado desde el original el 26 de marzo de 2012.
  3. ^ Kolyshkin, Kir (6 de octubre de 2012). "OpenVZ cumple 7 años, ¡hay regalos disponibles!". Blog de OpenVZ . Consultado el 17 de enero de 2013 .
  4. ^ Página del manual vzctl(8), sección de parámetros del programador de CPU fair, http://openvz.org/Man/vzctl.8#CPU_fair_scheduler_parameters Archivado el 14 de abril de 2017 en Wayback Machine
  5. ^ "VSwap - Wiki de contenedores Linux OpenVZ". Archivado desde el original el 13 de febrero de 2013.
  6. ^ Página de manual de vzctl(8), subsección Gestión de acceso a dispositivos, http://wiki.openvz.org/Man/vzctl.8#Device_access_management
  7. ^ Página de manual de vzctl(8), sección de administración de dispositivos PCI, http://wiki.openvz.org/Man/vzctl.8#PCI_device_management
  8. ^ Página de manual de vzctl(8), sección Dispositivos de red, http://wiki.openvz.org/Man/vzctl.8#Network_devices_control_parameters
  9. ^ EasyVZ: Verwaltung gráfico para OpenVZ. Frontend para virtualización gratuita de Linux
  • Sitio web oficial
Retrieved from "https://en.wikipedia.org/w/index.php?title=OpenVZ&oldid=1213739530"