Ir al contenido

Virtualización II · Tipos y ejemplos

🎯 Al terminar podrás

  1. Clasificar un producto como hipervisor tipo 0, 1 o 2, o como contenedor, y justificarlo.
  2. Explicar la paravirtualización y cómo la implementa Xen (anillos, Domain 0 y Domain U, hypercalls).
  3. Distinguir VM de sistema, VM de lenguaje (JVM) y contenedor.
  4. Comparar VMs y contenedores (overhead, aislamiento, kernel) y Docker con LXC.
  5. Describir los ejemplos de la clase: ESXi, Xen, Hyper-V, VServer, VMware, Docker.

Antes necesitas: Virtualización I (conceptos)

  • Visual mira el diagrama o la tabla y explica qué cambia en cada paso
  • Laboratorio sube la escalera: resuelto → completa → solo → variante
  • Debate elige una alternativa para el escenario y defiéndela
abstraccionesmáquina virtualbasada en lenguajeJVM, .NETde sistemaun SO completolivianacontenedoresplataformassimulador de máquinahipervisorbare-metal (tipo 1)hosted (tipo 2)Popek/Goldberg

Cómo leerlo: arriba, las tres abstracciones que se llaman «máquina virtual». La basada en lenguaje (como la JVM) corre programas de un lenguaje. La de sistema corre un SO completo. La liviana aísla aplicaciones (como un contenedor). Abajo, las plataformas sobre las que corre una VM de sistema: un simulador de máquina o un hipervisor, que puede ser bare-metal (tipo 1) o hosted (tipo 2). La etiqueta Popek/Goldberg señala la teoría clásica sobre cuándo una arquitectura es virtualizable. Los ejemplos en gris (JVM, .NET, contenedores) son propios; la diapositiva solo trae los nombres de las categorías.

TipoQué esEjemplos de la clase
Tipo 0solución por hardware: crea y gestiona VMs desde el firmwareIBM LPARs, Oracle LDOMs; AWS Nitro (diap. 29)
Tipo 1software tipo sistema operativo, construido para virtualizar. También incluye SO de uso general que, además de sus funciones normales, hacen de VMMVMware ESX, Joyent SmartOS, Citrix XenServer; Windows Server con Hyper-V, RedHat Linux con KVM
Tipo 2aplicaciones que corren sobre un SO normal y dan funciones de VMM a los guestsVMware Workstation y Fusion, Parallels Desktop, Oracle VirtualBox
hardwarehardwarehardwareTipo 0en firmwarehipervisor (firmware)CPUs +memoriaguest 1CPUs +memoriaguest 2CPUs +memoriaguest 3cada guest, su trozo fijoTipo 1«bare-metal», tipo SOhipervisor tipo 1guest OSappsguest OSappsTipo 2«hosted», una app másSO anfitrión (host OS)hipervisor tipo 2otrasappsguest OSappsguest OSappsIBM LPAR, Oracle LDOM, AWS NitroESX(i), Xen, Hyper-V, KVMVirtualBox, Workstation, Parallels

Cómo leerlo: fíjate en qué está justo encima del hardware. En el tipo 0 es firmware que parte la máquina: cada guest recibe su porción fija de CPUs y memoria (fig. «Type 0 Hypervisor»). En el tipo 1 es el propio hipervisor. En el tipo 2 es un SO anfitrión normal: el hipervisor es una aplicación más, al lado de las otras.

AWS Nitro (diap. 29–30), un tipo 0 en la nube:

  • Desde 2018, todos los tipos nuevos de instancia EC2 (incluidas C7, M7, R7 y las basadas en Graviton) se construyen sobre el Nitro System. Si lanzas una VM moderna en AWS, corre sobre Nitro.
  • Es la capa de virtualización central de los datacenters de AWS, y AWS sigue sacando versiones nuevas del chip y del hipervisor (Nitro v4, v5, v6…).
  • Arquitectura: el servidor tiene un Nitro Hypervisor pequeño, y las tareas de red, almacenamiento y gestión, seguridad y monitoreo se pasan a las Nitro Cards, tarjetas de hardware propio conectadas por PCIe. En la foto del servidor C5n hay 2: una principal y una de red.

