58
Introducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización Gunnar Wolf Facultad de Ingeniería, UNAM 2013-08-20 — 2013-08-22 Gunnar Wolf Virtualización

Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

  • Upload
    others

  • View
    15

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Virtualización

Gunnar Wolf

Facultad de Ingeniería, UNAM

2013-08-20 — 2013-08-22

Gunnar Wolf Virtualización

Page 2: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 recursosque no existen en realidad — Y mantener la ilusión, tan bien

como sea posible.

Gunnar Wolf Virtualización

Page 4: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 cubriendomuy distintas tecnologíasLleva existiendo –de diferentes maneras– muchas décadasCubriremos algunas estrategias y tecnologías devirtualización comunes hoy en día

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

Gunnar Wolf Virtualización

Page 5: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 requiereuna solución diferenteIncluso para un mismo caso de uso, hay más de unamanera de llegar al mismo resultado

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

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

Gunnar Wolf Virtualización

Page 6: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 tiempoen computadoras personalesEl procesador anfitrión traduce cada una de lasinstrucciones, simulando en tiempo de ejecución hardwareinexistenteFue muy popular hacia la segunda mitad de los 1980 y aprincipios de los 1990, durante la explosión de lasarquitecturasEs altamente ineficiente — Resulta muy caro en tiempode cómputo

Gunnar Wolf Virtualización

Page 8: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Emular o simular?

Un emulador busca imitar el comportamiento completodel sistema destino

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

Un simulador simula o finge las áreas de interés delsistema destino

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

Gunnar Wolf Virtualización

Page 9: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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, aunquepresente una cabina como la de un avión real

Un emulador busca ejecutar software arbitrario sin que éstedetecte la diferencia

Gunnar Wolf Virtualización

Page 10: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 deinstrucciones, chipset, buses, etc.)Hasta emular únicamente parte del chipset (muy comúnen arquitecturas m680x0)

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

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

Gunnar Wolf Virtualización

Page 11: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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éticoposibleAún a costa de un menor rendimiento

Celuluares, cámaras, ruteadores, scanners, controladoresde equipo industrial. . .

Parte muy importante del mercadoEmular m680x0 o ARM en un buen equipo de escritorioresulta en velocidad comparable al hardware nativo

Gunnar Wolf Virtualización

Page 12: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Emulando arquitecturas inexistentes

También podemos emular una arquitectura que nunca hasido implementadaLa idea viene también de los 1970

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

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

Gunnar Wolf Virtualización

Page 13: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Emulando arquitecturas inexistentes

Todo programa hecho para correr en una p-machinecorrería en cualquier arquitectura que lo implementaraLos p-systems gozaron de relativa popularidad hastamediados de los 1980, con implementaciones enarquitecturas 6502, Z80 y 80x86

Gunnar Wolf Virtualización

Page 14: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Arquitecturas emuladas, de uso diario — Einexistentes

En la década de los 1990, Sun Microsystems retomó lasideas de 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 virtualcomo independiente del lenguaje de programación

Desde el 2000, las comunidades (principalmente) de Perly Python han implementado Parrot

Máquina virtual apta para lenguajes de scriptGunnar Wolf Virtualización

Page 15: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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áquinasvirtuales resultan demasiado complejas para serimplementadas directamente 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 yoptimización basada en múltiples hilos de ejecución

Ideas retomadas para generaciones actuales de CPUs

Gunnar Wolf Virtualización

Page 17: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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ódigodiseñado para otras arquitecturas

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

Gunnar Wolf Virtualización

Page 18: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 Intelx86

Pero las dos generaciones de procesadores Transmeta(Crusoe y Efficeon) son completamente distintasGracias a CMS, esta difrencia es transparente al usuario

Tecnología muy interesante, y aplicada ya fuera deTransmeta

A pesar de esto, Transmeta colapsó como empresa.

Gunnar Wolf Virtualización

Page 19: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 ycompilación del código a ejectuar a formatos nativos(traducción dinámica)También guardan copias convertidas/compiladas delcódigo a emular

Compilador JIT — Just in Time; Compilador Justo aTiempo

Gunnar Wolf Virtualización

Page 20: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 nativopara puntos críticos donde haga falta optimización. . . Y las usamos transparentemente, todos los días

Gunnar Wolf Virtualización

Page 21: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 lavirtualización es a consecuencia de esta modalidadAlgunas arquitecturas de cómputo incluyen provisionespara ser virtualizadas

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 a sus usuarios la ilusión de tener una computadoradedicada a ellos

Gunnar Wolf Virtualización

Page 23: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 ofrecemayor aislamiento, seguridad y confiabilidad que cualquiersistema de tiempo compartidoPermite además correr cualquier programa diseñado parauna máquina S/360, incluso si no estaba diseñado paratiempo compartidoIBM reimplementó este sistema como VM/370, al contarcon una arquitectura de memoria virtualz/VM, derivado de este, sigue ampliamente en uso hoy endía

Gunnar Wolf Virtualización

Page 24: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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/390y zSeries

Gunnar Wolf Virtualización

Page 25: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 cadauno de los sistemas operativos que corre en cada una delas máquinas virtuales

