introduccióngwolf.sistop.org/laminas/x1-virtualizacion.pdf · 2017-02-17 · introducción...

58
Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización Gunnar Wolf Gunnar Wolf Virtualización

Upload: others

Post on 08-Aug-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Virtualización

Gunnar Wolf

Gunnar Wolf Virtualización

Page 2: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Índice

1 Introducción

2 Emulación

3 Virtualización por hardware

4 Paravirtualización

5 Contenedores

6 Conclusión y nuevos conceptos

Gunnar Wolf Virtualización

Page 3: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Qué significa virtualizar?

Proveer algo que no está allí, aunque parece estarloOfrecer y mantener una ilusión

Un truco de magia

La virtualización es, en términos generales, ofrecer recursos que noexisten en realidad — Y mantener la ilusión, tan bien como sea

posible.

Gunnar Wolf Virtualización

Page 4: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Ámbitos de virtualización

Es un término de moda, que nos encontraremos cubriendo muydistintas tecnologíasLleva existiendo –de diferentes maneras– muchas décadasCubriremos algunas estrategias y tecnologías de virtualizacióncomunes hoy en día

Con diferentes usos y propósitosMuchos de los cuales utilizamos día a día sin pensar en ello

Gunnar Wolf Virtualización

Page 5: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Diferentes tecnologías?

Muchas cosas pueden ser entendidas por virtualizaciónHay muchos diferentes casos de uso, y cada uno requiere unasolución diferenteIncluso para un mismo caso de uso, hay más de una manera dellegar al mismo resultado

Hay espacio para que la selección natural haga su trabajoLas diferentes tecnologías no tienen líneas divisorias tan claras

Un proyecto pueden caer en varias clasificacionesO ser originalmente de un tipo, e ir migrando naturalmentehacia otro

Gunnar Wolf Virtualización

Page 6: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Índice

1 Introducción

2 Emulación

3 Virtualización por hardware

4 Paravirtualización

5 Contenedores

6 Conclusión y nuevos conceptos

Gunnar Wolf Virtualización

Page 7: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Qué es emular?

La técnica de virtualización disponible hace más tiempo encomputadoras personalesEl procesador anfitrión traduce cada una de las instrucciones,simulando en tiempo de ejecución hardware inexistenteFue muy popular hacia la segunda mitad de los 1980 y aprincipios de los 1990, durante la explosión de las arquitecturasEs altamente ineficiente — Resulta muy caro en tiempo decómputo

Gunnar Wolf Virtualización

Page 8: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Emular o simular?

Un emulador busca imitar el comportamiento completo delsistema destino

Emular: Imitar las acciones de otro, procurando igualarlo osuperarlo (WordReference.com)Reproduce todos los procesos internosImplementa los mismos mecanismos

Un simulador simula o finge las áreas de interés del sistemadestino

Puede emplear datos para generar respuestas predefinidas,obviando (brincándose) procesos

Gunnar Wolf Virtualización

Page 9: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Emular o simular? Un ejemplo

Un simulador de vuelo no nos lleva a ningún lugar, aunque presenteuna cabina como la de un avión real

Un emulador busca ejecutar software arbitrario sin que éste detectela diferencia

Gunnar Wolf Virtualización

Page 10: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Emulación de una arquitectura existente

Se puede hacer a diferentes profundidadesDesde emular el sistema completo (juego de instrucciones,chipset, buses, etc.)Hasta emular únicamente parte del chipset (muy común enarquitecturas m680x0)

La arquitectura Amiga de Commodore es la primera de usopersonal en ofrecer varios programas emuladores

Macintosh y Atari ST (misma plataforma m680x0) a velocidadnativaPlataforma PC, pero muy, muy lenta (incluso XT 8088)

Gunnar Wolf Virtualización

Page 11: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Utilidad actual de la emulación

A difrencia de lo que ocurría hace 20 años, hoy en día estetipo 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)Diseñadas para correr con el menor consumo energético posibleAún a costa de un menor rendimiento

Celuluares, cámaras, ruteadores, scanners, controladores deequipo industrial. . .

Parte muy importante del mercado

Emular m680x0 o ARM en un buen equipo de escritorio resultaen velocidad comparable al hardware nativo

Gunnar Wolf Virtualización

Page 12: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Emulando arquitecturas inexistentes