Peldaño 1 · Resueltolee cada paso y su porqué

Resuelto: VMware ESXi en un servidor

ESXi se instala directo en el servidor, sin un SO debajo, y su propio kernel (VMkernel) gestiona las VMs. Tipo 1 (bare-metal).

Peldaño 2 · Complétalofaltan pasos clave: llénalos tú

Complétalo: KVM en RedHat Linux

RedHat es un SO de uso general: corre aplicaciones normales. Con KVM, además, crea VMs. ¿Es tipo 1 o tipo 2? Guíate por la diapositiva 27, no por la intuición.

Comparar

Tipo 1. La diapositiva lo pone explícitamente en el tipo 1: «también incluye SO de uso general que proveen funciones estándar y funciones de VMM, como Windows Server con Hyper-V y RedHat Linux con KVM». La diferencia con el tipo 2 es que aquí la virtualización está en el kernel del SO, no en una aplicación encima de él.

Peldaño 3 · Solosin ayuda; luego compara

Solo: clasifica IBM LPAR, Parallels Desktop, Citrix XenServer y AWS Nitro

Comparar
  • IBM LPAR: tipo 0 (firmware).
  • Parallels Desktop: tipo 2 (app sobre macOS).
  • Citrix XenServer: tipo 1.
  • AWS Nitro: tipo 0, según la clase («AWS Hypervisor 0»): el trabajo pesado lo hace hardware dedicado (las Nitro Cards).

Peldaño 4 · Variantecambia una condición: ¿sigue valiendo lo anterior?

Variante: ¿y Docker?

¿Docker es un hipervisor tipo 1, tipo 2 o ninguno? Justifica con la figura 14.4.

Comparar

Ninguno. Docker no crea máquinas virtuales con su propio SO. Es un motor de contenedores que corre sobre el host OS, y todos los contenedores comparten el kernel del host (sección 5). No hay guest OS.

  • Es una técnica asistida por software: el SO del guest se modifica para cooperar con el VMM, usando APIs especializadas que conectan la VM con el hipervisor y optimizan el rendimiento.
  • El SO de la VM, Linux o Windows, trae soporte de paravirtualización en el kernel, además de drivers paravirtualizados que permiten al SO y al hipervisor trabajar juntos con menos overhead.
  • Muchas distribuciones Linux lo incluyen desde 2008.
(a) tipo 1, virtualización completaguest OSsin modificardrivers normalesguest OSsin modificardrivers normalesguest OSsin modificardrivers normaleshipervisormodelos de dispositivo (hardware emulado)drivers realeshardware(b) tipo 1 paravirtualizadoguest OSmodificadodrivers PVguest OSmodificadodrivers PVguest OSmodificadodrivers PVhipervisorinterfaz de drivers (APIs, hypercalls)drivers realeshardwareEn (b) no se emula hardware: el guest «sabe» que está virtualizado y coopera con el hipervisor.

Cómo leerlo: en (a), el guest no sabe nada. Usa drivers normales, y el hipervisor tiene que emular hardware (modelos de dispositivo) para que esos drivers funcionen. En (b), el guest está modificado y sus drivers PV hablan directo con una interfaz de drivers del hipervisor: no hay que fingir hardware. Es la figura 14.3.

Analogía: en (a), el inquilino cree vivir en una casa propia, y el administrador tiene que simular un medidor de luz real para cada uno. En (b), el inquilino sabe que es inquilino y simplemente llama al administrador («necesito más luz») por una línea directa.

Las CPUs x86 tienen 4 anillos de privilegio (0 = máximo). Xen los usa así:

anillo 3(el 2 no se usa)anillo 2anillo 1anillo 0Xenapps de usuario · anillo 3ABI sin cambios: el programa no se recompilaDomain U (guests) · anillo 1guest OS con el código modificadohace hypercalls a Xen para lo privilegiadoDomain 0 · administracióncrea y gestiona VMs; tiene los drivers realesXen (VMM) · anillo 0memoria, registros de CPU, E/S de dispositivos

Cómo leerlo: Xen (el VMM) ocupa el anillo 0, el único con todo el privilegio: gestiona memoria, registros de CPU y E/S. Los guest OS modificados (Domain U) van en el anillo 1: tienen más privilegio que las apps, pero no el máximo, y para lo privilegiado hacen hypercalls a Xen (como una syscall, pero al hipervisor). Las apps siguen en el anillo 3 con su ABI sin cambios. Domain 0 es el dominio de administración: gestiona las VMs, tiene la interfaz para manejarlas y accede a Xen.

  • Domain 0 (Dom0): tiene los drivers reales del hardware y administra.
  • Domain U (DomU): los guests normales, con su kernel modificado (KernelU).
  • Si una instrucción privilegiada se ejecuta igual, el hardware hace un trap a Xen.

4. Otros tipos y los virtual appliances (diap. 32, 36)

Sección titulada «4. Otros tipos y los virtual appliances (diap. 32, 36)»
VarianteQué esEjemplos
Paravirtualizaciónguest modificado para cooperar con el VMMXen
Virtualización de entorno de programaciónel VMM no virtualiza hardware real: crea un sistema virtual optimizadoOracle Java (JVM), Microsoft .NET
Emuladoresaplicaciones escritas para un hardware corren en uno muy distinto, por ejemplo con otra CPU(QEMU y el emulador de Android, diap. 16)
Contención de aplicacionesno es virtualización propiamente: separa las aplicaciones del SO para que sean más seguras y manejablesOracle Solaris Zones, BSD Jails, IBM AIX WPARs

Virtual appliance:

  • Es software autónomo distribuido como imagen de VM: un paquete con aplicaciones y su guest OS.
  • Es independiente del hipervisor y del procesador, y corre en tipo 1 o tipo 2. Se volvió una forma estándar de distribuir software (de ahí el «vendedor de virtual appliances»).
  • SVA (security virtual appliance): una herramienta de seguridad que monitorea y protege a las otras VMs desde fuera de ellas, en una VM especialmente endurecida.
    • Ve el estado de cada VM y el tráfico entre VMs, y entre VMs y el hipervisor, mediante la API de introspección del hipervisor.
    • Ventajas: no es vulnerable a las fallas del guest OS, y no hay que reconfigurarla cada vez que cambia la red virtual, por ejemplo cuando se migran VMs.

Analogía del SVA: un guardia que vigila los departamentos desde la sala de cámaras del administrador, no desde dentro de un departamento. Si un inquilino es atacado, el guardia sigue a salvo.

  • Es un enfoque relativamente reciente. Un software llamado contenedor corre sobre el kernel del host OS y da un entorno de ejecución aislado a las aplicaciones.
  • A diferencia de las VMs, no intenta emular servidores físicos: todas las aplicaciones en contenedores del host comparten un mismo kernel.
  • Eso elimina el costo de correr un SO separado por aplicación y reduce mucho el overhead.
(a) VMs sobre hipervisor tipo 1appapplibreríasguest OS(su propio kernel)appapplibreríasguest OS(su propio kernel)hipervisorhardware(c) contenedoresappapplibreríasappapplibreríasmotor de contenedoreshost OSun solo kernel, compartidohardwareUn contenedor no emula un servidor: aísla procesos sobre el mismo kernel (menos overhead, menos aislamiento).

