Software para virtualización Open Source y Software libre Luis Jesús Pellicer Magallón Raúl Piracés Alastuey
Qué es? Cuando hablamos de software para virtualización de sistemas operativos, hacemos referencia a lo que es un hipervisor (o monitor de máquina virtual). Es una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar, al mismo tiempo, diferentes sistemas operativos (sin modificar o modificados) en un mismo ordenador. A su vez, cabe destacar que existen dos tipos de hipervisores: Nativos: software que se ejecuta directamente sobre el hardware, para ofrecer la funcionalidad descrita. Alojados (hosted): software que se ejecuta sobre un sistema operativo para ofrecer la funcionalidad descrita. Además existe la virtualización de aplicaciones y escritorios (fuera de los llamados hipervisores).
Software y tecnologías Muchas alternativas, tanto de software como de tecnologías de virtualización. La mayoría, disponibles para todas las plataformas y S.O. Alternativas que cubren soluciones cloud, servidores y centros de datos. Cantidad de funcionalidades: virtualización por hardware, 64/32 bits, emulación de software de almacenamiento, aceleración gráfica, compartición de recursos con el sistema anfitrión, hardware emulado totalmente personalizable y mucho más...
VirtualBox, la alternativa Open Source Desarrollado por Oracle (desarrollado inicialmente por Sun Microsystems) con licencia GPLv2, es un hipervisor para arquitecturas x86, el cual puede ser instalado en multitud de sistemas operativos (anfitrión), incluyendo Linux, OS X, Windows, Solaris y Open Solaris (con adaptaciones para FreeBSD y Genode). Principalmente soporta la creación, gestión y ejecución de máquinas virtuales alojadas, con S.O. como Windows, Linux, BSD, OS/2, Solaris, Haiku, OSx86 (hackintosh) y muchos otros (además de virtualización de OS X en hardware de Apple). Para la mayoría de S.O. existe un paquete de drivers y aplicaciones del sistema ( guest additions ), el cual mejora notablemente el rendimiento, funcionamiento, habilita funcionalidades entre host y guest, además de mejorar especialmente los gráficos.
VirtualBox, la alternativa Open Source Características principales: Múltiples máquinas virtuales bajo un mismo S.O host (independientes). Virtualización basada en software y virtualización asistida por hardware. Virtualización de dispositivos (discos duros, unidades ópticas, tarjetas de red, tarjetas de sonido, controladores USB, tarjeta gráfica virtual por defecto, etc). Máquinas virtuales de 64 bits (requiere de virtualización por hardware). Capturas de estado del sistema ( Snapshots ). Modo transparente (multitarea entre aplicaciones virtualizadas y nativas). Portapapeles y carpetas compartidas. Interacción por línea de comandos. API pública. Paginación anidada para AMD-v y Intel VT. Aceleración 3D. Soporte de almacenamiento (VMDK, VHD, QEMU, HDD de Parallels, ).
VirtualBox, la alternativa Open Source
VirtualBox, la alternativa Open Source
VirtualBox, la alternativa Open Source
Otras alternativas: OpenVZ, Xen y QEMU OpenVZ Modelo de Kernel único, soporta hasta 64 CPUs y hasta 64 GB de RAM. Permite administrar varios Entornos Virtuales sin iniciar sesión en cada uno de ellos. Aísla cada uno de los entornos virtuales a nivel de archivos, usuarios, procesos red y dispositivos. Migración sin necesidad de apagado (en vivo).
Otras alternativas: OpenVZ, Xen y QEMU XEN Permite Full Virtualization (instalación de una máquina virtual como si fuera un host independiente). Paravirtualización (utiliza un kernel modificado para que pueda comunicarse con el hypervisor de XEN). Numerosas interfaces de administración Código fuente reducido. Aprovechamiento de los recursos. Migración en caliente.
Otras alternativas: OpenVZ, Xen y QEMU QEMU Soporta una gran cantidad de arquitecturas. No necesita modificar el sistema operativo huésped. Permite ejecutar binarios de linux en otras arquitecturas. Permite emular un sistema completo (procesador y periféricos).
Otras alternativas: KVM y LXC KVM Permite ejecutar huéspedes Windows, Linux, Unix. Permite ejecutar máquinas con memoria superior a la física disponible (overcommit memory). Está incluido en el kernel de Linux. Permite virtualización completa, LXC (Linux Containers) basados en cgroups Aisla, limita y prioriza los recursos del sistema sin necesidad de iniciar las máquinas virtuales gracias a que utiliza la cgroups de linux. Puede combinarse con Docker para gestionar la imagen y la presentación de los servicios de implementación. Concepto de entorno virtual no máquina virtual. Una instancia del kernel no varias (mayor velocidad).
Software basado en alternativas anteriores Como alternativas, basadas en el software anteriormente presentado, se destacan: Vagrant: creación y configuración de entornos de desarrollo virtualizados. Permite configurar un entorno de desarrollo de forma virtual. Soluciona problemas en la incorporación de personal (facilidad de instalación). Compatible con múltiples proveedores. Docker: despliegue de aplicaciones dentro de contenedores de software. Permite empaquetar y desplegar un sistema Linux en otro sistema Linux con sencillez. Ahorro de recursos debido a que solo contiene las partes del sistema necesarias para desplegar las funcionalidades utilizadas. Extiende LXC.
Software para virtualización de escritorios y aplicaciones Virtualización de escritorios: La virtualización de escritorios es la tecnología de software que separa el entorno de escritorio y la aplicación de software asociada (desde el dispositivo físico del cliente) que es usada para acceder al mismo. Ejemplos: Escritorio Remoto de Windows (RDP), Virtual Network Computing (VNC), X11... Virtualización de aplicaciones: La virtualización de aplicaciones es la tecnología de software que encapsula los programas de ordenador del sistema operativo subyacente en el que se ejecuta. Una aplicación totalmente virtualizada no está instalada en el sentido tradicional, aunque se ejecuta como si lo estuviese. Interactúa con el S.O de forma normal, aunque está aislada del mismo ( sandbox ). Ejemplos: Vagrant, VirtualBox, LXC, AppArmor, SELinux...
Por qué código abierto? Seguridad. Calidad. Personalizable. Libertad. Flexibilidad. Interoperabilidad. Auditable. Soporte. Coste.
Las empresas y el código abierto Apple: ios, OS X (y su versión server), Developer Tools, Swift Google (más de 900 proyectos): Android, Angular, Chromium, Go, Tesseract, Ganeti (virtualización), WebM, Twitter: FlockDB, Bootstrap, funcionalidades de Twitter, forks y contribuciones Microsoft: Visual Studio Code,.NET, TypeScript, Azure... Facebook: React, RocksDB, Presto... Y muchas más empresas: IBM, Oracle, Amazon, HP, Intel, Cisco Y cada vez, se unen más Por qué? *Solo algunas partes de todo el software citado están disponibles
Menor rendimiento?
Menor rendimiento?
Fin de la presentación Dudas? Preguntas?