virtualizacion kvm + libvirt + hrel6

133
CABILDO TENERIFE - DIC 2012 Virtualización KVM + RHEL6

Upload: irontec-internet-y-sistemas-sobre-gnulinux

Post on 25-Jan-2015

4.232 views

Category:

Documents


10 download

DESCRIPTION

Conceptos y ejemplos de virtualización con KVM, libvirt y RHEL6. Aprendiendo KVM paso a paso.

TRANSCRIPT

Page 1: Virtualizacion KVM + libvirt + HREL6

CABILDO TENERIFE ­ DIC 2012Virtualización KVM + RHEL6

Page 2: Virtualizacion KVM + libvirt + HREL6

Indice● Introducción a la Virtualización● Introducción a la Virtualización con KVM● Instalación de KVM sobre RHEL 6● Creación de máquinas virtuales● Administración de máquinas virtuales● Migraciones de máquinas virtuales● Backups & Snapshots● Almacenamiento● Rendimiento y Optimización

Page 3: Virtualizacion KVM + libvirt + HREL6

Introducción a la Virtualización

Page 4: Virtualizacion KVM + libvirt + HREL6

¿Qué es la virtualización?

Page 5: Virtualizacion KVM + libvirt + HREL6

Un recurso físico, varios lógicos

Page 6: Virtualizacion KVM + libvirt + HREL6

Es la combinación de hardware y software que permite a una única 

máquina comportarse como si fueran varias máquinas

Page 7: Virtualizacion KVM + libvirt + HREL6

Características

● El término nace en los 60's y en los 70's IBM ya crea VM● Desde 2005 Intel y AMD dan soporte hardware para la 

virtualización, mayor rendimiento.● Permite aislar aplicaciones y usuarios en la mísma máquina● Capacidad para ejecutar diferentes S.O. ● Permite reducir los costes totales de propiedad (TCO)● Minimiza el consumo de energía e infraestructura

Page 8: Virtualizacion KVM + libvirt + HREL6

Arquitectura de virtualización

Page 9: Virtualizacion KVM + libvirt + HREL6

Arquitectura de virtualización

Page 10: Virtualizacion KVM + libvirt + HREL6

Hypervisores

● Es como se le conoce al software de virtualización● Son los encargados de gestionar las diferentes VM● Se encargan de aislar las diferentes VM● Ofrecen una interfaz única de acceso al hardware● Personalización extrema● Reducir el coste de desarrollo y mantenimiento● Reducir el coste de soporte y asistencia

Page 11: Virtualizacion KVM + libvirt + HREL6

Tipos de virtualización

● Emulación● Virtualización completa● Paravirtualización● Virtualización a nivel de Sistema Operativo

Page 12: Virtualizacion KVM + libvirt + HREL6

Emulación

● La máquina virtual simula el hardware completo● Ventajas: Simular hardware no disponible● Desventajas: bajo rendimiento y baja densidad (1000%)● Ejemplos: bochs, qemu

Page 13: Virtualizacion KVM + libvirt + HREL6

Virtualización completa

● Parecido a emulación● Se diferencia de la emulación en que los S.O. A virtualizar 

están diseñados para correr en la misma arquitectura● Ventajas: flexibilidad, ejecutar diferentes S.O.● Desventajas: no se pueden emular otras arquitecturas● Ejemplo: virtualbox, KVM, XEN + VT, Vmware, Hyper­V

Page 14: Virtualizacion KVM + libvirt + HREL6

Paravirtualización

● La VM tiene la misma arquitectura● Ventajas: rendimiento (ligero y rápido), escalabilidad, no 

requiere VT● Desventajas: requiere modificar el S.O. invitado.● Ejemplo: XEN, KVM, Hyper­V, VMware

Page 15: Virtualizacion KVM + libvirt + HREL6

Virtualización a nivel de S.O.

● La VM se hace con el mismo S.O. que lo aloja (sin hypervisor)

● El S.O. Está modificado para permitir múltiples espacios de usaurio aislados

● Ventajas: muy rápido, rendimiento cercano al nativo● Desventajas: más dificil aislar completamente● Ejemplo: openVZ, virtuozzo, vserver, containers...

Page 16: Virtualizacion KVM + libvirt + HREL6

Otras virtualizaciones

● Virtualización de bibliotecas: ejecución de API Win32. Wine● Virtualización de aplicación: Java Virtual Machine● Virtualización de almacenamiento: pool de discos. LVM● Virtualización de escritorio: escritorio como servicio. SunVDI● Virtualización de red: Crossbow