Cómo leerlo: compara las columnas. En (a), cada VM trae su guest OS completo, con su propio kernel, y debajo hay un hipervisor. En (c), los contenedores solo traen librerías y apps; debajo hay un motor de contenedores y un único host OS cuyo kernel usan todos. Es la figura 14.4; el caso (b), tipo 2, es igual a (a) con un host OS entre el hipervisor y el hardware.

Peldaño 1 · Resueltolee cada paso y su porqué

Debate: ¿VM o contenedor?

Para cada escenario, elige VM o contenedor y justifícalo con un criterio de la clase:

  1. Correr Windows y Linux en el mismo servidor.
  2. Desplegar 200 copias de un microservicio web, lo más rápido y barato posible.
  3. Aislar a clientes que no confían entre sí y podrían atacar al kernel.
Comparar
  1. VM. Un contenedor comparte el kernel del host, así que no puede correr un kernel de otro SO. Cada VM trae su propio guest OS.
  2. Contenedor. No hay un SO por copia: menos overhead y arranque rápido, que es justo la ventaja de la diapositiva 37.
  3. VM. Con contenedores, una vulnerabilidad del kernel compartido afecta a todos (fila «Isolation» de la tabla Docker vs LXC). Las VMs tienen su propio kernel y un hipervisor pequeño y confiable de por medio (conclusiones, diap. 53).

No hay ganador universal: depende del criterio (overhead o aislamiento).

Docker da una forma más simple y estandarizada de correr contenedores, y también corre en Linux. Es popular sobre todo porque carga una imagen de contenedor en el host de forma simple y rápida: las imágenes se guardan en la nube y se piden cuando hacen falta.

Componentes: Docker image, client, host, engine, machine, registry y hub.

AspectoDockerLXC
Objetivocontenedor de aplicacióncontenedor de sistema / VM liviana
Qué encapsulaun servicio o procesoun entorno Linux completo, con varios procesos (init, SSH, logs…)
Herramientasmucha abstracción: Engine, Hub, Compose, integración con Kubernetespoca abstracción: lxc-create, lxc-start; hoy lo gestiona LXD
Imagen basemínima y en capas: solo la app y sus dependenciasuna distribución completa (Ubuntu, Debian…)
Portabilidadmuy alta: corre igual en cualquier host con Docker (en Windows o macOS, mediante una VM)alta dentro de Linux: necesita un kernel host compatible
Recursosmuy bajos: corre un solo proceso y arranca rapidísimobajos, pero algo más que Docker porque corre un init completo
Aislamientoa nivel de proceso: el kernel compartido es un punto débila nivel de SO: más parecido a una VM
Ciclo de vidaefímero/inmutable: para actualizar se reemplaza el contenedorpersistente/mutable: se parchea por dentro, como una VM liviana

Historia:

  1. 2008, LXC: el primer gestor de contenedores robusto. Junta dos funciones del kernel Linux: namespaces (aislamiento) y cgroups (límites de recursos).
  2. 2013, Docker: al principio era una capa de empaquetado sobre LXC. Su innovación fue simplificar el flujo (Dockerfiles, imágenes en capas, Docker Hub); el aislamiento lo hacía LXC.
  3. 2014, Docker 0.9, «el divorcio»: depender de LXC limitaba la flexibilidad y la portabilidad, así que Docker creó libcontainer (que luego evolucionó en runc) para hablar directo con los cgroups y namespaces del kernel.

Analogía: namespaces = cada habitación tiene su propia vista (sus procesos, su red, sus archivos), como si fuera la única. cgroups = cada habitación tiene un medidor con límite de luz y agua (CPU y memoria).

