Si un sueño se siente real, entonces ¿cómo
se siente un sueño después de que crees
que te has despertado del
sueño? ¿Y si sigue pasando?
VIRTUALIZACIÓN
Egdares Futch H.Agosto 2013
¿Qué es Virtualización?• Real vs. Virtual
– Cuentan con una esencia o efecto similar– “Formalmente” son diferentes
• Es un marco de referencia (idea/concepto) que combina o divide recursos para presentar una vista transparente de uno o más – Particionamiento de hardware/software– Simulación parcial o completa de una máquina– Emulación (igual, parcial o completa)– Tiempo compartido (cualquier tipo de compartir)
• En general, puede ser cualquier mapeo de M-a-N (M recursos “reales”, N recursos “virtuales”)
Mapeos
• 1 -> N– Multitasking
• M -> 1– Grid Computing, Clustering
• M -> N– Máquinas virtuales
No es un concepto nuevo
• Concepto con más de 40 años– IBM 7044
• Compatible Time Sharing System (CTSS)– M.I.T. – Atlas
Proyect
• Popek y Goldberg establecieron en 1974 los requerimientos para una arquitectura virtualizable
Requerimientos para una arquitectura virtualizable – Popek & Goldberg
• Equivalencia/Fidelidad– Un proceso corriendo bajo un Administrador de Máquina Virtual
(VMM) debe mostrar comportamiento idéntico a cuando se ejecuta directamente en una máquina equivalente
• Control de recursos/Seguridad– El Administrador de Máquina virtual (VMM) debe estar en control
completo de los recursos virtualizados
• Eficiencia/Desempeño– Una gran proporción de instrucciones de máquina deben ser
ejecutadas sin intervención del Administrador de Máquina Virtual (VMM)
¿Para qué podemos usar virtualización?
• Consolidación de servidores• Consolidación de aplicaciones/reducción de
licenciamiento• Hardware virtual• Debugging• Máquinas de propósito dedicado (Appliances)• Pruebas/Aseguramiento de Calidad• Recuperación de desastres
Hardware
Kernel
Librerías de Usuario
Aplicaciones
Llamadas a un API
System Calls
Instrucciones de hardware
User Space
Kernel Space
Si analizamos una arquitectura apilada
Virtualización
Virtualización
Virtualización
ConceptosVirtualización completaParavirtualización
“Virtualización" de sistema operativo
Técnicas de virtualización en hardware
• Arquitectura del Conjunto de Instrucciones (Instruction Set Architecture)– Emular el ISA en software
• Interpretar, traducir al ISA anfitrión (si se requiere)• Dispositivos implementados en software• Generalmente es ineficiente• Ejemplo: SPIM, el emulador de MIPS32
• Capa de abstracción de hardware (Hardware Abstraction Layer – HAL)– Entre “máquina real” y “emulador”– Maneja arquitecturas no virtualizables (validar, insertar código)
Ejemplos de virtualización de conjunto de instrucciones
• Traducción binaria a espacios de hardware
• Procesador Crusoe (Trasmeta)– Tecnología Code
Morphing interpretaba diversos conjuntos de instrucciones
MAME (Emulación)
Bochs
• Simulador de x86 (386, 486, Pentium, PPro)
• Corre sobre x86, PowerPC, Alpha, SPARC y MIPS
• Corre Linux, MS Windows, BSD, FreeBSD, OpenBSD, etc.
Qemu
• Emulación completa (semejante a Bochs)
• Emula diferentes arquitecturas x86, x86_64, ARM, SPARC, PowerPC y MIPS
• Emula múltiples procesadores
• Emulación en modo usuario (solo en Linux)
No sólo plataformas x86
• IBM Logical Partitioning (LPAR)– Sistemas pSeries (Power Architecture)
– Feature interesante: Microparticionamiento
Arquitectura de vmWare
vmWare internamente
Virtualización completa
• Un sistema hipervisor administra el metal
• No es necesario correr un OS modificado
• Mejor desempeño que emulación de hardware
• Mediación consume recursos
• El OS debe soportar hardware real
Xen
• Desarrollado en la Universidad de Cambridge
• Corre Linux, NetBSD, FreeBSD, Plan9, Netware y Windows
• Virtualización completa con Intel VT o con AMD Pacífica
• Permite migración de máquinas virtuales
Virtualización dentro del OS
• Crea máquinas virtuales dentro del mismo OS
• Cada máquina virtual corre mismo SO
• Aisla una máquina de otra
• Se comparten los recursos de hardware
Virtualización en móviles
• Máquina virtual Dalvik– Provee el entorno en el cual
todas las aplicaciones Android corren
– Cada aplicación Android corre dentro de su propio proceso, con su propia instancia de Dalvik
– Dalvik fue diseñado para correr en múltiples instancias de forma eficiente
Caso de Implementación en una empresa en Honduras
• Antes: servidores multiuso– Un solo equipo era servidor de base de datos,
DNS, impresión, etc.• Luego evolucionó a tener un servidor para
cada uso– Bueno desde el punto de vista de seguridad, pero
es caro y cuesta administrar– Problemas de licenciamiento: por CPU, por socket,
por «Processor Value Units», etc.
Plataforma de máquinas virtuales
• Se inicia el uso de máquinas virtuales para desarrollo y testing.
• Evolución: un «banco» de máquinas virtuales preconfiguradas
• Capacidades estáticas de procesamiento
• Siguiente paso: capacidades elásticas– Utility computing?
Plataforma de máquinas virtuales
• Sistemas operativos variados– Windows 2003, 2008, XP– Linux en varios sabores (Red Hat, Debian, Ubuntu)
• Capacidades de manejo de cargas mejoradas– Microparticionamiento– Sizing en demanda
• Capacidades de respaldo y recuperación mejoradas– VMware Vmotion– Acronis Universal Restore– Tivoli Storage Manager
Virtualización de almacenamiento
• Los controladores de disco tipo Grid permitieron «virtualizar» el almacenamiento
Amarrando todo
• Estos componentes juntos, forman una arquitectura empresarial virtualizada
Otras direcciones en virtualización…
• Virtualización de pantallas (Terminal Services, Citrix, Remote Desktop, VNC)
• Virtualización de stack de comunicaciones o redes (Software Defined Networking)
• Grid Computing / Virtual Private Servers• …
El cielo es el límite…Muchas gracias por su atención
• [email protected]• Twitter: @efutch• http://efutch.blogspot.com• http://maestros.unitec.edu/~efutch