virtualización con xen y kvm
Post on 19-May-2015
17.494 Views
Preview:
DESCRIPTION
TRANSCRIPT
Saúl Ibarra Corretgé aka saghul
Fernando de Urien y Muñiz aka Zefe
Introducción a la virtualización con Xen y KVM.
Xen + KVM101
2E-Ghost – Cursillos de verano Julio 2k9
Presentación
Quiénes somos? (a dónde vamos y de dónde venimos es en otra aula)
Saúl Ibarra – aka SaghulFernando Urien alwayska Zefe
¿A qué hemos venido? (esto sí es en este aula)¿A qué habéis venido?HorariosBañosSalidas de emergencia
3E-Ghost – Cursillos de verano Julio 2k9
Índice
Introducción a la virtualizaciónVirtualización en el mundo empresarialBreve introducción a Xen
Componentes de Xen, arquitecturaRequisitos hardwareInstalación: modo sencilloAdministración y ejemplos
KVMDiferencias con XenInstalaciónAdministración y ejemoplos
Frontends
4E-Ghost – Cursillos de verano Julio 2k9
¿Qué es esto de virtualizar?
Ejecutar varias instancias de sistemas operativosCada una de las instancias tiene la percepción de tener acceso al hardware físicoLas instancias son totalmente aisladas e independientesTipos:
EmulaciónVirtualización de S.O.ParavirtualizaciónVirtualización completa
5E-Ghost – Cursillos de verano Julio 2k9
Emulación
Simular mediante software TODO el hardware que la máquina virtual utilizaVentaja... es soft, se puede simular cualquier cosaDesventaja... más lento que el caballo del maloBosch, VirtualPC para Mac...
x86/x64 Hardware
Hardware VM A Hardware VM B
Guest OS Guest OS Guest OS Guest OS
Apps Apps Apps Apps
6E-Ghost – Cursillos de verano Julio 2k9
Virtualización de S.O.
El sistema operativo es capaz de crear varios entornos virtuales sobre el mismo sistemaSe crean diferentes VPSEl rendimiento es elevado pero todos los VPS tienen que ser utilizando el mismo kernel.Es muy utilizado en entornos hostingVirtuozzo, OpenVZ
x86/x64 Hardware
Host OS
VPS VPS VPSVPSVPS VPS
Apps AppsAppsAppsApps Apps
7E-Ghost – Cursillos de verano Julio 2k9
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 necesarioLas máquinas virtuales son conscientes de que están siendo virtualizadas y tienen un kernel capaz de interactuar con el hypervisor
x86/x64 Hardware
Hypervisor integrado con Host OS
Guest OSParte de Virtualización en Kernel Parte de Virtualización en Kernel
Guest OS
Apps Apps
8E-Ghost – Cursillos de verano Julio 2k9
Virtualización asistida por hardware
El hypervisor presenta un hardware genérico al sistema operativoEl SO no es consciente de estar virtualizadoSin embargo, las capas de virtualización bajan un nivel más cercano del hardware
x86/x64 Hardware
VMM (Virtual Machine Monitor) o Host OS
Guest OS
Nada o VMM (Virtual Machine Monitor)
Guest OSGuest OSGuest OS
Apps Apps AppsApps
9E-Ghost – Cursillos de verano Julio 2k9
¿Para qué puedo querer virtualizar?
Consolidación de serviciosAhorro de costes de CPDEntornos de laboratorioEntornos CloudComputingComo dicen por ahí... just4fun!
10E-Ghost – Cursillos de verano Julio 2k9
Consolidación de servicios
Los CPD's actuales están en general a límite de capacidadHay muchos servidores que están infrautilizados a nivel hardware pero dan servicio de aplicacionesLa solución pasa por aglutinar servicios en una máquina pero de forma que quede garantizado el aislamiento.
11E-Ghost – Cursillos de verano Julio 2k9
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 electricidadSe ahorra en espacio de CPDSe ahorra en “temperatura” CPDSe ahorra en costes de operador
12E-Ghost – Cursillos de verano Julio 2k9
Entornos LAB
Entornos de desarrollo de bajo costeNo es necesario replicar a nivel hardware todo el entorno de producción en sistemas pre-producciónVersatilidad para crear nuevas instancias de desarrollo y de menor coste.'Deploy' muy rápido
http://www.jailtime.org
13E-Ghost – Cursillos de verano Julio 2k9
Cloud Computing
Crear un pool de servidores físicos sobre los que distribuir los serviciosAlta disponibilidad y entornos distribuidosMovimiento de máquinas entre entornos físicos de forma transparente y en calienteProgramación temporal de entornos computacionales
14E-Ghost – Cursillos de verano Julio 2k9
Entornos enterprise
Cómo se hace esto??
Existen muchos productos de virtualización
VMWarePionero en el ambitoMultitud de herramientas de administraciónP2VV2VGestores centralizados
HyperVIntegrado en Win2008Las herramientas de gestión de VM es un producto a parte (System Center Virtual Machine Manager)Basado en hypervisor
XenComprado por citrixCitrix ha creado una suite de herramientas de gestión
15E-Ghost – Cursillos de verano Julio 2k9
Introducción a Xen
Monitor de máquinas virtuales (hypervisor)Varios SO distintos en el mismo hardwareAbstracción de recursos físicosInterface uniforme para el hardware -> portabilidad
Funciona en hardware 'barato' *Para sacarle todo el partido -> extensiones de Intel y AMD.
Rápido, escalableCaracterístivas avanzadas
PCI passtroughLive migration
Es Software Libre!!Las herramientas integradas de citrix no lo son
16E-Ghost – Cursillos de verano Julio 2k9
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.
17E-Ghost – Cursillos de verano Julio 2k9
Ventajas y desventajas
Full Virtualization:No hay que modificar el sistema operativo huéspedMuchas 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.
18E-Ghost – Cursillos de verano Julio 2k9
Componentes de Xen, arquitectura
19E-Ghost – Cursillos de verano Julio 2k9
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.23Resto del sistema operativo y aplicaciones sin modificar.Posibilidad de acceso exclusivo a hardware real: pci passthrough.
20E-Ghost – Cursillos de verano Julio 2k9
Componentes de Xen, arquitectura (3)
Arquitectura de red genérica
21E-Ghost – Cursillos de verano Julio 2k9
Componentes de Xen, arquitectura (4)
Arquitectura de red modo bridge
22E-Ghost – Cursillos de verano Julio 2k9
Componentes de Xen, arquitectura (5)
Arquitectura de red routing
23E-Ghost – Cursillos de verano Julio 2k9
Componentes de Xen, arquitectura (6)
Arquitectura de red: red Virtual
24E-Ghost – Cursillos de verano Julio 2k9
Componentes de Xen, arquitectura (4)
Modalidades de funcionamiento:Modo bridge
NIC virtual en el domUBridge Ethernet con la interfaz real del dom0El domU aparece como un host más de la red
Modo routingNIC virtual en el domU2 redes diferentes: la red real y la virtual.Routing IP entre ambas redes
Modo NATNIC virtual en el domUSegmento de red virtual NO accesible desde el exteriorRouting entre el segmento de red virtual oculto mediante NAT.
Cada guest puede tener hasta 3 VIFs, + las 'reales'.
25E-Ghost – Cursillos de verano Julio 2k9
Requisitos hardware
Se recomienda la arquitectura x86, es donde mejor funciona.Para poder trabajar con HVM, necesario procesador con extensiones de virtualización:
Intel-VTcat /proc/cpuinfo | grep vmx
AMD-Vcat /proc/cpuinfo | grep svm
Disco duroTodos los guests accediendo al mismo tiempo
RAMLos domU se la 'roban' al dom0
26E-Ghost – Cursillos de verano Julio 2k9
Instalación: modo sencillo
Instalación de paquetes necesariosApuntar la dirección IPapt-get remove –-purge network-manager*Reconfigurar /etc/network/interfacesInstalar el metapaquete de ubuntu
apt-get install ubuntu-xen-server
Ajustar la configuración de XENvim /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_i386.debwget 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.debdpkg –i linux-modules-2.6.26-1-xen-686_2.6.26-13lenny2_i386.debdpkg –i linux-image-2.6.26-1-xen-686_2.6.26-13lenny2_i386.deb
rebooooooot
27E-Ghost – Cursillos de verano Julio 2k9
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 '')
28E-Ghost – Cursillos de verano Julio 2k9
Administración vía consola
Comandos de administración:Arrancar domU y acceder a su consola:xm create /etc/xen/farsa.cfg -cArrancar un domU y dejarlo en background:xm create /etc/xen/farsa.cfgConectarse a la consola de un domU:xm console farsaReiniciar domU:xm reboot farsaApagar domU:xm shutdown farsaApagar (malamente) domU:xm destroy farsaTodas las opciones de xm:xm help
29E-Ghost – Cursillos de verano Julio 2k9
Administración vía consola (2)
Estado del sistema:xentopMensajes de arranque de Xen:xm dmesgListado de guests arrancados:xm list
30E-Ghost – Cursillos de verano Julio 2k9
Crear una VM mediante debootstrap
Revisión del fichero de xen-tools comentando la jugada…
# vim /etc/xen-tools/xen-tools.conf
Crear la VMmkdir /xenxen-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)
31E-Ghost – Cursillos de verano Julio 2k9
Creación de un domU
ParavirtualizaciónSe 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 virtualesinstall-method=debootstrap #indicamos que haremos debootsize = 2Gb #tamaño del discomemory = 128Mb #cuanta memoria queremos utilizarswap = 128Mb #tamaño de la swapfs = ext3 #tipo de sistema de ficherosdist = lenny #distribución de GNU/Linuxarch = i386 #arquitecturapasswd = 1 #indicar si se pedirá contraseñamirror = http://ftp.es.debian.org/debian/ #mirrorgateway = 192.168.1.100 #puerta de enlacenetmask = 255.255.255.0 #mascara de subred
32E-Ghost – Cursillos de verano Julio 2k9
Configuración HVM
Configuración de un domU (HVM) [ejemplo, no lo podemos hacer]
/etc/xen/farsa.hvmkernel = "/usr/lib/xen/boot/hvmloader"builder='hvm'memory = 128name = "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=0vnc=1nographici=0stdvga=0serial='pty'localtime=1keymap='es'
33E-Ghost – Cursillos de verano Julio 2k9
Acceso a los domU
Acceso sin Xxm consoleSSH
Acceso con XTarjeta gráfica real, PCI passthroughVNCSDL
34E-Ghost – Cursillos de verano Julio 2k9
Ejemplos
Arranque de domU paravirtualizado: Debian Etch 4.0Arranque de domU paravirtualizado: FreeBSD 7...
35E-Ghost – Cursillos de verano Julio 2k9
Virtualización de Hardware
Virtualizar/paravirtualizar hardware es más sencillo que virtualizar la CPUXen 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 completaEmulación
ParavirtualizaciónDrivers específicosMejora de rendimiento
36E-Ghost – Cursillos de verano Julio 2k9
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']
37E-Ghost – Cursillos de verano Julio 2k9
Salvar, recuperar y migrar un domU
Salvar el estado de un domUComo la función hibernar en los portátiles.Facilita un arranque rápido.xm save
Recuperar el estado de un domUxm restore
MigraciónEstática
Suspender -> Migrar -> RecuperarLive
No se interrumpe el funcionamiento del domU.xm migrate
38E-Ghost – Cursillos de verano Julio 2k9
Salvar, recuperar y migrar un domU (2)
Live migrationLos 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.
39E-Ghost – Cursillos de verano Julio 2k9
KVM: Introducción
Sistema 'oficial' de virtualización del KernelIncluido desde la versión 2.6.20Utiliza el 'API estándar' del KernelSistema de virtualización 'oficial' de Debian
Sistema basado en Qemu (emulación) pero modificado → Full virtualization
Necesidad de soporte en el procesadorSoporte de drivers paravirtualizados para mejorar el rendimiento
40E-Ghost – Cursillos de verano Julio 2k9
KVM vs. Xen
KVMFull virtualizationIncluido en el mainline del KernelInstalación sencillaSoporte inicial de PCI passthroughMuy buen rendimiento en operaciones CPU-onlyComunity supported
XenFull virtualization + paravirtParches própios oficiales para Kernel 2.6.18Instalación más complejaBuen soporte de PCI passthroughBuen rendimiento en operaciones CPU-onlySoporte comercial
41E-Ghost – Cursillos de verano Julio 2k9
KVM: componentes
Módulo del Kernel + herramientas de usuario
Linux Kernel
KVM moduleVirtio modules
Userspace tools
42E-Ghost – Cursillos de verano Julio 2k9
KVM: arquitectura de red
Al estar basado en Qemu, KVM utiliza su arquitectura de red
User networkingCon el host anfitrión
Private virtual bridgeSubred de varias VMs no visible por otras VMs ni por la red 'real'
Public pridgeBridge estándar. Conexión con la red 'real' como un host más
43E-Ghost – Cursillos de verano Julio 2k9
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
44E-Ghost – Cursillos de verano Julio 2k9
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
45E-Ghost – Cursillos de verano Julio 2k9
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"
46E-Ghost – Cursillos de verano Julio 2k9
KVM: creación de una máquina virtual
Podemos crear una máquina de 2 manerasIndicando todas las opciones desde la línea de comandosMediante un fichero XML
De cara a mantener un sistema 'ordenado' mejor utilizar los XML
47E-Ghost – Cursillos de verano Julio 2k9
KVM: creación de una máquina virtual (2)
<domain type='kvm'>
<name>asterisk1kvm</name>
<uuid>a0e88c9d-4a49-eda7-ab1b-c895b9662540</uuid>
<memory>1048576</memory>
<currentMemory>1048576</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='hd'/>
</os>
<features>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<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>
<interface type='bridge'>
<mac address='54:52:00:78:20:42'/>
<source bridge='br0'/>
<model type='virtio'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='-1' autoport='yes' keymap='es'/>
</devices>
</domain>
48E-Ghost – Cursillos de verano Julio 2k9
KVM: administración
Consola de administración virsh
virsh --connect qemu:///system
Comandos útilesHelp: listado de comandosDefine: inicializar (pero no arrancar) una VM a partir de un fichero XMLUndefineStart: arranca una VM previamente inicializadaShutdown: apaga 'correctamente' una VM...
49E-Ghost – Cursillos de verano Julio 2k9
KVM: administración (2)
Formas de conectarnos a las VMsSSHVNCvirt-managerConVirt
50E-Ghost – Cursillos de verano Julio 2k9
Frontend de gestión
Soy superfriki... ¿por qué necesito un frontend de administración?
¿Delegar tareas?¿acceso ssh para todo?Gestión distribuida
51E-Ghost – Cursillos de verano Julio 2k9
Enomalism
CuasiVaporwareHerramienta de administración webSe basa en las funcionalidades de LibVirt
XenKVMqemu
Sin acceso root ni shell para los usuariosPermite realizar la mayoría de las tareas de gestiónEstá todavía en desarrollo (o medio parado)Muy complejo de instalar/configurar
Dependencias de pythonIncompatibilidades entre versionesMe ha funcionado en CentOS 5
52E-Ghost – Cursillos de verano Julio 2k9
ConVirt
Frontend gtkEste lo probamos físicamente
cd /tmp wget --no-cache http://www.convirture.com/repos/convirture_packaging_pub_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/convirt.list apt-get update apt-get install convirt
Si no rula es por la versión de python (2.5)
53E-Ghost – Cursillos de verano Julio 2k9
virt-manager
Gestor de Vms de KVMEstá en el apt!
54E-Ghost – Cursillos de verano Julio 2k9
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!!
55E-Ghost – Cursillos de verano Julio 2k9
Referencias
Libro: Running Xen (Prentice Hall)http://wiki.xensource.com/xenwiki/http://jailtime.org/http://del.icio.us/saghul/xenhttp://del.icio.us/saghul/kvmhttp://cosi.clarkson.edu/docs/installingxen/
56E-Ghost – Cursillos de verano Julio 2k9
Agradecimientos
SaghulUDOrganizadores de cursillosTxipiCompis de curro
57E-Ghost – Cursillos de verano Julio 2k9
Licencia
Saúl Ibarra Corretgé - http://www.saghul.netFernando 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.
top related