Está en la página 1de 24

Msc.

Ivan Gutierrez Agramont, PhDc


Introducción

KVM (Kernel-based Virtual Machine) es una infraestructura de


virtualización para el kernel Linux que (hypervisor). KVM necesita
que el hardware (Microprocesador) soporte virtualización o tenga
extensiones de virtualización.

KVM fue portado a FreeBSD e Illumos como modulos adicionales


al kernel.

KVM en un principio sólo era soportado por microprocesadores


x86, pero ya fue portado a S/390, PowerPC, IA-64 y finalmente
ARM (desde el kernel 3.9)
Se pueden virtualizar practicamente cualquier sistema
operativo con KVM, cualquier Linux, BSD, Solaris, Windows,
Haiku, ReactOS, Plan9, AROS (Research Operating System),
Mac OS X y cualquier UNIX.
Soporta paravirtualización de forma nativa (cuando la full
virtualization no funciona) para los siguientes sistemas
operativos huesped: Linux, OpenBDS, FreeBSD, NetBSD,
Plan 9 y Windows. Esto mediante el uso de la API VirtIO.
VirtIO soporta una tarjeta de red, un controlador para HDD y
todos los dispositivos de forma paravitualizada (Similar a
VMWare)
El Kernel Linux 2.6.20 (Febrero de 2007) fue el primer kernel
en ya incluir KVM
Diseño

KVM no realiza emulaciones, en realidad expone la interface


/dev/kvm donde un espacio de usuario puede funcionar:

● Configura el espacio de la dirección del guest. El host, entrega


una imagen del firmware (BIOS) con la cual el Sistema
Operativo del guest puede arrancar. (Deben entender el
proceso de arranque).
● Se alimenta el I/O virtualizado
● Se mapea el video hacia el host

En Linux, QEMU trabaja a velocidades cuasi nativas (hardware),


pero cuando algo no es soportado recurre a la emulación de
software.
Licencias

KVM tienen muchas partes y cada una de ellas una licencia


diferente:

● KVM kernel module: GPL v2


● KVM user module: LGPL v2
● QEMU virtual CPU core library (libqemu.a) & QEMU PC
system emulator: LGPL
● Linux user mode QEMU emulator: GPL
● BIOS files (bios.bin, vgabios.bin and vgabios-cirrus.bin):
LGPL v2
Herramientas de administración
Graficas (GUI)

● KIMCHI – Basado en la web.


● UCS Virtual Machine Manager – Basado en la web, soporta
KVM y XEN (bajo windows).
● Archipel – Baso en la Web y soporta libvirt, utiliza XMPP.
● Witsbits – Implementa de forma simplificada SaaS con una
web UI.
● Virtual Machine Manager – La màs completa, soporta la
creación, edición, inicio, pausado y parado de maquinas
virtuales KVM así como muchas otras características.
● ConVirt – Similar al anterior, pero con menos funcionalidades.
● Proxmox Virtual Environment – Es un paquete de
virtualización Libre, que incluye KVM, OpenVZ, e instala
ambos, viene con una GUI.
● OpenNode – servidor de virtualización de RHEL/CentOS,
es considerada una solución de virtualización con
instaladores y aplicaciones de administración de KVM y
OpenVZ
● OpenQRM – Plataforma de administración para data
centers heterogeneos.
● SolusVM – Soporta KVM, Xen y OpenVZ
● Virtualizor – Similar al anterior.
Hardware “Emulado”

Tipo Dispositivo
Video Cirrus CLGD 5446 PCI VGA card, dummy VGA con
extensiones Bochs VESA, o Virgil como un virtual 3D GPU
PCI i440FX host PCI bridge y PIIX3 PCI to ISA bridge
Input PS/2 Mouse and Keyboard
Sonido Sound Blaster 16, ENSONIQ AudioPCI ES1370, Gravis
Ultrasound GF1, CS4231A compatible
Ethernet AMD Am79C970A (Am7990), E1000 (Intel 82540EM,
82573L, 82544GC), NE2000 y Realtek RTL8139
Watchdog timer Intel 6300ESB or IB700
RAM Desde 50 MB hasta 32 TB
CPU Desde 1 hasta 160 CPUs
Algunas Implementaciones