También podemos emular una arquitectura que nunca ha sidoimplementadaLa idea viene también de los 1970

En pos de la portabilidad, UCSD definió un p-system, a serejecutado en una p-machineEsta computadora nunca existiría en realidad, pero variasarquitecturas existentes ofrecerían emuladores de p-machines

La arquitectura de la p-machine está definida en torno allenguaje Pascal

Gunnar Wolf Virtualización

Page 13: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Emulando arquitecturas inexistentes

Todo programa hecho para correr en una p-machine correríaen cualquier arquitectura que lo implementaraLos p-systems gozaron de relativa popularidad hasta mediadosde los 1980, con implementaciones en arquitecturas 6502, Z80y 80x86

Gunnar Wolf Virtualización

Page 14: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Arquitecturas emuladas, de uso diario — E inexistentes

En la década de los 1990, Sun Microsystems retomó las ideasde los p-systems, y diseñó la arquitectura JavaJava está pensado para ser una arquitectura idealizada

Nativamente orientada a objetosBuscando dar una completa portabilidad al códigoSlogan: Write Once, Run Anywhere

Microsoft retomó varios años más tarde esta misma idea,creando la arquitectura .NET

Su principal contribución es plantear a la máquina virtual comoindependiente del lenguaje de programación

Desde el 2000, las comunidades (principalmente) de Perl yPython han implementado Parrot

Máquina virtual apta para lenguajes de script

Gunnar Wolf Virtualización

Page 15: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Esquema de la arquitectura .NET

Figura: Arquitectura de la infraestructura de lenguajes comunes (CLI) de.NET (Imagen: Wikipedia)

Gunnar Wolf Virtualización

Page 16: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Por qué utilizar/emular estas arquitecturas?

Las abstracciones presentadas por estas máquinas virtualesresultan demasiado complejas para ser implementadasdirectamente en hardwareSon, sin embargo, muy útiles al programador, que sabrásacarles buen jugoSun diseñó la arquitectura MAJC (1999) para ejecutardirectamente código Java

Los chips resultaban demasiado complejos y carosFracaso comercial

MAJC implementaba una arquitectura VLIW y optimizaciónbasada en múltiples hilos de ejecución

Ideas retomadas para generaciones actuales de CPUs

Gunnar Wolf Virtualización

Page 17: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Transmeta: El procesador emulador

En el 2000, Transmeta anunció su procesador Crusoe,orientado al mercado de bajo consumo energéticoSu arquitectura está diseñada para ejecutar código diseñadopara otras arquitecturas

Traducido a través del microcódigo: Code Morphing Software(Software de transformación de código)

Gunnar Wolf Virtualización

Page 18: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Transmeta: El procesador emulador

La única arquitectura implementada en CMS es la Intel x86Pero las dos generaciones de procesadores Transmeta (Crusoey Efficeon) son completamente distintasGracias a CMS, esta difrencia es transparente al usuario

Tecnología muy interesante, y aplicada ya fuera de TransmetaA pesar de esto, Transmeta colapsó como empresa.

Gunnar Wolf Virtualización

Page 19: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

La emulación, mejorada

Las técnicas utilizadas para la emulación han mejoradotremendamente en los úlitmos diez añosLos emuladores hacen hoy traducción predictiva y compilacióndel código a ejectuar a formatos nativos (traducción dinámica)También guardan copias convertidas/compiladas del código aemular

Compilador JIT — Just in Time; Compilador Justo a Tiempo

Gunnar Wolf Virtualización

Page 20: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

La emulación, mejorada

En líneas generales, la vieja fama de la lentitud de lasmáquinas virtuales ya no se justificaLas máquinas virtuales pueden llamar a código nativo parapuntos críticos donde haga falta optimización. . . Y las usamos transparentemente, todos los días

Gunnar Wolf Virtualización

Page 21: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Índice

1 Introducción

2 Emulación

3 Virtualización por hardware

4 Paravirtualización

5 Contenedores

6 Conclusión y nuevos conceptos

Gunnar Wolf Virtualización

Page 22: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Virtualización asistida por hardware (HVM)

Buena parte del ruido que hoy en día recibe la virtualización esa consecuencia de esta modalidadAlgunas arquitecturas de cómputo incluyen provisiones para servirtualizadas

