Virtualización
(y Software Libre)
Lic. Marcelo Fernández
[email protected] - http://blog.marcelofernandez.info
Publicado bajo Licencia Creative Commons - BY,
excepto las imágenes y logos tomadas de sitios de Internet
Virtualización - Introducción
¿Qué es la Virtualización?
→
No es ninguna novedad [1]
Abstracción
Optimización de Recursos
→
Aislación
Se utiliza virtualización por hardware desde las
IBM 360 en los años '60.
Dado que al SO se lo denominaba el “supervisor”,
surgió el término “hypervisor” para los gestores de
éstos.
La virtualización por software tiene origen en la
década del '60 con el BCPL, que generaba código
para máquinas teóricas, con el objeto de aumentar la
portabilidad (Pseudo-Code o P-Code Machine).
Virtualización - Clasificación
Tipos de Virtualización
De Plataforma: Un equipo completo (incluido el CPU)
Mediante Hardware dedicado como Hypervisor
Por Software
CPUs reales (Set de Instrucciones)
→
P-code ó
De Recursos
Almacenamiento: RAID, SANs, etc.
SWAP
Memoria: Memoria Virtual
Procesamiento: Clusters, GAE, EC2, etc.
→
(Ver http://en.wikipedia.org/wiki/Virtualization)
Virtualización – Conceptos Básicos
HOSTHOST
(“Anfitrión”)
(“Anfitrión”)
Crea, administra y ejecuta el
Crea, administra y ejecuta el
entorno virtual donde el
entorno virtual donde el
software guest se ejecuta
software guest se ejecuta
GUEST
GUEST
(“Invitado”)
(“Invitado”)
En este caso
En este caso
es un SO completo,
es un SO completo,
pero éste puede ser
pero éste puede ser
cualquier software
cualquier software
Virtualización – Conceptos Básicos
Tipos de Virtualización de CPU
Emulación. Bochs, QEmu, MAME.
Virtualización Completa. VirtualBox, VMWare.
Virtualización Asistida por Hardware. KVM.
Paravirtualización. Xen.
Virtualización en el Sistema Operativo. Virtuozzo, Containers
en Solaris, Jails en BSD, Linux Vserver, etc.
Recordar que:
Desde Virtualización a Emulación, hay mucho software que
combina una o varias técnicas según la circunstancia, con lo cual
se vuelve difícil una clasificación estricta (por ej., Recompilación Dinámica).
(Ver http://en.wikipedia.org/wiki/Comparison_of_platform_virtual_machines)
Virtualización – Emulación
Emulación
→
Bucle infinito Leer
Mayor Versatilidad y Compatibilidad
Muy Lento (hasta cientos, miles de veces más que la plataforma real)
Interpretar
→
Ejecutar
Virtualización – Virt. Completa
Virtualización Completa (Full Virtualization)
“Traducción Binaria” realizada por un Hypervisor
Velocidad relativamente nativa
Muy Complejo de hacer en x86
Versatilidad Intermedia. SO invitado sin modificar
Virtualización – Paravirtualización
Paravirtualización (Paravirtualization)
El Hypervisor permite compartir el hardware
Velocidad casi nativa
Poca Versatilidad, el SO invitado debe ser
modificado.
Virtualización – Virt. de Sist. Oper.
Virtualización de Sistema Operativo
Un único SO permite armar “jaulas” de procesos
aislados, generalmente servicios.
Velocidad nativa
Orientado a aislar servicios, no máquinas
Virtualización
¿Y la Virtualización Asistida por Hardware?
(en x86)
Virtualización – Arquitectura i386
Modos de Ejecución de Instrucciones en x86
Modo Real
Modo “original”, Intel 8086/8088
Modo Protegido: Intel 80286
80386
Introdujo los Niveles o Anillos de Privilegios
Permitió ejecutar SOs de conmutación apropiativa (OS/2,
→
Linux y NT, por ejemplo).
Modo Virtual 8086 para compatibilidad hacia atrás
Virtualización – Arquitectura i386
Modo Protegido - Anillos de Ejecución
Aplicaciones
Drivers
Núcleo del SO
¿Dónde entra el Hypervisor?
Virtualización – Extens. Intel/AMD
CPUs con Extensiones de Virtualización
Aplicaciones
Drivers
Núcleo del SO
Hypervisor
A partir de Intel “Vanderpool” y AMD “Pacífica” - 2005
Virtualización – KVM
KVM – Kernel Virtual Machine
Primera solución de virtualización en ser
incluída en el núcleo de Linux (2.6.20)
Construída a partir de las extensiones de
Virtualización de Intel/AMD para x86.
Implementa un Hypervisor en un único módulo
Reutiliza todo lo desarrollado previamente en el
núcleo de Linux:
Manejo de Procesos
Manejo de Memoria / Memoria Virtual
Necesita de un QEmu modificado para el I/O
Virtualización – Esquema KVM
Virtualización – Metiendo mano
¿Mi CPU tiene extensiones de Virtualización?
$ egrep '(vmx|svm)' /proc/cpuinfo
¿Cómo creo una Máquina Virtual?
VirtualBox - http://www.virtualbox.org
KVM - http://www.linux-kvm.org/
DEMO
Virtualización – Debate y Preguntas
¿Y ahora qué software elijo?
¿Qué rendimiento tiene? (link)
Para tener en cuenta: Virtualización de I/O
¿Qué ventajas tengo usando Virtualización?
Consolidación de VMs
→
Ahorro de Recursos
Virtualización – Links
Links para Investigar
Documentación de KVM en Ubuntu
Artículo IBM - Virtual Linux
Artículo IBM - Discover the Virtual Kernel Machine
Wikipedia para la teoría
Google para la práctica
Ubuntu-Ar para hacer consultas ;-)
Comentarios de: Virtualización (y Software Libre) KVM (0)
No hay comentarios