● Illumos based distributions


● OpenIndiana
● Red Hat Enterprise Linux (RHEL) 5.4+
● SmartOS
● SUSE Linux Enterprise Server (SLES) 11 SP1 +
● Ubuntu 10.04 LTS +
● Gentoo Linux
● Univention Corporate Server
Funcionamiento

KVM es único, ya que en su desarrollo, en lugar de crear


porciones o un kernel especifico de Sistema Operativo como un
hypervisor, como otros hypervisors hicieron, KVM desarrolló un
método en el que volvieron al kernel Linux un hypervisor.

Esto fue creado de forma tal que sea lo menos intrusivo


volviendose un módulo del kernel. Integraron así las capacidades
de un hypervisor en el kernel Linux como modulos cargables,
entonces se puede tener una administración mas simplificada y
esto se traduce en mejor performance. Esta fue la razon por la
cual ahora se tiene a KVM como un módulo del kernel.
Esta visión tiene muchas ventajas, los entornos de
virtualización se benefician de todo el kernel Linux en si. Bajo
este modelo, cada maquina virtual es un proceso regular del
kernel Linux, así es calendarizada de forma estándar por el
Linux scheduler.

Tradicionalmente, un proceso normal de Linux tiene dos


modos de ejecución: núcleo y de los usuarios. El modo de
usuario es el modo por defecto para las aplicaciones, y una
aplicación entra en modo kernel cuando se requiere algún
servicio al núcleo, como escribir en el disco duro.
KVM agrega un tercer modo, el modo de invitado.
Los procesos de modo de huéspedes son procesos
que se ejecutan desde dentro de la máquina virtual.
El modo de invitado, al igual que el modo normal
(ejemplo no virtualizado), tiene sus propias
variaciones del núcleo y espacio de usuario. kill y ps
normales funcionan en modos de huéspedes. (de la
instancia no virtualizada), una máquina virtual KVM
se muestra como un proceso normal, y puede ser
matada al igual que cualquier otro proceso.
KVM hace uso de la virtualización de
hardware para virtualizar estados de
procesador, y la gestión de la memoria de
la máquina virtual se maneja desde el
interior del núcleo. I / O en la versión
actual se maneja en el espacio de usuario,
principalmente a través de QEMU.
Una instalación KVM consiste de los siguiente:

● Un controlador de dispositivo para la gestión de la virtualización de hardware;


este controlador expone sus capacidades a través de un personaje del
dispositivo / dev / kvm.

● Un componente de espacio de usuario para emular el hardware de PC;


Actualmente, esto se maneja en el espacio de usuario y es un proceso
QEMU ligeramente modificado.

● El modelo I / O se deriva directamente de QEMU, con soporte para las


imágenes de copia en escritura de disco y otras características de QEMU.
KVM vs los otros?
KVM es un proyecto relativamente reciente en comparación con sus
competidores . En una entrevista con Avi Kivity , el desarrollador principal ,
comparó KVM con soluciones alternativas:

“En muchos sentidos , VMware es una tecnología innovadora . VMware logra


