1. Xen + KVM
101
Introducción a la virtualización con Xen y KVM.
Saúl Ibarra Corretgé aka saghul
Fernando de Urien y Muñiz aka Zefe
2. Presentación
Quiénes somos? (a dónde vamos y de dónde
venimos es en otra aula)
Saúl Ibarra – aka Saghul
Fernando Urien alwayska Zefe
¿A qué hemos venido? (esto sí es en este aula)
¿A qué habéis venido?
Horarios
Baños
Salidas de emergencia
E-Ghost – Cursillos de verano Julio 2k9 2
3. Índice
Introducción a la virtualización
Virtualización en el mundo empresarial
Breve introducción a Xen
Componentes de Xen, arquitectura
Requisitos hardware
Instalación: modo sencillo
Administración y ejemplos
KVM
Diferencias con Xen
Instalación
Administración y ejemoplos
Frontends
E-Ghost – Cursillos de verano Julio 2k9 3
4. ¿Qué es esto de virtualizar?
Ejecutar varias instancias de sistemas operativos
Cada una de las instancias tiene la percepción de
tener acceso al hardware físico
Las instancias son totalmente aisladas e
independientes
Tipos:
Emulación
Virtualización de S.O.
Paravirtualización
Virtualización completa
E-Ghost – Cursillos de verano Julio 2k9 4
5. Emulación
Simular mediante software TODO el hardware que la
máquina virtual utiliza
Ventaja... es soft, se puede simular cualquier cosa
Desventaja... más lento que el caballo del malo
Bosch, VirtualPC para Mac...
Apps Apps Apps Apps
Guest OS Guest OS Guest OS Guest OS
Hardware VM A Hardware VM B
x86/x64 Hardware
E-Ghost – Cursillos de verano Julio 2k9 5
6. Virtualización de S.O.
El sistema operativo es capaz de crear varios
entornos virtuales sobre el mismo sistema
Se crean diferentes VPS
El rendimiento es elevado pero todos los VPS tienen
que ser utilizando el mismo kernel.
Es muy utilizado en entornos hosting
Virtuozzo, OpenVZ
Apps Apps Apps Apps Apps Apps
VPS VPS VPS VPS VPS VPS
Host OS
x86/x64 Hardware
E-Ghost – Cursillos de verano Julio 2k9 6
7. Paravirtualización
Aparece el hypervisor como orquestador del acceso a
la capa hardware.
El hypervisor transfiere las llamadas de los SO
virtuales al hardware haciendo traducciones en caso
necesario
Las máquinas virtuales son conscientes de que están
siendo virtualizadas y tienen un kernel capaz de
interactuar con el hypervisor
Apps Apps
Guest OS Guest OS
Parte de Virtualización en Kernel Parte de Virtualización en Kernel
Hypervisor integrado con Host OS
x86/x64 Hardware
E-Ghost – Cursillos de verano Julio 2k9 7
8. Virtualización asistida por hardware
El hypervisor presenta un hardware genérico al
sistema operativo
El SO no es consciente de estar virtualizado
Sin embargo, las capas de virtualización bajan un
nivel más cercano del hardware
Apps Apps Apps Apps
Guest OS Guest OS Guest OS Guest OS
Nada o VMM (Virtual Machine Monitor)
VMM (Virtual Machine Monitor) o Host OS
x86/x64 Hardware
E-Ghost – Cursillos de verano Julio 2k9 8
9. ¿Para qué puedo querer virtualizar?
Consolidación de servicios
Ahorro de costes de CPD
Entornos de laboratorio
Entornos CloudComputing
Como dicen por ahí... just4fun!
E-Ghost – Cursillos de verano Julio 2k9 9
10. Consolidación de servicios
Los CPD's actuales están en general a límite de
capacidad
Hay muchos servidores que están infrautilizados a
nivel hardware pero dan servicio de aplicaciones
La solución pasa por aglutinar servicios en una
máquina pero de forma que quede garantizado el
aislamiento.
E-Ghost – Cursillos de verano Julio 2k9 10
11. Ahorro en costes de CPD
Reducción del número de máquinas físicas al
consolidar.
Se sustituyen máquinas antiguas por máquinas más
potentes que virtualizan varias máquinas antiguas.
Se ahorra en costes de electricidad
Se ahorra en espacio de CPD
Se ahorra en “temperatura” CPD
Se ahorra en costes de operador
E-Ghost – Cursillos de verano Julio 2k9 11
12. Entornos LAB
Entornos de desarrollo de bajo coste
No es necesario replicar a nivel hardware todo el
entorno de producción en sistemas pre-producción
Versatilidad para crear nuevas instancias de
desarrollo y de menor coste.
'Deploy' muy rápido
http://www.jailtime.org
E-Ghost – Cursillos de verano Julio 2k9 12
13. Cloud Computing
Crear un pool de servidores físicos sobre los que
distribuir los servicios
Alta disponibilidad y entornos distribuidos
Movimiento de máquinas entre entornos físicos de
forma transparente y en caliente
Programación temporal de entornos computacionales
E-Ghost – Cursillos de verano Julio 2k9 13
14. Entornos enterprise
Cómo se hace esto??
Existen muchos productos de virtualización
VMWare
Pionero en el ambito
Multitud de herramientas de administración
P2V
V2V
Gestores centralizados
HyperV
Integrado en Win2008
Las herramientas de gestión de VM es un producto a
parte (System Center Virtual Machine Manager)
Basado en hypervisor
Xen
Comprado por citrix
Citrix ha creado una suite de herramientas de gestión
E-Ghost – Cursillos de verano Julio 2k9 14
15. Introducción a Xen
Monitor de máquinas virtuales (hypervisor)
Varios SO distintos en el mismo hardware
Abstracción de recursos físicos
Interface uniforme para el hardware -> portabilidad
Funciona en hardware 'barato' *
Para sacarle todo el partido -> extensiones de Intel y
AMD.
Rápido, escalable
Característivas avanzadas
PCI passtrough
Live migration
Es Software Libre!!
Las herramientas integradas de citrix no lo son
E-Ghost – Cursillos de verano Julio 2k9 15
16. Sistemas de Virtualización
Xen soporta las siguientes formas de virtualización:
Full Virtualization:
Parecido a la emulación.
Los SO se quedan sin modificar.
Solo funcionan sobre la misma arquitectura que el
hardware real.
Necesarias las extensiones Intel VT o AMD V.
Simplifica instrucciones x86.
Traducción de instrucciones binarias 'al vuelo'.
Paravirtualización:
El sistema operativo huésped ha de estar modificado.
La comunicación con el hardware se realiza a través del
hypervisor.
Dificultades con SO cerrados.
Ventajas: rendimiento, escalabilidad.
E-Ghost – Cursillos de verano Julio 2k9 16
17. Ventajas y desventajas
Full Virtualization:
No hay que modificar el sistema operativo huésped
Muchas instrucciones se ejecutan directamente en el
hardware.
Paravirtualización:
Mejor rendimiento.
Las modificaciones en el kernel huésped ayudan a una
ejecución más eficiente.
A la hora de elegir el sistema hay que tener en cuenta
que cuando mayor sea el aislamiento entre máquinas
virtuales menor será el rendimiento.
Xen en un entorno paravirtualizado obtiene un
perfecto equilibrio entre rendimiento y aislamiento.
E-Ghost – Cursillos de verano Julio 2k9 17
19. Componentes de Xen, arquitectura (2)
Sistema servidor (dom0)
Kernel modificado para que se comunique con el
hypervisor (oficial: 2.6.18 de XenSource).
Hypervisor y utilidades de Xen instaladas.
Hardware real.
Sistema huésped (domU)
Kernel modificado para interactuar con el hypervisor
(dom0). Soporte en el mainline del kernel desde la
versión 2.6.23
Resto del sistema operativo y aplicaciones sin
modificar.
Posibilidad de acceso exclusivo a hardware real: pci
passthrough.
E-Ghost – Cursillos de verano Julio 2k9 19
20. Componentes de Xen, arquitectura (3)
Arquitectura de red genérica
E-Ghost – Cursillos de verano Julio 2k9 20
21. Componentes de Xen, arquitectura (4)
Arquitectura de red modo bridge
E-Ghost – Cursillos de verano Julio 2k9 21
22. Componentes de Xen, arquitectura (5)
Arquitectura de red routing
E-Ghost – Cursillos de verano Julio 2k9 22
23. Componentes de Xen, arquitectura (6)
Arquitectura de red: red Virtual
E-Ghost – Cursillos de verano Julio 2k9 23
24. Componentes de Xen, arquitectura (4)
Modalidades de funcionamiento:
Modo bridge
NIC virtual en el domU
Bridge Ethernet con la interfaz real del dom0
El domU aparece como un host más de la red
Modo routing
NIC virtual en el domU
2 redes diferentes: la red real y la virtual.
Routing IP entre ambas redes
Modo NAT
NIC virtual en el domU
Segmento de red virtual NO accesible desde el exterior
Routing entre el segmento de red virtual oculto mediante
NAT.
Cada guest puede tener hasta 3 VIFs, + las 'reales'.
E-Ghost – Cursillos de verano Julio 2k9 24
25. Requisitos hardware
Se recomienda la arquitectura x86, es donde mejor
funciona.
Para poder trabajar con HVM, necesario procesador
con extensiones de virtualización:
Intel-VT
cat /proc/cpuinfo | grep vmx
AMD-V
cat /proc/cpuinfo | grep svm
Disco duro
Todos los guests accediendo al mismo tiempo
RAM
Los domU se la 'roban' al dom0
E-Ghost – Cursillos de verano Julio 2k9 25
26. Instalación: modo sencillo
Instalación de paquetes necesarios
Apuntar la dirección IP
apt-get remove –-purge network-manager*
Reconfigurar /etc/network/interfaces
Instalar el metapaquete de ubuntu
apt-get install ubuntu-xen-server
Ajustar la configuración de XEN
vim /etc/xen/xend-config.sxp
#(network-script network-dummy)
(network-script network-bridge)
Instalar kernel de verdad…
wget
http://ftp.de.debian.org/debian/pool/main/l/linux-2.6/linux-modules-2.6.26-1-xen-686_2.6.26-13lenny2_i38
wget
http://ftp.de.debian.org/debian/pool/main/l/linux-2.6/linux-image-2.6.26-1-xen-686_2.6.26-13lenny2_i386.
dpkg –i linux-modules-2.6.26-1-xen-686_2.6.26-13lenny2_i386.deb
dpkg –i linux-image-2.6.26-1-xen-686_2.6.26-13lenny2_i386.deb
rebooooooot
E-Ghost – Cursillos de verano Julio 2k9 26
27. Configuración (1)
Configuración general de Xen:
/etc/xen/xend-config.sxp
# Configuración del tipo de red
(network-script network-bridge)
(vif-script vif-bridge)
# Hardware para el dom0
(dom0-min-mem 256)
(dom0-cpus 0)
# Acceso VNC
(vnc-listen '0.0.0.0')
(vncpasswd '')
E-Ghost – Cursillos de verano Julio 2k9 27
28. Administración vía consola
Comandos de administración:
Arrancar domU y acceder a su consola:
xm create /etc/xen/farsa.cfg -c
Arrancar un domU y dejarlo en background:
xm create /etc/xen/farsa.cfg
Conectarse a la consola de un domU:
xm console farsa
Reiniciar domU:
xm reboot farsa
Apagar domU:
xm shutdown farsa
Apagar (malamente) domU:
xm destroy farsa
Todas las opciones de xm:
xm help
E-Ghost – Cursillos de verano Julio 2k9 28
29. Administración vía consola (2)
Estado del sistema:
xentop
Mensajes de arranque de Xen:
xm dmesg
Listado de guests arrancados:
xm list
E-Ghost – Cursillos de verano Julio 2k9 29
30. Crear una VM mediante debootstrap
Revisión del fichero de xen-tools comentando la
jugada…
# vim /etc/xen-tools/xen-tools.conf
Crear la VM
mkdir /xen
xen-create-image --hostname=xenTest.dominio.com
--ide --force --dir=/xen
Esto crea los discos que hemos definido en el fichero
y se descarga la distro definida por defecto de la
página de debian
Añadir esta linea al fichero de configuración de la
máquina virtual:
extra = ‘console=hvc0 xencons=tty'
Vfb = [ 'type=vnc' ] (para acceder a las x vía vnc)
E-Ghost – Cursillos de verano Julio 2k9 30
31. Creación de un domU
Paravirtualización
Se puede hacer diréctamente con Debootstrap, pero
xen-tools automatiza el proceso:
/etc/xen-tools/xen-tools.cfg
dir = /var/xen-gests #donde se almacenan las máquinas virtuales
install-method=debootstrap #indicamos que haremos deboot
size = 2Gb #tamaño del disco
memory = 128Mb #cuanta memoria queremos utilizar
swap = 128Mb #tamaño de la swap
fs = ext3 #tipo de sistema de ficheros
dist = lenny #distribución de GNU/Linux
arch = i386 #arquitectura
passwd = 1 #indicar si se pedirá contraseña
mirror = http://ftp.es.debian.org/debian/ #mirror
gateway = 192.168.1.100 #puerta de enlace
netmask = 255.255.255.0 #mascara de subred
E-Ghost – Cursillos de verano Julio 2k9 31
32. Configuración HVM
Configuración de un domU (HVM) [ejemplo, no lo podemos hacer]
/etc/xen/farsa.hvm
kernel = "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory = 128
name = "debian-hvm"
vif = [ 'type=ioemu,bridge=xenbr0' ]
disk = [ 'file:/var/xen/debian.img,hda,w', 'file:/var/xen/debian.iso,hdb:cdrom,r' ]
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
device_model = '/usr/' + arch_libdir + '/xen/bin/qemu-dm'
boot="dc"
sdl=0
vnc=1
nographici=0
stdvga=0
serial='pty'
localtime=1
keymap='es'
E-Ghost – Cursillos de verano Julio 2k9 32
33. Acceso a los domU
Acceso sin X
xm console
SSH
Acceso con X
Tarjeta gráfica real, PCI passthrough
VNC
SDL
E-Ghost – Cursillos de verano Julio 2k9 33
34. Ejemplos
Arranque de domU paravirtualizado: Debian Etch 4.0
Arranque de domU paravirtualizado: FreeBSD 7
...
E-Ghost – Cursillos de verano Julio 2k9 34
35. Virtualización de Hardware
Virtualizar/paravirtualizar hardware es más sencillo
que virtualizar la CPU
Xen utiliza el modelo de paravirtualización también
para el resto del hardware
Interfaz más sencilla de comunicación.
Mayor independencia del hardware real (mejor a la
hora de hacer migraciones).
Virtualización completa
Emulación
Paravirtualización
Drivers específicos
Mejora de rendimiento
E-Ghost – Cursillos de verano Julio 2k9 35
36. Virtualización de Hardware (2)
SIN virtualización!
Hardware real!
Ocultamos el dispositivo PCI al dom0 y de lo damos a
un domU -> PCI passthrough
En la configuración del GRUB (dom0):
pciback.permisive pciback.hide=(02:03.0)(0000:02:03.1)
En el fichero de configuración del domU:
pci=['02:03.0', '02:03.1']
E-Ghost – Cursillos de verano Julio 2k9 36
37. Salvar, recuperar y migrar un domU
Salvar el estado de un domU
Como la función hibernar en los portátiles.
Facilita un arranque rápido.
xm save
Recuperar el estado de un domU
xm restore
Migración
Estática
Suspender -> Migrar -> Recuperar
Live
No se interrumpe el funcionamiento del domU.
xm migrate
E-Ghost – Cursillos de verano Julio 2k9 37
38. Salvar, recuperar y migrar un domU (2)
Live migration
Los 2 hosts con xend corriendo y configurado para
escuchar peticiones de reubicación:
/etc/xen/xend-config.sxp
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '')
(xend-relocation-hosts-allow '')
Sistema de almacenamiento compartido entre ambos
hosts.
Misma versión de Xen en ambos hosts.
Fichero de configuración para el domU en los 2 hosts.
E-Ghost – Cursillos de verano Julio 2k9 38
39. KVM: Introducción
Sistema 'oficial' de virtualización del Kernel
Incluido desde la versión 2.6.20
Utiliza el 'API estándar' del Kernel
Sistema de virtualización 'oficial' de Debian
Sistema basado en Qemu (emulación) pero
modificado → Full virtualization
Necesidad de soporte en el procesador
Soporte de drivers paravirtualizados para mejorar el
rendimiento
E-Ghost – Cursillos de verano Julio 2k9 39
40. KVM vs. Xen
KVM Xen
Full virtualization Full virtualization +
Incluido en el mainline del paravirt
Kernel Parches própios oficiales
Instalación sencilla para Kernel 2.6.18
Soporte inicial de PCI Instalación más compleja
passthrough Buen soporte de PCI
Muy buen rendimiento en passthrough
operaciones CPU-only Buen rendimiento en
Comunity supported operaciones CPU-only
Soporte comercial
E-Ghost – Cursillos de verano Julio 2k9 40
41. KVM: componentes
Módulo del Kernel + herramientas de usuario
Userspace tools
Linux Kernel
Virtio modules KVM module
E-Ghost – Cursillos de verano Julio 2k9 41
42. KVM: arquitectura de red
Al estar basado en Qemu, KVM utiliza su arquitectura
de red
User networking
Con el host anfitrión
Private virtual bridge
Subred de varias VMs no visible por otras VMs ni por la
red 'real'
Public pridge
Bridge estándar. Conexión con la red 'real' como un host
más
E-Ghost – Cursillos de verano Julio 2k9 42
43. KVM: instalación
Instalamos las utilidades de KVM, libvirt y virtio
apt-get install kvm libvirt-bin virtinst bridge-
utils
Añadimos el usuario root al grupo 'libvirt'
usermod -G root libvirt
Comprobamos que todo está correctamente
instalado:
virsh -c qemu:///system list
E-Ghost – Cursillos de verano Julio 2k9 43
44. KVM: instalación (2)
Configuración del bridge ethernet en
/etc/network/interfaces
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.100
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
E-Ghost – Cursillos de verano Julio 2k9 44
45. KVM: instalación (3)
Habilitamos que VNC escuche a todas las Ips.
Editamos el fichero /etc/kvm/libvirt/qemu.conf y
añadimos/modificamos:
vnc_listen = "0.0.0.0"
E-Ghost – Cursillos de verano Julio 2k9 45
46. KVM: creación de una máquina virtual
Podemos crear una máquina de 2 maneras
Indicando todas las opciones desde la línea de
comandos
Mediante un fichero XML
De cara a mantener un sistema 'ordenado' mejor
utilizar los XML
E-Ghost – Cursillos de verano Julio 2k9 46
48. KVM: administración
Consola de administración virsh
virsh --connect qemu:///system
Comandos útiles
Help: listado de comandos
Define: inicializar (pero no arrancar) una VM a partir de
un fichero XML
Undefine
Start: arranca una VM previamente inicializada
Shutdown: apaga 'correctamente' una VM
...
E-Ghost – Cursillos de verano Julio 2k9 48
49. KVM: administración (2)
Formas de conectarnos a las VMs
SSH
VNC
virt-manager
ConVirt
E-Ghost – Cursillos de verano Julio 2k9 49
50. Frontend de gestión
Soy superfriki... ¿por qué necesito un frontend de
administración?
¿Delegar tareas?
¿acceso ssh para todo?
Gestión distribuida
E-Ghost – Cursillos de verano Julio 2k9 50
51. Enomalism
CuasiVaporware
Herramienta de administración web
Se basa en las funcionalidades de LibVirt
Xen
KVM
qemu
Sin acceso root ni shell para los usuarios
Permite realizar la mayoría de las tareas de gestión
Está todavía en desarrollo (o medio parado)
Muy complejo de instalar/configurar
Dependencias de python
Incompatibilidades entre versiones
Me ha funcionado en CentOS 5
E-Ghost – Cursillos de verano Julio 2k9 51
52. ConVirt
Frontend gtk
Este lo probamos físicamente
cd /tmp
wget --no-cache
http://www.convirture.com/repos/convirture_packaging_p
ub_key
apt-key add convirture_packaging_pub_key
cd /etc/apt/sources.list.d
wget –no-cache
http://www.convirture.com/repos/definitions/ubuntu/9.x/co
nvirt.list
apt-get update
apt-get install convirt
Si no rula es por la versión de python (2.5)
E-Ghost – Cursillos de verano Julio 2k9 52
54. Tips & Tricks
Elegir un hardware super-compatible, no vamos a
complicarnos desde el principio...
La RAM esta barata... :)
El rendimiento global es mejor con dispositivos físicos
LVM
Si no vamos a hacer nada raro no necesitamos
Kernels distintos...
Para aprender, no es necesario complicarse
apt es tu amigo!!
E-Ghost – Cursillos de verano Julio 2k9 54
55. Referencias
Libro: Running Xen (Prentice Hall)
http://wiki.xensource.com/xenwiki/
http://jailtime.org/
http://del.icio.us/saghul/xen
http://del.icio.us/saghul/kvm
http://cosi.clarkson.edu/docs/installingxen/
E-Ghost – Cursillos de verano Julio 2k9 55
57. Licencia
Saúl Ibarra Corretgé - http://www.saghul.net
Fernando Urien (zefe)
Reconocimiento - No comercial - Compartir igual: El material
creado por un artista puede ser distribuido, copiado y exhibido por
terceros si se muestra en los créditos. No se puede obtener
ningún beneficio comercial y las obras derivadas tienen que estar
bajo los mismos términos de licencia que el trabajo original.
E-Ghost – Cursillos de verano Julio 2k9 57