Especialmente máquinas diseñadas como grandesPrimer ejemplo: IBM S/360-67

Sistema operativo CP-67/CMS (1968-1972)Sistema operativo ligero, monousuarioPensando en que siempre habría múltiples instancias delsistema operativo en ejecución bajo el hipervisor CP

Computadoras inherentemente de tiempo compartido, dando asus usuarios la ilusión de tener una computadora dedicada aellos

Gunnar Wolf Virtualización

Page 23: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

La motivación detrás de CP67/CMS

Motivación de la virtualización:Maximizar el aprovechamiento de recursosProveer administración centralizaa

Al virtualizar el sistema completo, este sistema ofrece mayoraislamiento, seguridad y confiabilidad que cualquier sistema detiempo compartidoPermite además correr cualquier programa diseñado para unamáquina S/360, incluso si no estaba diseñado para tiempocompartidoIBM reimplementó este sistema como VM/370, al contar conuna arquitectura de memoria virtualz/VM, derivado de este, sigue ampliamente en uso hoy en día

Gunnar Wolf Virtualización

Page 24: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

CP/CMS y VM como software libre

CP/CMS fue distribuido directamente como código fuenteDesde un principio se desarrolló una activa comunidad deusuarios estudiando y modificando el código fuentePor fricciones políticas dentro de IBM, tanto VM comCP/CMS fueron también distribuídos como parte de lasbibliotecas no soportadas en la colección Type-IIIHoy en día se pueden bajar estos sistemas y ejectutarlos

Dentro del emulador Hercules de sistemas S/370, S/390 yzSeries

Gunnar Wolf Virtualización

Page 25: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

El hipervisor: Más abajo que el núcleo

Tradicionalmente las arquitecturas virtualizables corren unmicro-sistema operativo encargado de gestionar a cada uno delos sistemas operativos que corre en cada una de las máquinasvirtuales

Es un micro SO porque no cubre muchas de las áreas clásicas(sistemas de archivos, comunicación entre procesos, gestión dememoria virtual, . . . )Se limita a gestión básica de memoria física contigua,asignación de dispositivos, y poco mas que esoOjo: Hay hipervisores que son sistemas operativos completos(como KVM bajo Linux)

Este micro-SO es conocido como el hipervisorDando a entender que hace más que supervisar, el roltradicional del SO

Gunnar Wolf Virtualización

Page 26: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Hipervisor oculto

Idealmente, el núcleo de cada una de las máquinas virtuales nosabe siquiera que está siendo ejecutado dentro de un hipervisor

La ilusión es completa

En algunas arquitecturas puede incluso haber múltiples nivelesde hipervisores

Gunnar Wolf Virtualización

Page 27: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

El panorama hasta ≈ 2005

Las arquitecturas que proveían virtualización por hardware eranmuy especializadas

Muy caras, fuera del alcance de los usuarios en generalFuera del alcance incluso de la mayor parte de losdesarrolladores

En 2005, Intel lanza la Vanderpool Technology para susprocesadores x86 (extensión VT-x)En 2006, AMD lanza los procesadores con extensiones PacificaHoy en día, casi todas las computadoras de escritorio rangomedio-superior vienen con soporte para HVMEl tema era tan novedoso que tardó algunos años endesarrollar tracción

Gunnar Wolf Virtualización

Page 28: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Estabilidad por virtualización

Es aceptado universalmente que la mayor parte fuente deinestabilidad en los sistemas operativos son los drivers

Es código típicamente más sucio que el de otras partes delnúcleoProviene de todo tipo de fuentes, desde desarrolladoresindependientes hasta las compañías desarrolladoras delhardware

Dando control de calidad a los manejadores de los dispositivosemulados/virtualizados, podemos lograr que los sistemasoperativos huésped sean más estables de lo que serían sobre elhardware real

Gunnar Wolf Virtualización

Page 29: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Estabilidad por virtualización

Típicamente el hipervisor ofrecerá a los huéspedes dispositivosrelativamente viejos y simples

Red NE2Ksonido Soundblaster16video Cirrus. . .

Las prestaciones máximas del hardware no están limitadas porlas características del hardware emulado — Sólo su interfaz alsistema

Gunnar Wolf Virtualización

Page 30: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

HVM, pero sin hardware

La primer versión públicamente descargable de VMWare fueliberada en 1998

