Virtualización con Xen y KVM

18,132 views
17,960 views

Published on

Introducción a la virtualización con Xen y KVM.

Published in: Technology
1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total views
18,132
On SlideShare
0
From Embeds
0
Number of Embeds
1,887
Actions
Shares
0
Downloads
636
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

Virtualización con Xen y KVM

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  18. 18. Componentes de Xen, arquitectura E-Ghost – Cursillos de verano Julio 2k9 18
  19. 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. 20. Componentes de Xen, arquitectura (3) Arquitectura de red genérica E-Ghost – Cursillos de verano Julio 2k9 20
  21. 21. Componentes de Xen, arquitectura (4) Arquitectura de red modo bridge E-Ghost – Cursillos de verano Julio 2k9 21
  22. 22. Componentes de Xen, arquitectura (5) Arquitectura de red routing E-Ghost – Cursillos de verano Julio 2k9 22
  23. 23. Componentes de Xen, arquitectura (6) Arquitectura de red: red Virtual E-Ghost – Cursillos de verano Julio 2k9 23
  24. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  47. 47. KVM: creación de una máquina virtual (2) <domain type='kvm'> <interface type='bridge'> <name>asterisk1kvm</name> <mac address='54:52:00:78:20:42'/> <uuid>a0e88c9d-4a49-eda7-ab1b-c895b9662540</uuid> <source bridge='br0'/> <memory>1048576</memory> <model type='virtio'/> <currentMemory>1048576</currentMemory> </interface> <vcpu>1</vcpu> <serial type='pty'> <os> <target port='0'/> <type arch='x86_64' machine='pc'>hvm</type> </serial> <boot dev='hd'/> <console type='pty'> </os> <target port='0'/> <features> </console> </features> <input type='mouse' bus='ps2'/> <clock offset='utc'/> <graphics type='vnc' port='-1' autoport='yes' keymap='es'/> <on_poweroff>destroy</on_poweroff> </devices> <on_reboot>restart</on_reboot> </domain> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/kvm</emulator> <disk type='block' device='disk'> <source dev='/dev/volgroup/asterisk1kvm'/> <target dev='vda' bus='virtio'/> </disk> <disk type='file' device='cdrom'> <source file='/root/debian-lenny.iso'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> E-Ghost – Cursillos de verano Julio 2k9 47
  48. 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. 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. 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. 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. 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
  53. 53. virt-manager Gestor de Vms de KVM Está en el apt! E-Ghost – Cursillos de verano Julio 2k9 53
  54. 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. 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
  56. 56. Agradecimientos Saghul UD Organizadores de cursillos Txipi Compis de curro E-Ghost – Cursillos de verano Julio 2k9 56
  57. 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

×