Page 17: Virtualizacion KVM + libvirt + HREL6

Algunos términos

● P2V: Phisical to Virtual: Migrar de físico a virtual● V2V: Virtual to Virtual: Migrar de virtual a virtual (de un 

hipervisor a otro)● V2P: Virtual to Phisical: Migrar de virtual a físico● Dominio: máquina virtual

Page 18: Virtualizacion KVM + libvirt + HREL6

KVM

Page 19: Virtualizacion KVM + libvirt + HREL6

KVM, el sistema oficial de virtualización del kernel de Linux.

● Es un módulo del kernel que convierte el SO Linux en un hypervisor. Se ha portado a FreeBSD y Illumos.

● Creado por Quramnet (comprado por RH en 2008)● Soporta x86 (32 y 64 bits), S/390, PowerPC, IA­64 y ARM en 

proceso● Utiliza el API estándar del kernel● Sistema de virtualización oficial de RHEL

Page 20: Virtualizacion KVM + libvirt + HREL6

KVM, basado en Qemu (emulación) pero modificado para virtualización

● Necesidad de soporte en el procesador instrucciones Intel­VT, AMD­V

● Al cargarse el módulo KVM, se convierte en un hypervisor “bare­metal”

● Soporte de drivers paravirtualizados para mejorar el rendimiento

Page 21: Virtualizacion KVM + libvirt + HREL6

KVM, Kernel based Virtual Machine

● Seguridad– Cada Virtual Machine es un proceso– Cada CPU es un thread– Se aprovecha de modelo seguridad selinux/AppArmor– Svirt

● Es software libre

Page 22: Virtualizacion KVM + libvirt + HREL6

KVM, tipos de redes

● User networking● Private virtual Bridge● Public Bridge

Page 23: Virtualizacion KVM + libvirt + HREL6

KVM, tipos de formatos de imagen

● Raw– Ocupa todo el tamaño total– No soporta snapshots, compresión ni cifrado– Mejor I/O

● Qcow2– Imagen ocupa tamaño real y aumenta según necesid– Soporta snapshots, compresión y cifrado

Page 24: Virtualizacion KVM + libvirt + HREL6

KVM, tipos de formatos de imagen

● Vmdk– Formato utilizado por VMWare Workstation

● VDI– Formato soportado por VirtualBbox

Page 25: Virtualizacion KVM + libvirt + HREL6

KVM, desventajas

● Proyecto relativamente jóven● No hay herramientas sofisticadas para la gestión de 

servidores y VM● KVM aun puede mejorar mucho

– Ahora se está trabajando en almacenamiento VirtFS, disponible en anfitrión y huesped. El huesped es capaz de utilizar la caché del anfitrión, acelerando el acceso a ficheros.

Page 26: Virtualizacion KVM + libvirt + HREL6

Libvirt

Page 27: Virtualizacion KVM + libvirt + HREL6

Libvirt

● Conjunto de herramientas con API para virtualización de sistemas Linux

● Soporta los siguientes hypervisores KVM/QEMU, XEN, LXC, OpenVZ, UML, Virtualbox, Vmware ESX/GSX, Workstation, Hyper­V

● Almacenamiento IDE/SCSI/USB/, LVM, iSCSI, NFS..● Proyecto de Software Libre 

Page 28: Virtualizacion KVM + libvirt + HREL6

Libvirt arquitectura

Page 29: Virtualizacion KVM + libvirt + HREL6

Virsh, Libvirt y ficheros XML

● Virsh puede gestionar ficheros XML. Es muy útil para realizar scripting avanzado para grandes despliegues.

● Puedes realizar tareas especiales de forma automatizada

Page 30: Virtualizacion KVM + libvirt + HREL6

Libvirt, tipos de formatos de imagen

● Raw: fichero plano● Iso: formato disco de CDROM● Dmg: formato disco de Mac● Qcow2: formato disco qemu v2● Vmdk: formato disco VMWare● Vdi: formato disco Virtualbox● Vpc: formato disco VirtualPC

Page 31: Virtualizacion KVM + libvirt + HREL6

Instalación de RHEL6 + KVM

Page 32: Virtualizacion KVM + libvirt + HREL6

Instalación de RHEL6

Page 33: Virtualizacion KVM + libvirt + HREL6

Instalación de KVM

● KVM, al utilizar el paradigma de virtualización completa, es necesario realizar la comprobación previa de que los equipos soportan virtualización (Intel­VT, AMD­V)

– grep 'vmx|svm' /proc/cpuinfo● Es necesario habilitarlo en la BIOS.

