¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Estrategias de virtualización con Linux
Gunnar Wolf —
[email protected]
http://www.gwolf.org/soft/virt
Instituto de Investigaciones Económicas, UNAM
Desarrollador del proyecto Debian
Encuentro Nacional de Linux y Software Libre
Octubre 25, 2008
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Temas
1 ¿Que es la virtualización?
2 Emulación
3 Virtualización asistida por hardware (HVM)
4 Paravirtualización
5 Contenedores
6 Traducción de APIs
7 A modo de conclusión
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
¿Qué significa virtualizar en el cómputo?
Proveer de algo que no está allí, aunque parece estarlo
Ofrecer y mantener una ilusión, un truco de magia
La virtualización es, en términos generales, ofrecer recursos que no
existen en realidad — Y mantener la ilusión, tan bien como sea
posible.
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
¿Qué entendemos por virtualización?
La virtualización es uno de los términos de moda hoy en día
— Pero lleva existiendo de diferentes maneras por muchas
décadas
En esta presentación cubriremos algunas estrategias y
tecnologías de virtualización comunes hoy en día, con
diferentes usos y propósitos
...Muchos de los cuales utilizamos día a día sin pensar en ello.
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
¿Diferentes tecnologías?
Como vimos en un principio, muchas cosas pueden ser
entendidas por virtualización
Hay muchos diferentes casos de uso, y cada uno requiere una
solución diferente, adecuada
Incluso para un mismo caso de uso — Hay más de una
manera de llegar al mismo resultado. Y debemos permitir que
la selección natural haga su trabajo.
Las diferentes tecnologías no tienen líneas divisorias tan
claras; un proyecto puede caer en varias clasificaciones, o caer
en una e ir migrando hacia otra
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Temas
1 ¿Que es la virtualización?
2 Emulación
3 Virtualización asistida por hardware (HVM)
4 Paravirtualización
5 Contenedores
6 Traducción de APIs
7 A modo de conclusión
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Emulación
La técnica de virtualización disponible hace más tiempo en
computadoras personales
El procesador anfitrión traduce cada una de las instrucciones,
simulando en tiempo de ejecución hardware inexistente
Fue muy popular en la segunda mitad de los 1980 y a
principios de los 1990, durante la explosión de las
arquitecturas
Es, sin embargo, altamente ineficiente — Resulta muy caro en
tiempo de cómputo.
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Emulación de una arquitectura existente
Se puede hacer a diferentes profundidades — Desde emular el
sistema completo (desde el juego de instrucciones) hasta
emular únicamente parte del chipset (muy común en
arquitecturas m680x0)
La arquitectura Amiga de Commodore es la primera de uso
personal en ofrecer varios programas emuladores — Emular
Macintosh y Atari ST (misma plataforma m680x0) funcionaba
a velocidad nativa... Pero la emulación de PC (incluso
emulando sólo el XT 8088) era ridículamente lenta
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Utilidad actual de la emulación
A diferencia de lo que ocurría hace 20 años, hoy en día este
tipo de emulación es muy socorrido en el “mundo real”
Los sistemas embebidos son cada vez más comunes —
Computadoras pequeñas, limitadas en recursos (memoria,
almacenamiento, velocidad), y diseñados para correr con el
menor consumo energético posible, aún a costa de un menor
rendimiento
Celulares, PDAs, cámaras, scanners mecánicos, controladores
de equipo industrial... Una rama muy importante del mercado
actual
Emular m680x0 o ARM en un procesador estándar de
escritorio llega a ser más rápido incluso que el hardware
nativo.
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Emuladores libres
Algunos emuladores disponibles en Debian:
qemu (multiplataforma), apple2, atari800, dosemu (aplicaciones
MS-DOS modo real), e-uae (Amiga m680x0, sin MMU), nestra
(Nintento NES), pose (PDAs Palm), specemu (ZX Spectrum
48k), stella (Atari 2600), vice (Commodore PET, VIC20, 64,
128, CBM-II, PLUS/4), xtrs (TRS-80), aranym (Atari ST),
coldfire (Frescale Coldfire 5206), dosbox (aplicaciones MS-DOS
modo real con soporte de gráficos), hatari (Atari STe),
hercules(IBM System/370, ESA/390, z/Architecture), pearpc
(PowerPC), simh (Equipos históricos DEC, Honeywell, HP, IBM y
otros), dgen (Sega Genesis/MegaDrive)
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Emulando arquitecturas inexistentes
También podemos emular una arquitectura que nunca ha sido
implementada
La idea viene también de los 1970: En pos de la portabiliidad,
UCSD definió un p-system, a ser ejecutado en una p-machine.
Esta computadora nunca existiría en realidad, pero varias
arquitecturas ofrecerían emuladores de p-machines.
La arquitectura de la p-machine está definida en torno al
lenguaje Pascal
Todo programa hecho para correr en una p-machine correría
en cualquier arquitectura que lo implementara.
Los p-systems gozaron de relativa popularidad hasta mediados
de los 1980, con implementaciones en arquitecturas 6502, Z80
y 80x86.
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Arquitecturas plantadas meramente en teoría
Hay arquitecturas que han sido concebidas exclusicamente
para propósitos académicos
Donald Knuth diseñó la arquitectura MIX en los 1960 como
arquitectura ideal para los ejemplos y ejercicios de su célebre
libro The Art of Computer Programming, y su sucesora MMIX
en 1999
Es una arquitectura apta para la enseñanza, pero inviable para
un sistema real. MIX Plantea un sistema híbrido
binario-decimal, de 6 bits en modo binario o 2 dígitos en
modo decimal; MMIX es una arquitectura RISC con 256
registros de 64 bits
Existen MIXWARE/MMIXWARE —a emuladores
(incompletos) de MIX y MMIX.
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Arquitecturas emuladas, de uso diario — e inexistentes
En la década de los 1990, Sun Microsystems retomó las ideas
de los p-systems, y diseñó la arquitectura Java
Java está pensado para ser una arquitectura idealizada,
nativamente orientada a objetos, buscando dar una completa
portabilidad al código
Write Once, Run Anywhere
Microsoft retomó varios años más tarde esta misma idea,
creando la arquitectura .NET — Su principal contribución es
el estar planteada como independiente de lenguaje
Desde el 2000, las comunidades (principalmente) de Perl y
Python están implementando Parrot, una máquina virtual
apta para lenguajes de scripts
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
¿Por qué utilizar/emular estas arquitecturas?
Las abstracciones presentadas por estas máquinas virtuales
resultan demasiado complejas para ser implementadas
directamente en el hardware
Son, sin embargo, muy útiles al programador, quien
sabrá sacarles muy buen jugo
Sun diseñó una arquitectura de chips, MAJC (1999), para
ejecutar directamente código Java — Pero los chips
resultaban demasiado complejos y, por tanto, caros
MAJC implementaba una arquitectura VLIW y optimización
basada en múltiples hilos de ejecución — Estas ideas han sido
retomadas en las generaciones actuales de CPUs
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Transmeta: El procesador emulador
En el 2000, Transmeta anunció su procesador Crusoe,
orientado al mercado de bajo consumo energético
Su arquitectura está diseñada para ejecutar —a través del
Code Morphing Software— código diseñado para otras
arquitecturas
La única arquitectura implementada en CMS es la Intel x86,
pero las dos generaciones de procesadores Transmeta (Crusoe
y Efficeon) son completamente distintas, y gracias al CMS,
esto es transparente al usuario
...Es tecnología muy interesante, y se ha aplicado ya fuera de
Transmeta. Sin embargo, personalmente dudo de que
Transmeta (como compañía independiente) tenga viabilidad a
futuro.
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
La emulación, mejorada
Las técnicas utilizadas para la emulación han mejorado
tremendamente en los últimos diez años
Los emuladores hacen hoy traducción predictiva y compilación
del código a ejecutar a formatos nativos (traducción dinámica)
Incluso guardan copias convertidas/compiladas del código a
emular (Just In Time)
En líneas generales, la vieja fama de la lentitud de las
máquinas virtuales ya no se justifica
Las máquinas virtuales pueden llamar a código nativo para
puntos críticos donde hace falta optimización
...Y las usamos transparentemente, todos los días.
¿Qué es?
Emulación
Virt.asistida (HVM)
Paravirtualización
Contenedores
Traducción
Conclusiones
Qemu: un caso muy especial
Bochs es un emulador libre de x86; existe desde 1994,
orientado a las estaciones de trabajo Unix.
Bochs implementó un BIOS básico de PC, y la emulación de
los principales dispositivos (discos, consola, VGA, puertos...)
Plex86 (originalmente FreeMWare, 1999, haciendo clara
alusión a VMWare) ofrece una fuerte acel
Comentarios de: Estrategias de virtualización con Linux (0)
No hay comentarios