Es un micro SO porque no cubre muchas de las áreasclásicas (sistemas de archivos, comunicación entreprocesos, gestión de memoria 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 operativoscompletos (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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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áquinasvirtuales no sabe siquiera que está siendo ejecutadodentro de un hipervisor

La ilusión es completa

En algunas arquitecturas puede incluso haber múltiplesniveles de hipervisores

Gunnar Wolf Virtualización

Page 27: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 hardwareeran muy 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 extensionesPacificaHoy en día, casi todas las computadoras de escritoriorango medio-superior vienen con soporte para HVMEl tema era tan novedoso que tardó algunos años endesarrollar tracción

Gunnar Wolf Virtualización

Page 28: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 partesdel núcleoProviene de todo tipo de fuentes, desde desarrolladoresindependientes hasta las compañías desarrolladoras delhardware

Dando control de calidad a los manejadores de losdispositivos emulados/virtualizados, podemos lograr quelos sistemas operativos huésped sean más estables de loque serían sobre el hardware real

Gunnar Wolf Virtualización

Page 29: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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éspedesdispositivos relativamente viejos y simples

Red NE2Ksonido Soundblaster16video Cirrus. . .

Las prestaciones máximas del hardware no están limitadaspor las características del hardware emulado — Sólo suinterfaz al sistema

Gunnar Wolf Virtualización

Page 30: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 VMWarefue liberada en 1998

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

Agrega a la arquitectura x86 clásica las funciones básicasde HVM, 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,ofrecen una velocidad general muy aceptable

Gunnar Wolf Virtualización

Page 31: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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ásGunnar Wolf Virtualización

Page 32: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 enCPUs disponibles masivamente, es aún una característicade lujo

Para los rangos superiores del mercadoLa paravirtualización consiste en reescribir las porcionesde un sistema operativo que interactúan directamente conel hardware, para que soliciten estas operaciones asabiendas a un hipervisorEs conocida como virtualización asistida por el sistemaoperativo (OS-assisted virtualization)Formalmente podría verse como un port del sistemaoperativo a una nueva arquitectura

Muy parecida a la del sistema anfitriónGunnar Wolf Virtualización

Page 34: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 ymás estabilidad a los sistemas huésped, requieremodificaciones bastante amplias al sistema operativo

Es prácticamente imposible correr sistemas no-libresparavirtualizados

Un sistema operativo tiene que ser portado a lasabstracciones que ofrece cada una de las arquitecturas deparavirtualizaciónEl artículo con el cual se presentó Xen 1.x habla de unport de Windows XP, basado en el Academic LicensingProgram a su paravirtualizador

Pero no es redistribuible, sólo puede ser utilizadointernamente en Xensource

Gunnar Wolf Virtualización

Page 35: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Aprovechamiento de recursos (1)

Con sistemas paravirtualizados podemos lograr unconsumo de recursos aún más eficiente que en un sistemavirtualizado “real”Los dispositivos presentados al OS huésped son muchomás ligeros e idealizados

No hace falta emular al hardware real

Gunnar Wolf Virtualización

Page 36: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 recursosadicionales cuando 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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 llegana ofrecer rendimiento de 5 a 10 veces mejor que laemulación de dispositivos reales

Gunnar Wolf Virtualización

Page 38: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 muybien y muy 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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 devirtualización son Xen y KVMSus ofrecimientos son en buena medida comparablesHasta ≈ 2010 parecía que KVM terminaría conquistandoel terreno 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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 deXen, 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 lancemosson DomU

Gunnar Wolf Virtualización

Page 42: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 tienetodo lo necesario para gestionar recursos entre diferentesprocesos en ejecució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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

Herederos de chroot

Los sistemas Unix han ofrecido la llamada al sistemachroot desde 1982Bill Joy la introdujo cuando trabajaba en 4.2BSD paraprobar la construcción de nuevas versiones del sistemaoperativo sin modificar el sistema vivochroot permite encerrar a un proceso dentro de undirectorio

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

chroot sólo afecta la visión de la raiz del sistema dearchivos

No es (ni busca ser) un verdadero aislamientoGunnar Wolf Virtualización

Page 47: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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, ampliandoel aislamiento a otros componentes del sistemaEl primer sistema en ofrecer esta facilidad fue FreeBSD,con sus jails, desde la versión 4.0 (2000)Están también implementados ahora en Linux (vserverdesde 2002, hoy lxc), Solaris 10 en adelante (Zones,2005) y NetBSD/FreeBSD (Sysjail, utilizandosystrace, 2006)Idea similar en Windows: Parallels Virtuozzo

Gunnar Wolf Virtualización

Page 48: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 de seguridad, etc.

El kernel oculta y aísla la información de cada contextode los demá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 implementanvirtualización, sino restricción

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

Gunnar Wolf Virtualización

Page 49: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 casicompletaSe ven un poco las costuras, pero para propósitosprá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(misma versión, mismos módulos, etc.)

Gunnar Wolf Virtualización

Page 50: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 paginadosa discoQueda como excepción Sysjail (OpenBSD), unaimplementación de contenedores en espacio de usuario através de systrace, que sí es notablemente más lentaque el sistema en hardware nativo

Gunnar Wolf Virtualización

Page 51: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

IntroducciónEmulación

Virtualización por hardwareParavirtualización

ContenedoresConclusión y nuevos conceptos

¿Y la nube?

La infraestructura como un servicio, una de lasmodalidades del cómputo en la nube implicanecesariamente 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áquinasvirtuales

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 ustedesGunnar Wolf Virtualización

Page 55: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 arquitecturadiferenteIncluye 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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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 porcionesde los sistemas operativos huéspedUn SO paravirtualizado puede lograr mejor uso derecursos que el 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: Virtualizaciónsistop.gwolf.org/laminas/04-virtualizacion.pdfIntroducción Emulación Virtualización por hardware Paravirtualización Contenedores Conclusión y nuevos conceptos Virtualización

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); unsistema maestro, varios contenedores con sistemascompletos dentroConstruyendo sobre chrootEl núcleo separa varias estructuras presentando vistasseparadas a los distintos sistemas huéspedFormalmente, más que virtualización implementanrestricciónConsumo de recursos mínimo

Gunnar Wolf Virtualización