Page 34: Virtualizacion KVM + libvirt + HREL6

Ubicación de las máquinas virtuales

● Local– Dentro del sistema de ficheros, habitualmente en– /var/lib/libvirt/images

● Remoto– NFS, Samba..– ISCSI, Fibre Channel...

Page 35: Virtualizacion KVM + libvirt + HREL6

Instalación de paquetes KVM

Instalación nueva

Page 36: Virtualizacion KVM + libvirt + HREL6

Instalación de paquetes KVM

Instalación nueva

Page 37: Virtualizacion KVM + libvirt + HREL6

Instalación de paquetes KVM

Instalación existente

● yum install qemu­kvm, qemu­kvm­tools, libvirt, libvirt­python, libvirt­client, python­virtinst, virt­manager, virt­viewer, virt­v2v, libguestfs, libguestfs­tools

● Confirmar que están cargados los módulos– kvm– kvm_intel

Page 38: Virtualizacion KVM + libvirt + HREL6

Comprobación de acceso a KVM

● Añadir el usuario root al gruopo 'libvirt'– adduser ­G root libvirt

● Comprobamos que podemos acceder– virsh ­c qemu:///system 

Page 39: Virtualizacion KVM + libvirt + HREL6

Creación de máquinas virtuales

Page 40: Virtualizacion KVM + libvirt + HREL6

Virt­install: creación de VM

● Comando que permita aprovisionar máquinas virtuales● Herramienta de línea de comandos● Básicamente hay que indicar:

– Nombre de la VM (­­name)– RAM (­­ram)– Almacenamiento (­­file,­­disk)– Método de instalación (­­cdrom,­­location)

Page 41: Virtualizacion KVM + libvirt + HREL6

Virt­install: creación de VM

● Virt­install– Virt­install ­­name=ubuntu1204 ­­vcpus=1 ­­ram=1024 

­­file=/var/lib/libvirt/images/ubuntu1204.img ­­file­size=6 ­­os­type linux ­­os­variant ubuntuprecise ­­vnc –cdrom=/opt/ubuntu.iso

● También es posible crearlas con:– Virsh– virt­manager

Page 42: Virtualizacion KVM + libvirt + HREL6

Herramientas para la gestión de MV

● Hay 2 herramientas principales para la gestión de máquinas virtuales:

– Modo consola: virsh– Modo gráfico: virt­manager

Page 43: Virtualizacion KVM + libvirt + HREL6

Virt­manager

● Herramienta para gestionar las máquinas virtuales, consultar consumo de recursos, acceder a consolas virtuales, clonación de máquinas

● Permite gestionar hypervisores QEMU, KVM, XEN● Permite conexiones locales y remotas● Muestra estadísticas de rendimiento● Permite gestión de pools de almacenamiento

Page 44: Virtualizacion KVM + libvirt + HREL6

Virt­manager

Page 45: Virtualizacion KVM + libvirt + HREL6

Virt­manager

Page 46: Virtualizacion KVM + libvirt + HREL6

Virt­manager

Page 47: Virtualizacion KVM + libvirt + HREL6

virsh

● Virsh es una herramienta de línea de comando para administar a los huéspedes y al hipervisor

● Utiliza la API de libvirt

Page 48: Virtualizacion KVM + libvirt + HREL6

virsh

● virsh ­c qemu+ssh://[email protected]:22222/systemBienvenido a virsh, la terminal de virtualización interactiva.Teclee:  «help» para ayuda con las órdenes         «quit» para salir● Para que no pida contraseña

– ssh­keygen ­t dsa– ssh­copy­id ­i ~/.ssh/id_rsa.pub root@somehost

Page 49: Virtualizacion KVM + libvirt + HREL6

virsh

● virsh ­c qemu+ssh://[email protected]:22222/systemBienvenido a virsh, la terminal de virtualización interactiva.Teclee:  «help» para ayuda con las órdenes         «quit» para salir

Page 50: Virtualizacion KVM + libvirt + HREL6

Opciones virsh

Page 51: Virtualizacion KVM + libvirt + HREL6

Creación de máquinas virtuales

● Virt­install– Virt­install ­­network ­­name=ubuntu1204 ­­ram=1024 

­­file=/var/lib/libvirt/images/ ­­file­size=6 ­­vnc –cdrom=/opt/ubuntu.iso

● Virt­manager– Mediante la interfaz gráfica