EjemploTipoLo que dice la clase
VMware ESXitipo 1 (bare-metal)VMware sacó las primeras soluciones x86 a fines de los 90 y fue el primero en el mercado; eso, más su innovación continua, lo mantiene líder. La fig. 14.9 compara ESX con ESXi: sobre el VMkernel, ESXi reemplaza los agentes de ESX por gestión sin agentes (agentless)
Xentipo 1fig. 14.10: Dom0 (con los drivers y Kernel0) y varios DomU (KernelU) sobre el hipervisor Xen
Microsoft Hyper-Vtipo 1fig. 14.11: una partición padre (con los drivers, WMI, los VM workers y los VSP) y particiones hijas cuyos VSC hablan con los VSP por el VMBus
Java VMVM de proceso (parcialmente emulada)entorno donde código Java corre en cualquier SO: «write once, run anywhere». Soporta varios hilos. Es una máquina abstracta con conjunto de instrucciones, registro PC, pila (variables y resultados), heap (datos en tiempo de ejecución y recolección de basura) y área de métodos (código y constantes)
Linux VServervirtualización a nivel de SOopen source, rápido y liviano; una sola copia del kernel, una modificación modesta del kernel más herramientas de usuario. Cada servidor virtual tiene su propio /proc, /home, /usr, /dev (fig. 14.12), y el kernel gestiona scheduling, memoria, disco y tiempo de CPU de todos
Arquitectura de VMwareusada en tipo 1 (ESXi) y tipo 2 (Workstation/Fusion)VMware inventó el ballooning

La figura de VMware (diap. 48), en palabras: la figura distingue dos contextos, el del host OS y el del VMM, y un world switch entre ellos. Cuando la VM necesita E/S (por ejemplo, disco), el VMM no tiene drivers propios: cambia al contexto del host mediante el VMM driver, y el proceso de usuario VMX (que incluye el emulador y la E/S asíncrona, AIO) hace la operación con llamadas normales al host OS (ioctl, driver SCSI). Es la forma de un tipo 2: el hipervisor aprovecha los drivers del SO anfitrión. Esta lectura de la figura es propia; la diapositiva solo trae el diagrama.

  • La virtualización moderna es la base de la computación en la nube: permite consolidar recursos masivamente y da la agilidad que necesita una infraestructura escalable y bajo demanda.
  • El panorama es cada vez más híbrido:
    • virtualización completa asistida por hardware cuando se necesita mucho aislamiento;
    • contenedores a nivel de SO para desplegar más rápido y con más densidad.
  • La seguridad gira en torno a la base de código pequeña y confiable del hipervisor. El desarrollo se concentra en técnicas como el ballooning y la paravirtualización de E/S, para ganar velocidad sin sacrificar aislamiento.

Virtualización II

0/15 correctas · 0 respondidas
1. Un hipervisor tipo 0 es…
2. VirtualBox sobre Windows es un hipervisor…
3. Según la clase, RedHat Linux con KVM es…
4. Desde 2018, las instancias nuevas de EC2 corren sobre…
5. En la paravirtualización…
6. En Xen, los guest OS modificados corren en…
7. Las Solaris Zones y las BSD Jails son ejemplos de…
8. Un SVA (security virtual appliance)…
9. La diferencia clave entre VMs y contenedores es que los contenedores…
10. ¿Qué dos funciones del kernel Linux juntó LXC?
11. En Docker 0.9 (2014), Docker…
12. Frente a LXC, un contenedor Docker típico…
13. En Hyper-V, las particiones hijas se comunican con la padre a través de…
14. ¿Qué es la JVM según la clase?
15. ¿Quién inventó el ballooning, según la clase?

📈 ¿Qué tan bien lo dominas?

Elige pensando en lo que hiciste, no en lo que leíste. Para marcar 3 tienes que haber resuelto un ejercicio nuevo sin pistas y haberlo justificado. Si solo lo leíste y sientes que «ya entendí», todavía es un 1.

Fuente ·sem_13/Sema13_13-OST-Virtualization.pdf (diap. 25–53) · Figuras basadas en las figs. 14.2, 14.3, 14.4, 14.10 de Stallings y en las diap. 26, 28 y 34 de la clase · Lectura de la figura de VMware (diap. 48) y analogías: propias