Desarrollador(es) | Comunidad Virtuozzo y OpenVZ |
---|---|
Lanzamiento inicial | 2005 (2005) |
Repositorio |
|
Escrito en | do |
Sistema operativo | Linux |
Plataforma | x86 , x86-64 |
Disponible en | Inglés |
Tipo | Virtualización a nivel de sistema operativo |
Licencia | Licencia GPL versión 2 |
Sitio web | es: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 .
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]
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]
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:
/proc
y /sys
, bloqueos virtualizados , etc.init
). Los PID están virtualizados, de modo que el PID inicial es 1, como debería ser.iptables
) y reglas de enrutamiento .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 .
--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]/proc/user_beancounters
y 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.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.
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/loopN
A 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 .