● Virsh– Mediante ficheros XML (http://libvirt.org/format.html)

Page 52: Virtualizacion KVM + libvirt + HREL6

Ficheros XML<domain type='kvm' id='3'>

  <name>ubuntu</name>

  <uuid>4e3350e1­7612­d9da­1569­4cdbb6a74915</uuid>

  <memory unit='KiB'>524288</memory>

  <currentMemory unit='KiB'>524288</currentMemory>

  <vcpu placement='static'>1</vcpu>

  <os>

    <type arch='x86_64' machine='rhel6.3.0'>hvm</type>

    <boot dev='hd'/>

  </os>

  <clock offset='utc'/>

  <devices>

    <emulator>/usr/libexec/qemu­kvm</emulator>

    <disk type='file' device='disk'>

      <driver name='qemu' type='qcow2' cache='none'/>

      <source file='/var/lib/libvirt/images/ubuntu.qcow2'/>

      <target dev='vdb' bus='virtio'/>

      <alias name='virtio­disk1'/>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>

    </disk>

Page 53: Virtualizacion KVM + libvirt + HREL6

Virsh

● Arrancar máquina virtual– virsh start <domain>

● Apagar máquina virtual– virsh destroy <domain>

● Eliminar máquina virtual– virsh undefine <domain>

Page 54: Virtualizacion KVM + libvirt + HREL6

Virsh

● Suspender máquina virtual a RAM (consume RAM, pero no CPU ni I/O)

– virsh suspend <domain>● Restaurar máquina virtual

– virsh resume <domain>● Conocer el estado de una VM

– Virsh domstate <domain>

Page 55: Virtualizacion KVM + libvirt + HREL6

Virsh

● Listar máquinas virtuales– virsh list

● Listar pools– virsh pool­list

● Listar volúmenes– virsh vol­list <pool>

Page 56: Virtualizacion KVM + libvirt + HREL6

Otros comandos

● Además de la shell virsh existen una multitud de comandos que realizan tareas similares:

– Listar el contenido de un directorio de una VM● virt­ls

– Listar el espacio de las particiones de una VM● virt­df

– Listar las particiones● virt­list­partitions

Page 57: Virtualizacion KVM + libvirt + HREL6

Otros comandos

● Listar el contenido de un fichero de una VM– virt­cat

● Redimensionar una VM– virt­resize

● Clonar VM– virt­clone

Page 58: Virtualizacion KVM + libvirt + HREL6

Otros comandos: virt­top

Page 59: Virtualizacion KVM + libvirt + HREL6

Administración de máquinas virtuales

Page 60: Virtualizacion KVM + libvirt + HREL6

Administración de máquinas virtuales

● Cambiar la memoria en caliente. Para poder realizar este cambio la configuración de memoria máxima permitida tiene que permitirnoslo, sino hay que cambiarlo primero.

– virsh setmen vm1 524288● Cambiar las CPU

– virsh edit vm1

Page 61: Virtualizacion KVM + libvirt + HREL6

Gestión de pools

● Los pools son orígenes de dispositivos de almacenamiento en los que alojar los volúmenes (máquinas virtuales)

● Estos pools pueden ser de diversos tipos:– Dir: directorio del sistema de ficheros– Disk: dispositivo de disco físico – Fs: dispositivo de bloque– ISCSI: destino iSCSI– Logical: grupo de volumen LVM

Page 62: Virtualizacion KVM + libvirt + HREL6

Gestión de pools: tipos

Page 63: Virtualizacion KVM + libvirt + HREL6

Drivers

Page 64: Virtualizacion KVM + libvirt + HREL6

Drivers de dispositivos

● KVM soporta virtualización hibrida. – IDE

● En los SO invitados: emulación drivers. ● Bajo I/O en dispositivos de bloques y red

– VirtIO●  En los SO invitados drivers paravirtualizados. ● Alta I/O en dispositivos de bloques y red

Page 65: Virtualizacion KVM + libvirt + HREL6

Drivers de dispositivos: Virtio

● VirtIO es una interfaz independiente del hypervisor● Incluido en kernel > 2.6.25● RedHat ha desarrollado drivers virtIO para Windows, 

certificados por Microsoft.

Page 66: Virtualizacion KVM + libvirt + HREL6

VirtIO disk driver

Page 67: Virtualizacion KVM + libvirt + HREL6

VirtIO network driver

Page 68: Virtualizacion KVM + libvirt + HREL6

Virtual Networking

Page 69: Virtualizacion KVM + libvirt + HREL6

Virtual Networking

● Para la implementación de redes virtuales libvirt utiliza el concepto de switches virtuales

● Un switch virtual es una implementación software de un switch al que se le pueden conectar varias máquinas y su tráfico se redirige a través de ese switch.

● El anfitrión Linux representa un switch virtual como una interfaz de red.

● Default es un switch virtual representado por virbr0.

Page 70: Virtualizacion KVM + libvirt + HREL6

Virtual Networking

Page 71: Virtualizacion KVM + libvirt + HREL6

Virtual Networking

● Por defecto– Las VM reciben una IP por DHCP (dnsmasq)– El anfitrión hace NAT (masquerading)– Tienen acceso de red a otras máquinas virtuales o al 

host a través de 192.168.122.0● Tenemos una interfaz virbr0 que es la encargada de la 

conectividad NAT

Page 72: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: NAT

Page 73: Virtualizacion KVM + libvirt + HREL6

Virtual Networking

● Si se quiere que las máquinas tengan acceso a la LAN es necesario crear un BRIDGE

● Tenemos una interfaz virbr0 que es la encargada de la conectividad NAT. No utilizarla para crear el Bridge.

● Estableceremos un bridge entre 2 interfaces del anfitrión– Dispositivo físico (eth0, eth1, bond0..)– Dispositvo virtual (vnet0...)– Para generar el bridge br0

● La IP del anfitrión se la quedará br0

Page 74: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: bridge

● Bridge en Linux– Deshabilitar NetworkManager (no soporta bridge)

● chkconfig NetworkManager off● chkconfig network off● service NetworkManager stop● service netwok start

Page 75: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: bridge

● Crear el Bridge (I)– /etc/sysconfig/network­scripts/ifcfg­eth0

DEVICE=”eth0”

ONBOOT=”yes”

BRIDGE=”br0”

Page 76: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: bridge

● Crear el Bridge (II)– /etc/sysconfig/network­scripts/ifcfg­br0

DEVICE=”br0”

TYPE=”Bridge”

ONBOOT=”yes”

DELAY=”0”

IPADDR=172.25.209.249

BOOTPROTO=none

NETMASK=255.255.254.0

GATEWAY=172.25.208.1

DNS1=172.25.201.33

DNS2=172.16.2.2

Page 77: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: bridge

● Confirmar que iptables no está trabajando en el bridge– /etc/sysctl.conf

net.bridge.bridge­nf­call­ip6tables = 0

net.bridge.bridge­nf­call­iptables = 0

net.bridge.bridge­nf­call­arptables = 0

– sysctl ­p /etc/systctl.conf– Service libvirtd reload

Page 78: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: bridge

● Reiniciar la red– service network restart

● Verificar el bridge– brctl show

bridge name     bridge id               STP enabled     interfacesvirbr0          8000.000000000000       yesbr0             8000.000e0cb30550       no              eth0

Page 79: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: bridge

Page 80: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: VLAN Tagging

● VLAN es una red local virtual.● Se utilizan por su rendimiento, seguridad, facilidad de 

gestión...● Requiere que esté el módulo cargado

– modprobe 8021q

Page 81: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: bridge

● Ajustamos los valores de la interfaz física– /etc/sysconfig/network­scripts/ifcfg­eth0

DEVICE=”eth0”

TYPE=”Ethernet”

ONBOOT=”yes”

BOOTPROTO=none

Page 82: Virtualizacion KVM + libvirt + HREL6

Virtual Networking: bridge

● Vamos a taggear todos los paquetes que salgan a través de eth0 con el VLAN ID 3003.

– /etc/sysconfig/network­scripts/ifcfg­eth0.3003DEVICE=”eth0.3003”

ONBOOT=”yes”

BOOTPROTO=static

IPADDR=192.168.1.1

NETMASK=255.255.255.0

GATEWAY=192.168.1.254

USERCTL=no

VLAN=yes

– service network restart

Page 83: Virtualizacion KVM + libvirt + HREL6

Migraciones de máquinas virtuales

Page 84: Virtualizacion KVM + libvirt + HREL6

Migraciones p2v

● Las migraciones p2v requieren realizar un proceso de empaquetamiento del servidor físico en un fichero virtual

● Es recomendable darle 1GB más a la máquina virtual.● Se puede realizar con diversas herramientas

– Clonezilla– Selfimage– Windows Backup

● http://pve.proxmox.com/wiki/Migration_of_servers_to_Proxmox_VE

Page 85: Virtualizacion KVM + libvirt + HREL6

Migraciones v2v

● Las migraciones v2v requieren básicamente que las máquinas virtuales sean convertidas al formato KVM.

– Qemu­img– virt­v2v

● Soporta una gran cantidad de formatos– RAW, – QCOW2 (formato QEMU)– VDI (formato VirtualBox 1.1)– VMDK (formato VMWARE 3, 4 y 6)

Page 86: Virtualizacion KVM + libvirt + HREL6

qemu­img

● Comando que permite – chequear imagen en disco– Realizar conversiones entre formatos de imagen– Proporcionar información de la imágen– Gestionar las snapshots de una imagen– Redimensionar una imagen

Page 87: Virtualizacion KVM + libvirt + HREL6

Migraciones v2v: vmware2kvm

● Vmware es el hipervisor más utilizado en el mundo, por lo que a menudo vamos a querer hacer migraciones vmware2kvm.

– Qemu­img● qemu­img convert ubuntu*.vmdk ­O raw ubuntu.raw● qemu­img convert ubuntu*.vmdk ­O qcow2 

ubuntu.qcow2– Arrancar en virt­manager– Arrancar con virsh (vmware2libvirt del vmx)

Page 88: Virtualizacion KVM + libvirt + HREL6

Migraciones v2v: virtualbox2kvm

● Virtualbox es un hipervisor de software libre ampliamente utilizado para la virtuialización de escritorios.

– VboxManage● VBoxManage clonehd ­­format raw winXP.vdi 

winXP.raw– Qemu­img

● qemu­img convert winXP.raw ­O qcow2 winXP.qcow2

– Arrancar en virt­manager

Page 89: Virtualizacion KVM + libvirt + HREL6

Virt­maneger no detecta correctamente qcow2

Page 90: Virtualizacion KVM + libvirt + HREL6

Migraciones v2v: bootfail

● Virt­manager no detecta correctamente el formato qcow2 y lo considera raw. Eso hace que el sistema no arranque.

● Solución– Virt­manager

● Editar las propiedades de la máquina > IDE– virsh

● virsh edit <domain><driver name='qemu' type='raw'/>

       <driver name='qemu' type='qcow2'/>

Page 91: Virtualizacion KVM + libvirt + HREL6

Migraciones v2v: particiones

● En ocasiones puede interesarnos conocer las particiones de una máquina virtual

– parted ­s /var/lib/libvirt/images/ubuntu.img printModel:  (file)

Disk /var/lib/libvirt/images/ubuntu.img: 2147MB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Numero  Inicio  Fin     Tamaño  Typo      Sistema de ficheros  Banderas

 1      1049kB  1611MB  1610MB  primary   ext4                 arranque

 2      1612MB  2146MB  535MB   extended

 5      1612MB  2146MB  535MB   logical   linux­swap(v1)

Page 92: Virtualizacion KVM + libvirt + HREL6

Ojo con las máquinas Windows BSoD

Page 93: Virtualizacion KVM + libvirt + HREL6

Migraciones v2v: windows

● Las máquinas Windows tienen el problema de BsoD, ya que memorizan el hardware sobre el que fue instalado y no disponen del controlador IDE.

– STOP 0x000007f.● Solución:

– Desinstalar vmware­tools– Utilidad MergeIDE 

http://www.inode64.com/doc_download/22­mergeide– Proceso habitual (vmware­vdiskmanager + gemu­img)

Page 94: Virtualizacion KVM + libvirt + HREL6

Migraciones v2v: windows

● MergeIDE– Es un script que mete una serie de parametros en el 

Registro de Windows y confirma la existencia de unos drivers en Windows (%SystemRoot%\System32\Drivers)● atapi.sys● intelide.sys● pciide.sys● pciidex.sys

Page 95: Virtualizacion KVM + libvirt + HREL6

Snapshots y backups

Page 96: Virtualizacion KVM + libvirt + HREL6

Snapshots y Backups

● Los snapshots y backups nos permitirán hacer una copia que poder recuperar posteriormente. Los snapshots son mucho más eficientes que un backup tradicional y más sencillos de restaurar.

● Herramientas más utilizadas:– Virt­clonate– Virsh snapshot– LVM2

Page 97: Virtualizacion KVM + libvirt + HREL6

Snapshots: virt­clonate

● La función clonate de virsh no es un snapshot como tal, es una copia de una máquina con el objetivo de crear clones, como si fuera una plantilla.

● La clonación no se puede hacer en caliente, es necesario parar la máquina

● Es una copia exacta de la máquina (CPU's, memoria, espacio en disco y contenido). Genera una nueva MAC para evitar problemas.

Page 98: Virtualizacion KVM + libvirt + HREL6

Snapshots: virt­clone

● Suspender la máquina– virsh suspend vm1

● Clonar la máquina– virt­clone ­­original vm1 ­­name vm1­clone ­­file 

/var/lib/libvirt/images/vm1­clone.img● Arrancar ambas máquinas

– virsh resume vm1– virsh start vm1­clone

Page 99: Virtualizacion KVM + libvirt + HREL6

Snapshots: virsh snapshot

● Un snapshot no es una copia como tal, sino un recordar el estado en un momento dado. Cuando se realiza un snapshot no se copia y por tanto no ocupa. El snapshot va ocupando según se va modificando la máquina original.

● Requiere imágenes de tipo qcow2.

Page 100: Virtualizacion KVM + libvirt + HREL6

Snapshots: virsh snapshot

● Confirmar el formato de la imagen– qemu­img info /var/lib/libvirt/images/vm1.img

● Recomendable parar la máquina antes– virsh shutdown vm1

● Tomamos el snapshot– virsh snapshot­create vm1

● Confirmar el snapshot– virsh snapshot­list vm1

Page 101: Virtualizacion KVM + libvirt + HREL6

Snapshots: virsh snapshot

● Restaurar un snapshot– virsh snapshot­revert vm1 estado­inicial

● Eliminar un snapshot– virsh snapshot­delete vm1 estado­a­borrar

Page 102: Virtualizacion KVM + libvirt + HREL6

Snapshots: LVM2

● Los snapshots nos permitirán hacer una copia que poder recuperar posteriormente. Los snapshots son mucho más eficientes que un backup y más sencillos de restaurar.

● Formas de realizar un snapsot:– Virsh snapshot– Virsh clonate– LVM2

Page 103: Virtualizacion KVM + libvirt + HREL6

Almacenamiento

Page 104: Virtualizacion KVM + libvirt + HREL6

Almacenamiento

Page 105: Virtualizacion KVM + libvirt + HREL6

Almacenamiento

● KVM utiliza cualquier almacenamiento soportado por Linux– Local

● IDE/SCSI/SATA/USB, LVM– Remoto

● NAS: NFS, Samba/CIFS● SAN: iSCSIFibre Channel..

– Distribuido● GFS2, OCFS, GlusterFS

Page 106: Virtualizacion KVM + libvirt + HREL6

Almacenamiento

● No es aconsejable pasar dispositivos completos a VM– Es mejor asignar /dev/sdb1 que /dev/sdb– Sino el invitado puede crear particiones que afecten al 

anfitrión

Page 107: Virtualizacion KVM + libvirt + HREL6

Almacenamiento

● En ocasiones el almacenamiento requiere ser visto por el hypervisor, ser detectado. Bien porque es nuevo, bien porque cambia de tamaño. Cada sistema de almacenamiento dispone de diferentes formas de hacerlo

● RHEL provee de un script “universal”– /usr/bin/rescan­scsi­bus.sh– rpm ­ivh 

http://mirror.centos.org/centos/6/os/x86_64/Packages/sg3_utils­1.28­4.el6.x86_64.rpm

● Especialmente útil en sistemas como iSCSI, FC...

Page 108: Virtualizacion KVM + libvirt + HREL6

Almacenamiento

● Supongamos que queremos añadir un USB a todas las máquinas virtuales

● Añadiendo almacenamiento adicional– virsh attach­disk vm1 /dev/sdb discoUSB ­­driver tap 

­­mode shareable● Puedes repetir el comando anterior en tantas VM como 

quieras. Ojo! No hay control de escritura.

Page 109: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: LVM

● Mecanismo para crear grandes colecciones de espacio de almacenamiento que se pueden asignar a diversos sistemas de ficheros (volúmenes) pequeños que a la vez permite manejarlas como una entidad completa.

● Nivel de abstracción entre:– las peticiones de almacenamiento o recuperación – Los dispositivos físicos concretos donde están 

almacenados esos datos.

Page 110: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: LVM

● Diseño:– Volume Group (VG) : El Volume Group es el mayor nivel de abstracción 

en LVM. Agrupa una colección de Volúmenes Lógicos y Volúmenes Físicos en una unidad administrativa.

– Physical Volume (PV): Un Volumen Físico es típicamente un disco duro, aunque puede ser cualquier dispositivo que “parezca” un disco duro (ej. Un dispositivo RAID software).

– Logical Volume (LV): El equivalente a una partición en un sistema no LVM. El LV se ve como un dispositivo de bloques estándar que puede contener un FS (ej. /home).

Page 111: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: NFS

Page 112: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: iSCSI

● Descubrimos el IQN objetivo del LUN– iscsiadm ­m discover ­t st ­p <ip.address>

● Creamos el nuevo pool– # virsh pool­define­as myiscsipool iscsi <targethost> ­ 

<targetiqn> ­ /dev/disk/by­path● Creamos el pool

– # virsh pool­build myiscsipool

Page 113: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: Fibre Channel

● Tecnología de red utilizada para redes de almacenamiento● Requiere de una tarjeta HBA en el sistema anfitrión● Cada HBA tiene un identificativo único mundial (WWN)● Drivers nativos RHEL6 para FC

– lpfc– qla2xxx– zfcp– mptfc

Page 114: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: Fibre Channel

● Pasos a realizar para habilitar el acceso1.Crear un dispositivo de almacenamiento en la cabina

● Se crea a través de herramientas propias

2.Cargar el driver correspondiente● modprobe qla2xxx

3.El anfitrión detecte el dispositivo presentado● echo "1" > /sys/class/fc_host/host/issue_lip● echo "­ ­ ­" > /sys/class/scsi_host/host0/scan

Page 115: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: Fibre Channel

● Tras los pasos anteriores 'fdisk' muestra el nuevo dispositivo4.Creamos una partición con todo el tamaño publicado

● fdisk /dev/sdb5.Formateamos la partición

● mkfs.ext4 /dev/sdb16.Montamos la partición

● mount ­t ext4 /dev/sdb1 /vm­images

Page 116: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: Fibre Channel

● Finalmente7.Editamos /etc/fstab para añadirlo permanentemente

● /dev/sdb1 /vm­images ext4 defaults 0 08.Añadimos un nuevo pool

● virt­manager● virsh

Page 117: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: Fibre Channel

● virsh– virsh pool­define­as myfcpool dir ­ ­ ­ ­ /vm­images– virsh pool­build myfcpool– virsh pool­start myfcpool– virsh pool­autostart myfcpool

Page 118: Virtualizacion KVM + libvirt + HREL6

Almacenamiento: Fibre Channel

● virt­manager

Page 119: Virtualizacion KVM + libvirt + HREL6

Rendimiento y Optimizaciones

Page 120: Virtualizacion KVM + libvirt + HREL6

Rendimiento

● KVM posee el mismo rendimiento y estabilidad que Linux● KVM soporta MV hasta 16CPU virtuales y 256GB RAM● Rendimiento de SGBD Oracle, SAP, LAMP, MS Exchange 

sobre KVM oscila entre 95% y 135%● Se han conseguido ratios de hasta 600 máquinas virtuales 

en un servidor físico.

Page 121: Virtualizacion KVM + libvirt + HREL6

Optimizaciones

● Utilizar virt­manager es una buena idea porque:– Se asegurará de que el huesped va a funcionar– Optimiza el huesped

● Es importante ser lo más específico posible– Utilizará drivers adecuados

Page 122: Virtualizacion KVM + libvirt + HREL6

Se específico!

Page 123: Virtualizacion KVM + libvirt + HREL6

Se específico!

Page 124: Virtualizacion KVM + libvirt + HREL6

Optimizaciones

● Utilizar drivers paravirtualizados en medida de lo posible virtio

– Exiten drivers para Linux y Windows.● Utiliza kernels > 3.0.0 si es posible ● Utiliza cache=writeback 

Page 125: Virtualizacion KVM + libvirt + HREL6

Piloto

Page 126: Virtualizacion KVM + libvirt + HREL6

Piloto

● Servidores de virtualización: RHEL 6 + KVM– Acceso a storage compartido iSCSI/NFS– Creación de máquinas virtuales en nodo1– Simulación de fallo y levantamiento de máquinas en nodo2

● Configuración de switches● Servidores de almacenamiento: Openfiler 2.3

– Sincronización entre ellos modo pri/sec DRBD– Publicación de contenido mediante iSCSI/NFS– Simulación de fallo

Page 127: Virtualizacion KVM + libvirt + HREL6

Otras soluciones

Page 128: Virtualizacion KVM + libvirt + HREL6

Proxmox

Page 129: Virtualizacion KVM + libvirt + HREL6

RedHat Enterprise Virtualization

Page 130: Virtualizacion KVM + libvirt + HREL6

RedHat Enterprise Virtualization

Page 131: Virtualizacion KVM + libvirt + HREL6

RedHat Enterprise Virtualization

Page 132: Virtualizacion KVM + libvirt + HREL6

Citrix

Page 133: Virtualizacion KVM + libvirt + HREL6

Parallels + Plesk