virtualizar completamente el notoriamente compleja arquitectura x86 utilizando
sólo técnicas de software , y para lograr un rendimiento muy bueno y la
estabilidad. Como resultado , VMware es una pieza muy grande y compleja de
software . KVM , por el contrario , se basa en las nuevas tecnologías de
virtualización de hardware que han aparecido recientemente. Como tal , es
muy pequeña (alrededor de 10 000 líneas ) y relativamente simple . Otra gran
diferencia es que VMware es propietario, mientras KVM es de código abierto
(Las nuevas versiones de VMWare estan utilizando KVM para la
virtualización).”
“Xen es un proyecto bastante grande , proporcionando la paravirtualización y la
virtualización completa . Está diseñado como un núcleo independiente , que sólo
requiere Linux para realizar I/O. Esto hace que sea bastante grande , ya que
tiene su propio programador , administrador de memoria , manejo de
temporizador y la inicialización de la máquina.
KVM , por el contrario, utiliza el planificador de Linux estándar , la gestión de
memoria y otros servicios . Esto permite a los desarrolladores KVM concentrarse
en la virtualización , basándose en el núcleo central en lugar de reemplazarlo .
QEMU es un emulador de espacio de usuario . Es un proyecto bastante increíble
, emulando una variedad de procesadores como invitado en varios procesadores
centrales , con un rendimiento bastante decente . Sin embargo , la arquitectura
del espacio de usuario no le permite acercarse a velocidades nativas sin un
acelerador de kernel. KVM reconoce la utilidad de QEMU usándolo para I/O de
emulación de hardware. Aunque KVM no está vinculado a ningún espacio de
usuario en particular , el código de QEMU era demasiado bueno para no usar -
así que se lo utilizó.”
KVM , sin embargo, no es perfecto; tiene algunas limitaciones,
como las siguientes:


Soporte SMP para los hosts que falta en la versión actual .

● Ajuste del rendimiento (tunning)

Sin embargo , el proyecto continúa a un ritmo acelerado, y de


acuerdo con Avi Kivity , KVM ya está más avanzado que Xen en
muchas áreas sino todas. (Entrevista a Avi Kivity en 2008)
Cómo funciona la virtualización

La plataforma de virtualización es una tecnología antigua ; Sin


embargo , en los últimos años , los sistemas operativos y de
hardware han madurado hasta el punto de hacer que la promesa
de la virtualización una realidad. La parte más fundamental de la
virtualización es el hipervisor . El hipervisor actúa como una capa
entre el sistema operativo huésped virtualizado y el hardware real.
(como se vio en la anterior clase)

En algunos casos , el hipervisor es un sistema operativo , tal como


como Xen ; en otros casos , es el software a nivel de usuario, tales
como VMware . El sistema operativo huésped virtualizado , o la
instancia virtualizada , es un sistema operativo aislado que ve a la
plataforma de hardware subyacente como pertenecientes a la
misma. Pero, en realidad , el hipervisor proporciona esa ilusión.
Compatibilidad con el procesador
para virtualización
Debido al resurgimiento del interés en la tecnología de
virtualización , los fabricantes de microprocesadores
han actualizado sus procesadores para tener soporte
nativo para virtualización. Si lo hace, permite que el
procesador admite un hipervisor directamente y
simplifica la tarea de escritura de hipervisores, como es
el caso de KVM. El procesador maneja los estados de
procesador para los sistemas operativos invitados y
anfitrión , y también gestiona las I/O y las interrupciones
en nombre del sistema operativo virtualizado.
Instalación de KVM
KVM se ha añadido a muchos repositorios de distribución
específica , incluyendo SUSE , Fedora (desde la versión 7
viene con KVM integrado) , Debian y Ubuntu ( desde Feisty ) .

Para otras distribuciones, es necesario descargar un kernel de


la versión 2.6.20 y superiores. Al compilar un núcleo
personalizado, seleccionen los controladores de dispositivos y
habiliten el soporte para la virtualización basada en hardware.
También pueden descargar el módulo KVM junto con las
utilidades de espacio de usuario requeridos desde
sourceforge.net/project/showfiles.php?group_id = 180599
Conclusión

Con la introducción de KVM en el kernel de Linux, las futuras


distribuciones de Linux se han incorporado en el apoyo para la
virtualización, dándoles una ventaja sobre otros sistemas
operativos. No habrá necesidad de ningún tipo de instalación de
arranque dual en el futuro, ya que todas las aplicaciones que se
requieren pueden ejecutar directamente desde el escritorio de
Linux. KVM es sólo uno más de los muchos hipervisores de
código abierto existentes, reafirmando que el código abierto ha
sido fundamental para el avance de la tecnología de
virtualización y gracias a esta naturaleza sencilla de administrar
las cosas a KVM, se dio paso a algo muy importante en Cloud
Computing, OpenStack.
Gracias

También podría gustarte