Por parte del software libre, kqemu fue presentado (gratuitopero no-libre) en 2005, y liberado bajo la GPL en 2007

Agrega a la arquitectura x86 clásica las funciones básicas deHVM, sin implementarlas por hardware

Con una notable penalización en velocidadAunque muchísimo menor a la de la emulación

Como la mayor parte del código sigue siendo nativo, ofrecenuna velocidad general muy aceptable

Gunnar Wolf Virtualización

Page 31: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Cómo puedo implementar HVM?

Proyectos libres:Xen (modo asistido por hardware)KVM (sobre Linux)Logical Domains (sobre Solaris)

Proyectos híbridos libre/propietarioVirtualBox

Productos propietariosVMWareVirtualPCHyperVParallels

. . . Y seguramente muchos más

Gunnar Wolf Virtualización

Page 32: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Índice

1 Introducción

2 Emulación

3 Virtualización por hardware

4 Paravirtualización

5 Contenedores

6 Conclusión y nuevos conceptos

Gunnar Wolf Virtualización

Page 33: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Un enfoque más ligero, más accesible

Aún si la virtualización asistida ya está disponible en CPUsdisponibles masivamente, es aún una característica de lujo

Para los rangos superiores del mercado

La paravirtualización consiste en reescribir las porciones de unsistema operativo que interactúan directamente con elhardware, para que soliciten estas operaciones a sabiendas aun hipervisorEs conocida como virtualización asistida por el sistemaoperativo (OS-assisted virtualization)Formalmente podría verse como un port del sistema operativoa una nueva arquitectura

Muy parecida a la del sistema anfitrión

Gunnar Wolf Virtualización

Page 34: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Paravirtualización y software libre

Si bien ofrece un mapeo más directo, mejor rendimiento y másestabilidad a los sistemas huésped, requiere modificacionesbastante amplias al sistema operativo

Es prácticamente imposible correr sistemas no-libresparavirtualizados

Un sistema operativo tiene que ser portado a las abstraccionesque ofrece cada una de las arquitecturas de paravirtualizaciónEl artículo con el cual se presentó Xen 1.x habla de un port deWindows XP, basado en el Academic Licensing Program a suparavirtualizador

Pero no es redistribuible, sólo puede ser utilizado internamenteen Xensource

Gunnar Wolf Virtualización

Page 35: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Aprovechamiento de recursos (1)

Con sistemas paravirtualizados podemos lograr un consumo derecursos aún más eficiente que en un sistema virtualizado “real”Los dispositivos presentados al OS huésped son mucho másligeros e idealizados

No hace falta emular al hardware real

Gunnar Wolf Virtualización

Page 36: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Aprovechamiento de recursos (2)

El OS huésped puede pedir al anfitrión recursos adicionalescuando los requiere

Incluso sobre demanda — balooningIncluso recursos que para una computadora normal soninamovibles, p.ej. espacio de memoria

Puede haber un monitoreo mucho más completoEl OS anfitrión no tiene que adivinar tantos detalles delfuncionamiento del huésped si éste se los confía

Gunnar Wolf Virtualización

Page 37: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

CPU virtual, dispositivos paravirtuales

Este punto es empleado por todo tipo de virtualizadores:Paravirtualización a nivel dispositivoEntre más sencillos sean los dispositivos emulados para lavirtualización, menos sobrecarga por traducir llamadas ahardware inexistenteHasta una interfaz tan simple como NE2K tiene hardwareinnecesario a la hora de virtualizar

Entre más delgada sea la capa de traducción, mejorrendimiento obtenemos

En Linux, las clases de dispositivos virtio y pv llegan aofrecer rendimiento de 5 a 10 veces mejor que la emulación dedispositivos reales

Gunnar Wolf Virtualización

Page 38: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Sugerencia bibliográfica

Los temas presentados en este apartado están descritos muy bien ymuy a detalle en el artículo Xen and the Art of Virtualization

