Virtualización con Xen

6,145 views

Published on

Introducción a la virtualización con Xen.

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,145
On SlideShare
0
From Embeds
0
Number of Embeds
484
Actions
Shares
0
Downloads
347
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Virtualización con Xen

  1. 1. Xen
  2. 2. Índice <ul><li>Breve introducción a Xen </li></ul><ul><ul><li>Sistemas de virtualización. </li></ul></ul><ul><ul><li>Ventajas y desventajas. </li></ul></ul><ul><ul><li>Ámbitos de aplicación. </li></ul></ul><ul><li>Componentes de Xen, arquitectura </li></ul><ul><li>Requisitos hardware </li></ul><ul><li>Instalación: modo sencillo </li></ul><ul><ul><li>Instalación de paquetes </li></ul></ul><ul><ul><li>Administración vía consola </li></ul></ul><ul><ul><li>Configuración </li></ul></ul><ul><ul><li>Ejemplos </li></ul></ul><ul><li>Instalación: modo hacker </li></ul><ul><ul><li>Uso del kernel original de XenSource </li></ul></ul><ul><ul><li>Distintos kernels </li></ul></ul>
  3. 3. Introducción a Xen <ul><li>Monitor de máquinas virtuales (hypervisor) </li></ul><ul><ul><li>Varios SO distintos en el mismo hardware </li></ul></ul><ul><ul><li>Abstracción de recursos físicos </li></ul></ul><ul><ul><li>Interface uniforme para el hardware -> portabilidad </li></ul></ul><ul><li>Funciona en hardware 'barato' * </li></ul><ul><ul><li>Para sacarle todo el partido -> extensiones de Intel y AMD. </li></ul></ul><ul><li>Rápido, escalable </li></ul><ul><li>Característivas avanzadas </li></ul><ul><ul><li>PCI passtrough </li></ul></ul><ul><ul><li>Live migration </li></ul></ul><ul><li>Es Software Libre!! </li></ul>
  4. 4. Sistemas de Virtualización <ul><li>Xen soporta las siguientes formas de virtualización: </li></ul><ul><ul><li>Full Virtualization: </li></ul></ul><ul><ul><ul><li>Parecido a la emulación. </li></ul></ul></ul><ul><ul><ul><li>Los SO se quedan sin modificar. </li></ul></ul></ul><ul><ul><ul><li>Solo funcionan sobre la misma arquitectura que el hardware real. </li></ul></ul></ul><ul><ul><ul><li>Necesarias las extensiones Intel VT o AMD V. </li></ul></ul></ul><ul><ul><ul><ul><li>Simplifica instrucciones x86. </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Traducción de instrucciones binarias 'al vuelo'. </li></ul></ul></ul></ul><ul><ul><li>Paravirtualización: </li></ul></ul><ul><ul><ul><li>El sistema operativo huésped ha de estar modificado. </li></ul></ul></ul><ul><ul><ul><li>La comunicación con el hardware se realiza a través del hypervisor. </li></ul></ul></ul><ul><ul><ul><li>Dificultades con SO cerrados. </li></ul></ul></ul><ul><ul><ul><li>Ventajas: rendimiento, escalabilidad. </li></ul></ul></ul>
  5. 5. Ventajas y desventajas <ul><li>Full Virtualization: </li></ul><ul><ul><li>No hay que modificar el sistema operativo huésped </li></ul></ul><ul><ul><li>Muchas instrucciones se ejecutan directamente en el hardware. </li></ul></ul><ul><li>Paravirtualización: </li></ul><ul><ul><li>Mejor rendimiento. </li></ul></ul><ul><ul><li>Las modificaciones en el kernel huésped ayudan a una ejecución más eficiente. </li></ul></ul><ul><li>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. </li></ul><ul><li>Xen en un entorno paravirtualizado obtiene un perfecto equilibrio entre rendimiento y aislamiento. </li></ul>
  6. 6. Ámbitos de aplicación <ul><li>Mantener varios sistemas paralelamente </li></ul><ul><ul><li>Desarrollo + producción </li></ul></ul><ul><li>Tener entornos de ejecución aislados </li></ul><ul><li>Aunar servidores para ahorrar costes y espacio </li></ul><ul><li>Pruebas de servicios </li></ul><ul><li>Just 4 fun!! </li></ul>
  7. 7. Componentes de Xen, arquitectura
  8. 8. Componentes de Xen, arquitectura (2) <ul><li>Sistema servidor (dom0) </li></ul><ul><ul><li>Kernel modificado para que se comunique con el hypervisor (oficial: 2.6.18 de XenSource). </li></ul></ul><ul><ul><li>Hypervisor y utilidades de Xen instaladas. </li></ul></ul><ul><ul><li>Hardware real. </li></ul></ul><ul><li>Sistema huésped (domU) </li></ul><ul><ul><li>Kernel modificado para interactuar con el hypervisor (dom0). Soporte en el mainline del kernel desde la versión 2.6.23 </li></ul></ul><ul><ul><li>Resto del sistema operativo y aplicaciones sin modificar. </li></ul></ul><ul><ul><li>Posibilidad de acceso exclusivo a hardware real: pci passthrough. </li></ul></ul>
  9. 9. Componentes de Xen, arquitectura (3) <ul><li>Arquitectura de red </li></ul>
  10. 10. Componentes de Xen, arquitectura (4) <ul><li>Modalidades de funcionamiento: </li></ul><ul><ul><li>Modo bridge </li></ul></ul><ul><ul><ul><li>NIC virtual en el domU </li></ul></ul></ul><ul><ul><ul><li>Bridge Ethernet con la interfaz real del dom0 </li></ul></ul></ul><ul><ul><ul><li>El domU aparece como un host más de la red </li></ul></ul></ul><ul><ul><li>Modo routing </li></ul></ul><ul><ul><ul><li>NIC virtual en el domU </li></ul></ul></ul><ul><ul><ul><li>2 redes diferentes: la red real y la virtual. </li></ul></ul></ul><ul><ul><ul><li>Routing IP entre ambas redes </li></ul></ul></ul><ul><ul><li>Modo NAT </li></ul></ul><ul><ul><ul><li>NIC virtual en el domU </li></ul></ul></ul><ul><ul><ul><li>Segmento de red virtual NO accesible desde el exterior </li></ul></ul></ul><ul><ul><ul><li>Routing entre el segmento de red virtual oculto mediante NAT. </li></ul></ul></ul><ul><li>Cada guest puede tener hasta 3 VIFs, + las 'reales'. </li></ul>
  11. 11. Requisitos hardware <ul><li>Se recomienda la arquitectura x86, es donde mejor funciona. </li></ul><ul><li>Para poder trabajar con HVM, necesario procesador con extensiones de virtualización: </li></ul><ul><ul><li>Intel-VT </li></ul></ul><ul><ul><ul><li>cat /proc/cpuinfo | grep vmx </li></ul></ul></ul><ul><ul><li>AMD-V </li></ul></ul><ul><ul><ul><li>cat /proc/cpuinfo | grep svm </li></ul></ul></ul><ul><li>Disco duro </li></ul><ul><ul><li>Todos los guests accediendo al mismo tiempo </li></ul></ul><ul><li>RAM </li></ul><ul><ul><li>Los domU se la 'roban' al dom0 </li></ul></ul>
  12. 12. Instalación: modo sencillo <ul><li>Instalación de paquetes necesarios </li></ul><ul><ul><li>apt-get install bridge-utils libc6-xen libxen3 linux-xen python-xen-3.2 xen-docs-3.2 xen-hypervisor-3.2 xen-tools xen-utils-3.2 </li></ul></ul><ul><ul><li>Debería funcionar un simple apt-get install ubuntu-xen-desktop pero actualmente en Hardy esta roto (¿no era LTS?) </li></ul></ul><ul><li>Reiniciar y arrancar con el nuevo Kernel. </li></ul><ul><li>Welcome to Xen! </li></ul>
  13. 13. Administración vía consola <ul><li>Comandos de administración: </li></ul><ul><ul><li>Arrancar domU y acceder a su consola: xm create /etc/xen/farsa.cfg -c </li></ul></ul><ul><ul><li>Arrancar un domU y dejarlo en background: xm create /etc/xen/farsa.cfg </li></ul></ul><ul><ul><li>Conectarse a la consola de un domU: xm console farsa </li></ul></ul><ul><ul><li>Reiniciar domU: xm reboot farsa </li></ul></ul><ul><ul><li>Apagar domU: xm shutdown farsa </li></ul></ul><ul><ul><li>Apagar (malamente) domU: xm destroy farsa </li></ul></ul><ul><ul><li>Todas las opciones de xm: xm help </li></ul></ul>
  14. 14. Administración vía consola (2) <ul><ul><li>Estado del sistema: xentop </li></ul></ul><ul><ul><li>Mensajes de arranque de Xen: xm dmesg </li></ul></ul><ul><ul><li>Listado de guests arrancados: xm list </li></ul></ul>
  15. 15. Configuración (1) <ul><li>Configuración general de Xen: </li></ul><ul><ul><li>/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 '') </li></ul></ul>
  16. 16. Configuración (2) <ul><li>Configuración de un domU (paravirt) [ejemplo] </li></ul><ul><ul><li>/etc/xen/farsa.cfg kernel = '/boot/vmlinuz-2.6.24.3' ramdisk = '/boot/initrd.img-2.6.24.3' extra = 'console=hvc0 nomce' memory = '128' root = '/dev/xvda1 ro' disk = [ 'phy:/dev/sdb1,xvda1,w', 'file:/var/xen/swp.img,xvda2,w' ] name = 'lvmbase' vif = [ '' ] on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' </li></ul></ul>
  17. 17. Configuración (3) <ul><li>Configuración de un domU (HVM) [ejemplo] </li></ul><ul><ul><li>/etc/xen/farsa.hvm kernel = &quot;/usr/lib/xen/boot/hvmloader&quot; builder='hvm' memory = 128 name = &quot;debian-hvm&quot; 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=&quot;dc&quot; sdl=0 vnc=1 nographici=0 stdvga=0 serial='pty' localtime=1 keymap='es' </li></ul></ul>
  18. 18. Creación de un domU <ul><li>Paravirtualización </li></ul><ul><ul><li>Se puede hacer diréctamente con Debootstrap, pero xen-tools automatiza el proceso: </li></ul></ul><ul><ul><li>/etc/xen-tools/xen-tools.cfg dir = /var/xen-gests #donde se almacenan las máquinas virtuales debootstrap = 1 #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 = etch #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 kernel = /boot/vmlinuz-2.6.24.3 #el kernel que creamos </li></ul></ul>
  19. 19. Creación de un domU (2) <ul><ul><li>Para crear un nuevo domU con xen-tools: xen-create-image --hostname=base-domU –ip=192.168.1.25 </li></ul></ul><ul><li>Full Virtualization (HVM) </li></ul><ul><ul><li>Para crear un domU basta con lanzar el domU y seguir con la instalación. </li></ul></ul>
  20. 20. Ejemplos <ul><li>Arranque de domU paravirtualizado: Debian Etch 4.0 </li></ul><ul><li>Arranque de domU paravirtualizado: FreeBSD 7 </li></ul><ul><li>Inicio de instalación de Debian Etch (HVM) </li></ul><ul><li>Inicio de instalación de Windows XP (HVM) </li></ul>
  21. 21. Instalación: modo 'hacker' <ul><li>La instalación sencilla utilizaba el mismo Kernel para todo. </li></ul><ul><ul><li>Poca flexibilidad. </li></ul></ul><ul><ul><li>Imposibilidad de realizar cambios en la configuración del Kerne. </li></ul></ul><ul><li>En ocasiones puede ser necesario utilizar Kernels distintos para el dom0 y para los domU </li></ul><ul><li>Necesidad de realizar cambios en la configuración del Kernel. </li></ul><ul><li>Compilación de Xen y del Kernel desde las fuentes </li></ul>
  22. 22. Instalación: modo 'hacker' (2) <ul><li>Instalación de dependencias necesarias: apt-get install iproute bridge-utils python-twisted binutils zlib1g-dev python-dev transfig bzip2 screen ssh debootstrap libcurl3-dev libncurses5-dev x-dev build-essential gettext gawk mercurial yaird bcc libsdl1.2debian-all libsdl1.2-dev libx86-dev libvncserver-dev </li></ul><ul><li>Descarga del Xen Hypervisor y las utilidades Xen wget http://bits.xensource.com/oss-xen/release/3.2.1/xen-3.2.1.tar.gz </li></ul><ul><li>Descargamos el Kernel parcheado de XenSource hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg </li></ul><ul><li>Instalamos el hypervisor y las herramientas Xen # tar zxvf xen-3.2.1.tar.gz # cd xen-3.2.1 # make xen # make install-xen # make tools # make install-tools </li></ul>
  23. 23. Instalación: modo 'hacker' (3) <ul><li>Compilamos el Kernel de Xen. No podemos usar make-kpkg porque actualmente (en Debian Etch) no esta soportada la arquitectura Xen en make.kpkg # cd linux-2.6.18-xen.hg # make menuconfig </li></ul><ul><li>Cuidado al habilitar las cosas, este es el Kernel del dom0! </li></ul><ul><li>Habilitar soporte para Xen dom0. # make # make modules # make modules_install # make install </li></ul>
  24. 24. Instalación: modo 'hacker' (4) <ul><li>Creamos en initrd y lo incluimos en el GRUB: # depmod 2.6.18.8 # mkinitrd.yaird -o /boot/initrd.img-2.6.18.8 2.6.18.8 # update-grub </li></ul><ul><li>Ejemplo de entrada generada en GRUB: title Xen 3.2.0 / Debian GNU/Linux, kernel 2.6.18.8 root (hd0,0) kernel /boot/xen-3.2.0.gz module /boot/vmlinuz-2.6.18.8 root=/dev/sda1 ro module /boot/initrd.img-2.6.18.8 savedefault </li></ul>
  25. 25. Instalación: modo 'hacker' (5) <ul><li>Para finalizar, automatizamos el arranque del demonio de control de Xen y el gestor automático de domUs. # update-rc.d xend defaults 20 21 # update-rc.d xendomains defaults 21 20 </li></ul><ul><li>Para hacer que un domU arranque automáticamente al iniciar el sistema, basta con situar el fichero de configuración en /etc/xen/auto/ # ln -s /etc/xen/farsa.cfg /etc/xen/auto/farsa.cfg </li></ul>
  26. 26. Instalación: modo 'hacker' (6) <ul><li>Distintos Kernels: </li></ul><ul><ul><li>Se compilan igual que el Kernel del dom0 (make, make modules, ...) </li></ul></ul><ul><ul><li>Habilitar Xen domU (Paravirtualization -> Xen Guest) </li></ul></ul><ul><ul><li>Seleccionar Kernel que queremos en el fichero de configuración. </li></ul></ul>
  27. 27. Acceso a los domU <ul><li>Acceso sin X </li></ul><ul><ul><li>xm console </li></ul></ul><ul><ul><li>SSH </li></ul></ul><ul><li>Acceso con X </li></ul><ul><ul><li>Tarjeta gráfica real, PCI passthrough </li></ul></ul><ul><ul><li>VNC </li></ul></ul><ul><ul><li>SDL </li></ul></ul>
  28. 28. Virtualización de Hardware <ul><li>Virtualizar/paravirtualizar hardware es más sencillo que virtualizar la CPU </li></ul><ul><li>Xen utiliza el modelo de paravirtualización también para el resto del hardware </li></ul><ul><ul><li>Interfaz más sencilla de comunicación. </li></ul></ul><ul><ul><li>Mayor independencia del hardware real (mejor a la hora de hacer migraciones). </li></ul></ul><ul><li>Virtualización completa </li></ul><ul><ul><li>Emulación </li></ul></ul><ul><li>Paravirtualización </li></ul><ul><ul><li>Drivers específicos </li></ul></ul><ul><ul><li>Mejora de rendimiento </li></ul></ul>
  29. 29. Virtualización de Hardware (2) <ul><li>SIN virtualización! </li></ul><ul><ul><li>Hardware real! </li></ul></ul><ul><ul><li>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'] </li></ul></ul>
  30. 30. Salvar, recuperar y migrar un domU <ul><li>Salvar el estado de un domU </li></ul><ul><ul><li>Como la función hibernar en los portátiles. </li></ul></ul><ul><ul><li>Facilita un arranque rápido. </li></ul></ul><ul><ul><li>xm save </li></ul></ul><ul><li>Recuperar el estado de un domU </li></ul><ul><ul><li>xm restore </li></ul></ul><ul><li>Migración </li></ul><ul><ul><li>Estática </li></ul></ul><ul><ul><ul><li>Suspender -> Migrar -> Recuperar </li></ul></ul></ul><ul><ul><li>Live </li></ul></ul><ul><ul><ul><li>No se interrumpe el funcionamiento del domU. </li></ul></ul></ul><ul><ul><li>xm migrate </li></ul></ul>
  31. 31. Salvar, recuperar y migrar un domU (2) <ul><li>Live migration </li></ul><ul><ul><li>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 '') </li></ul></ul><ul><ul><li>Sistema de almacenamiento compartido entre ambos hosts. </li></ul></ul><ul><ul><li>Misma versión de Xen en ambos hosts. </li></ul></ul><ul><ul><li>Fichero de configuración para el domU en los 2 hosts. </li></ul></ul>
  32. 32. Administración mediante GUI: ConVirt <ul><li>ConVirt, anteriormente XenMan, es una utilidad gráfica de administración de Xen. </li></ul><ul><ul><li>http://xenman.sourceforge.net </li></ul></ul><ul><li>Instalación de dependencias: </li></ul><ul><ul><li>apt-get install python-glade2 python-gtk2 python-paramiko python-rpm python-vte yelp </li></ul></ul><ul><ul><li>No hay ni que compilar. </li></ul></ul><ul><ul><ul><li>Descomprimir </li></ul></ul></ul><ul><ul><ul><li>./ConVirt </li></ul></ul></ul>
  33. 33. Administración mediante GUI: ConVirt (2)
  34. 34. Tips & Tricks <ul><li>Elegir un hardware super-compatible, no vamos a complicarnos desde el principio... </li></ul><ul><li>La RAM esta barata... :) </li></ul><ul><li>El rendimiento global es mejor con dispositivos físicos </li></ul><ul><ul><li>LVM </li></ul></ul><ul><li>Si no vamos a hacer nada raro no necesitamos Kernels distintos... </li></ul><ul><li>Para aprender, no es necesario complicarse </li></ul><ul><ul><li>apt es tu amigo!! </li></ul></ul>
  35. 35. Referencias <ul><li>Libro: Running Xen (Prentice Hall) </li></ul><ul><li>http://wiki.xensource.com/xenwiki/ </li></ul><ul><li>http://jailtime.org/ </li></ul><ul><li>http://del.icio.us/saghul/xen </li></ul>
  36. 36. Licencia <ul><li>Saúl Ibarra Corretgé - http://www.saghul.net </li></ul><ul><li>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. </li></ul>

×