(http://www.cl.cam.ac.uk/netos/papers/2003-xensosp.pdf), Paul Barham, Boris Dragovic et. al. 2003La progresión es muy natural y sencilla, ¡vale la pena al menos

echarle un ojo!

Gunnar Wolf Virtualización

Page 39: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Cómo puedo implementar paravirtualización pura?

La principal arquitectura para esto es XenVMWare ofrece un modo de operación basado en laparavirtualización

Gunnar Wolf Virtualización

Page 40: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Xen y KVM: Los dos competidores libres

Las dos principales implementaciones libres de virtualizaciónson Xen y KVMSus ofrecimientos son en buena medida comparablesHasta ≈ 2010 parecía que KVM terminaría conquistando elterreno en que el anfitrión/hipervisor es Linux

Admitido mucho antes al kernel oficialXen requirió cambios mucho más profundos

Hoy en día, ambos ofrecen interfaces bastante completas

Gunnar Wolf Virtualización

Page 41: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Xen: Un hipervisor mínimo

Xen es un hipervisor puro — GRUB llama al núcleo de Xen, yéste lanza a un núcleo Linux

Este núcleo tiene que estar compilado para correrparavirtualizado a la arquitectura virtual de XenEsta primer máquina virtual tendrá control del hipervisorEn lenguaje de Xen, es Dom0Se comunica con Xen a través del demonio xend

Todas las máquinas virtuales adicionales que lancemos sonDomU

Gunnar Wolf Virtualización

Page 42: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

KVM: El Linux de siempre. . . Mas un módulo raro

KVM agrega funciones de hipervisor al núcleo estándar deLinux

A fin de cuentas, un sistema operativo completo tiene todo lonecesario para gestionar recursos entre diferentes procesos enejecución

Hereda / incluye muy buena parte de QemuLas diferentes máquinas virtuales son sencillamente másprocesos dentro del árbol de procesos

Gunnar Wolf Virtualización

Page 43: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Índice

1 Introducción

2 Emulación

3 Virtualización por hardware

4 Paravirtualización

5 Contenedores

6 Conclusión y nuevos conceptos

Gunnar Wolf Virtualización

Page 44: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

. . . ¡Cuéntenme ustedes al respecto!

¡Viva! ¡Hurra!¡Ya era hora! ¡Tenemos tarea!

Lean Notes from a container (Jonathan Corbet, 2007;http://lwn.net/Articles/256389/)Hagan un mapa mental (entregar dibujado/impreso, enpapelito tradicional)Para el martes 27 de agostoSugerencias: Leer e incluir conceptos tocados por loscomentarios y en las ligas

Gunnar Wolf Virtualización

Page 45: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Qué es un contenedor?

Una manera distinta de virtualizarMás sutil, menos flexibleEmpleando un mismo núcleo de sistema operativo

Empujando la virtualización una capa hacia arriba

Con mayores limitantes, pero importantes ventajas

Gunnar Wolf Virtualización

Page 46: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Herederos de chroot

Los sistemas Unix han ofrecido la llamada al sistema chrootdesde 1982Bill Joy la introdujo cuando trabajaba en 4.2BSD para probarla construcción de nuevas versiones del sistema operativo sinmodificar el sistema vivochroot permite encerrar a un proceso dentro de un directorio

Un proceso al que se le aplica chroot no puede ver el sistemade archivos fuera del directorio especificado. . . No sin aplicar algunos trucos

chroot sólo afecta la visión de la raiz del sistema de archivosNo es (ni busca ser) un verdadero aislamiento

Gunnar Wolf Virtualización

Page 47: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

No lo es. . . ¿Por qué no lo adecuamos?

Los contenedores construyen sobre chroot, ampliando elaislamiento a otros componentes del sistemaEl primer sistema en ofrecer esta facilidad fue FreeBSD, consus jails, desde la versión 4.0 (2000)Están también implementados ahora en Linux (vserver desde2002, hoy lxc), Solaris 10 en adelante (Zones, 2005) yNetBSD/FreeBSD (Sysjail, utilizando systrace, 2006)Idea similar en Windows: Parallels Virtuozzo

Gunnar Wolf Virtualización

Page 48: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Principios básicos de los contenedores

La nomenclatura básica cambia según la implementaciónCada servidor virtual puede llamarse contenedor, contexto deseguridad, etc.

El kernel oculta y aísla la información de cada contexto de losdemás:

Tablas de procesosSeñales, IPCConexiones, sockets e interfaces de red, reglas de firewallDispositivosLímites en consumo de recursos (RAM, CPU)

Formalmente, los contenedores no implementan virtualización,sino restricción

Pero brindan al usuario la ilusión de una máquina virtualinexistente

Gunnar Wolf Virtualización

Page 49: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Variedad, pero con un límite

A través de los contenedores, la virtualización es casi completaSe ven un poco las costuras, pero para propósitos prácticos,cada contenedor es un sistema independiente

Excepto por el núcleo

Podemos tener cualquier distribución corriendo dentro denuestros contenedores al mismo tiempoÚnica restricción: Todos corren con el mismo núcleo (mismaversión, mismos módulos, etc.)

Gunnar Wolf Virtualización

Page 50: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Consumo de recursos óptimo

Un contexto sin actividad tiene un consumo de recursosmínimoLos procesos que no tienen actividad no consumen CPULos procesos en memoria inactivos van siendo paginados adiscoQueda como excepción Sysjail (OpenBSD), unaimplementación de contenedores en espacio de usuario a travésde systrace, que sí es notablemente más lenta que elsistema en hardware nativo

Gunnar Wolf Virtualización

Page 51: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Índice

1 Introducción

2 Emulación

3 Virtualización por hardware

4 Paravirtualización

5 Contenedores

6 Conclusión y nuevos conceptos

Gunnar Wolf Virtualización

Page 52: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Algunos casos comunes de uso

Mejor aprovechamiento / consolidación de recursosMigracionesSeguridadRedundancia / alta disponibilidadDespliegue de escritorios virtualesSimplificación de mantenimientoDesarrollo (especialmente depuración) para sistemasembebidos

Gunnar Wolf Virtualización

Page 53: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Diferentes necesidades, diferentes soluciones

Hay una gran riqueza en la oferta de herramientas devirtualizaciónCada herramienta y estrategia tiene características muydistintasMuchas de las ofertas de cómputo en la nube cruzannecesariamente por virtualización

Particularmente por hardware, paravirtualización ycontenedores

Gunnar Wolf Virtualización

Page 54: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Y la nube?

La infraestructura como un servicio, una de las modalidadesdel cómputo en la nube implica necesariamente virtualizaciónVarios programas de administración de nubes privadasgestionan y monitorean también sistemas virtualizadosUna nube puede verse como un conjunto de servidoresconfigurados para brindar recursos reales a máquinas virtuales

Disco, memoria, tiempo de procesamiento, etc.La administración de servicios en la nube, así como susventajas y desventajas, salen del ámbito del curso

Pero sin duda será de interés de varios de ustedes

Gunnar Wolf Virtualización

Page 55: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

En esta presentación vimos. . .

EmulaciónTraducción de las instrucciones de una arquitectura diferenteIncluye la emulación de un sistema entero (hardwareinexistente)Muy lentaDiferencia entre emular y simularPuede emularse una arquitectura existente o inexistente

Modelo general del p-system, la Máquina Virtual Java (JVM),Common Language Infrastructure (.NET)

Rendimiento — Traducción dinámica, compilación JIT

Gunnar Wolf Virtualización

Page 56: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

En esta presentación vimos. . .

Virtualización asistida por hardware (HVM)Historia: IBM S/360-67 con CP-67/CMS (hasta hoy conz/VM)Concepto de hipervisorEntrada de HVM al común de los equipos x86Estabilidad por virtualización

Gunnar Wolf Virtualización

Page 57: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

En esta presentación vimos. . .

ParavirtualizaciónEnfoque más ligero, aunque requiere reescribir porciones de lossistemas operativos huéspedUn SO paravirtualizado puede lograr mejor uso de recursos queel mismo OS en hardware real

El hardware idealizado es más fácil de manejarEl sistema anfitrión no tiene que desperdiciar proveyendorecursos no empleados por los huéspedes

Hardware virtualizado, dispositivos paravirtualizados

Gunnar Wolf Virtualización

Page 58: Introduccióngwolf.sistop.org/laminas/X1-virtualizacion.pdf · 2017-02-17 · Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

En esta presentación vimos. . .

ContenedoresManera más sutil, menos flexible de virtualizaciónUn mismo sistema operativo (un mismo núcleo); un sistemamaestro, varios contenedores con sistemas completos dentroConstruyendo sobre chrootEl núcleo separa varias estructuras presentando vistasseparadas a los distintos sistemas huéspedFormalmente, más que virtualización implementan restricciónConsumo de recursos mínimo

Gunnar Wolf Virtualización