Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

84
USE IMPROVE EVANGELIZE David Galán Ortiz José Juan Mora Pérez Roger Jordan http://es.opensolaris.org OpenSolaris Virtualización

Transcript of Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Page 1: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

David Galán OrtizJosé Juan Mora Pérez

Roger Jordan

http://es.opensolaris.org

OpenSolaris Virtualización

Page 2: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Bienvenidos a los viernes técnicos!!

http://es.opensolaris.org/ViernesTec/

Page 3: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Virtualización

Page 4: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Introducción

Page 5: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

• Particiones físicas.La máquina se puede dividir en distintos dominios.

• Máquinas virtuales.En una máquina podemos tener corriendo varias máquinas virtuales con distintos SO.

• Virtualización de SO.Un SO genera varias imágenes de el mismo para dar la impresión de tener varios SO distintos.

• Control de recursos.Solaris dispone de una serie de herramientas para controlar los recursos del sistema. CPU, memoria, tiempo de CPU

Introducción

Page 6: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

• Consolidación de servidores.

• Entornos de pruebas.

• Despliegue rápido de entornos de desarrollo.

• Aprovechar los recursos disponibles.

• Seguridad

Objetivos

Page 7: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

OpenSolaris LDom

Page 8: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Logical Domain consiste en una solución intermedia, entre la zonas y los dominios hardware. Podemos asignar una serie de recursos HW de la máquina, para que sean compartidos o no, entre varios dominios, cada uno de estos dominios con su propio SO. LDoms se basa una capa intermedia entre el HW y el SO, dicha capa es conocida por el nombre de Hypervisor. El Hypervisor permite que se pueda crear varias máquinas virtuales, compartiendo el HW disponible en el sistema. Con esta nueva capa, el SO no necesita conocer qué HW está disponible en la máquina, siendo el Hypervisor el que realiza todo el trabajo.

LDoms, actualmente solo está soportado en las siguiente plataformas:

•Sun Fire T1000 / T2000 Server. •Netra T2000 Server. •Netra CP3060 Blade. •Sun Blade T6300 Server Module.

Logical Domains

Page 9: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

ArquitecturaNo vamos a emplear mucho tiempo para describir la arquitectura de la tecnología de LDoms, ya que existen varios documentos que la explican perfectamente:

•The Beginner’s Guide to Logical Domains. •Logical Domains Administration Guide

Pero aunque no vamos a entrar en profundidad, vamos a dar una serie de pinceladas, que nos permitirán ejecutar los ejemplos del artículo. Existen 4 componentes principales:

•Control Domain, es el encargado de gestionar los distintos dominios lógicos. •Service Domain, se encarga de gestionar los dispositivos virtuales, tales como los discos. •I/O Domain, se encarga de gestionar la entrada/salida de los dispositivos. •Guest Domain, es cada uno de los dominios lógicos que creemos.

Page 10: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

ArquitecturaUna vez que configuremos el Control Domain, podremos crear distintos dominios lógicos (Guest Domain), a cada uno de estos dominios, podemos asignarles distintos tipos de dispositivos como son:

•vcpu. •mem. •vnet, virtual network devide. •vsw, virtual network switch. •vdc, virtual disk client. •vds, virtual disk server.

Por lo tanto, un dominio lógico podrá disponer de un número de CPUs virtuales, una cantidad de memoria, una o varias interfaces virtuales de red y uno o varios discos virtuales.

Page 11: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

InstalaciónAhora podemos continuar con la instalación de LDoms. Hemos descomprimido el paquete con la última versión, actualmente es la 1.0.

root@t1000 # pwd /export/home/jjmora/LDOM/LDoms_Manager-1_0-RR root@t1000 # ls Install Legal Product README root@t1000 # ./Install/install-ldm Welcome to the LDoms installer.

You are about to install the domain manager package that will enable you to create, destroy and control other domains on your system. Given the capabilities of the domain manager, you can now change the security configuration of this

Solaris instance using the Solaris Security Toolkit.

Select a security profile from this list: l) Hardened Solaris configuration for LDoms (recommended)m) Standard Solaris configurationn) Your custom-defined Solaris security configuration profile

Page 12: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

InstalaciónUna vez terminado el proceso de instalación, reiniciamos la máquina. Cuando la máquina haya terminado de arrancar, comprobamos que LDoms está levantado.

root@t1000 # svcs | grep ldm online 20:42:42 svc:/ldoms/ldmd:default root@t1000 # root@t1000 # svcs -l svc:/ldoms/ldmd:default fmri svc:/ldoms/ldmd:default nombre Logical Domain Manager habilitada Verdadero estado online next_state none state_time Sat Aug 18 20:42:42 2007 logfile /var/svc/log/ldoms-ldmd:default.log reiniciador svc:/system/svc/restarter:default contract_id 40 dependency require_all/none svc:/system/filesystem/local (online) root@t1000 #

Page 13: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Controlador de dominioUna vez que hemos instalado el paquete de LDoms, vamos a crear los servicios que gestionará el controlador de dominio. Lo primero es crear un vds, el servicio para la gestión de los discos virtuales y se asignará al controlador primary.

root@t1000 # /opt/SUNWldm/bin/ldm add-vds primary-vds0 primary

Creamos las consolas virtuales que el controlador de dominio asignará a los distintos dominios lógicos.

root@t1000 # /opt/SUNWldm/bin/ldm add-vcc port-range=5000-5100 primary-vcc0 primary

Añadimos un virtual switch, para los distintos interfaces virtuales tengan acceso a la red.

root@t1000 # /opt/SUNWldm/bin/ldm add-vsw net-dev=bge0 primary-vsw0 primary

Asignamos una MAU (Modular Arithmetic Units) al controlador de dominios.

root@t1000 # /opt/SUNWldm/bin/ldm set-mau 1 primary

Page 14: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Controlador de dominioDe todas las CPUs del sistema, dedicaremos 4 al dominio primary.

root@t1000 # /opt/SUNWldm/bin/ldm set-vcpu 4 primary

Asignamos 1024MB de memoria al dominio primary. root@t1000 # /opt/SUNWldm/bin/ldm set-memory 1024m primary Ahora debemos guardar los cambios en un fichero de configuración. Para ver los ficheros disponibles podemos ejecutar el comando: root@t1000 # ldm list-spconfig factory-default [current]root@t1000 # ldm add-spconfig config_01 root@t1000 # root@t1000 # ldm list-spconfig factory-default [current] config_01 [next] root@t1000 #

Page 15: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Controlador de dominioRebotamos la máquina para que el controlador de dominios acepte los nuevos cambios que hemos introducido.

root@t1000 # init 6

Una vez que la máquina haya arrancado, podemos comprobar los nuevos parámetros que hemos añadido al controlador de dominios primary.

root@t1000 # ldm list-domain Name State Flags Cons VCPU Memory Util Uptime primary active -t-cv SP 4 1G 0.1% 4m root@t1000 #

Page 16: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Dominio LógicoLa creación de un dominio lógico (Guest Domain) es bastante sencilla, tendremos que añadir el nuevo dominio, asignarle los recursos que deseemos y realizar un bind.

root@t1000 # ldm add-domain t1000-01 root@t1000 # ldm add-vcpu 4 t1000-01 root@t1000 # ldm add-memory 312M t1000-01 root@t1000 # ldm add-vnet vnet1 primary-vsw0 t1000-01

Con los comandos anteriores, hemos creado el dominio t1000-01, le hemos asignado 4 CPUs, 312MB de memoria y vamos a utilizar la interfaz de red definida, en el controlador de dominios primario, con el identificador primary-vsw0. El siguiente paso será crear el fichero de 500MB que asignaremos al dominio lógico para que lo utilice como disco de sistema.

root@t1000 # mkfile 500M /var/LDOM/ldom_bootdisk.img root@t1000 # root@t1000 # ldm add-vdsdev /var/LDOM/ldom_bootdisk.img vol1@primary-vds0 root@t1000 # ldm add-vdisk vdisk1 vol1@primary-vds0 t1000-01

Page 17: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Dominio LógicoYa hemos asignado CPUs, memoria, un disco y una interfaz de red al dominio lógico t1000-01, ahora solo tenemos que arrancar el nuevo dominio.

root@t1000 # ldm bind-domain t1000-01 root@t1000 # ldm list-domain Name State Flags Cons VCPU Memory Util Uptime primary active -t-cv SP 4 1G 0.3% 1h 4m t1000-01 bound ----- 5000 4 312M

root@t1000 # ldm start-domain t1000-01 LDom t1000-01 started root@t1000 # ldm list Name State Flags Cons VCPU Memory Util Uptime primary active -t-cv SP 4 1G 0.2% 1h 5m t1000-01 active -t--- 5000 4 312M 100% 6s

Con el parámetro start podemos arrancar el nuevo dominio lógico.

Page 18: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Dominio LógicoEl nuevo dominio lógico t1000-01 tiene asignado el puerto de consola 5000, podemos acceder a la consola del dominio t1000-01, utilizando el comando telnet.

root@t1000 # telnet localhost 5000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.

Connecting to console "t1000-01" in group "t1000-01" .... Press ~? for control options ..

{0} ok {0} ok show-devs /cpu@3 /cpu@2

Page 19: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Dominio LógicoVamos a ver de forma rápida cómo podemos añadir más CPUs a un dominio lógico. El dominio t1000-01 actualmente tiene 4 CPUs, con el comando ldm add-vcpu añadiremos 6 CPUs más.

root@t1000 # ldm stop-domain t1000-01 LDom t1000-01 stopped root@t1000 # ldm add-vcpu 6 t1000-01 root@t1000 # ldm list Name State Flags Cons VCPU Memory Util Uptime primary active -t-cv SP 4 1G 0.5% 1d 21h 4m t1000-01 bound ----- 5001 10 312M

Page 20: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Dominio LógicoConectamos a la consola del LDom t1000-01

root@t1000 # telnet localhost 5001 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.

# prtdiag System Configuration: Sun Microsystems sun4v Sun Fire(TM) T1000 Memory size:

312 Megabytes CPU CPU Location CPU Freq Implementation Mask ------------ ----- -------- ------------------- ----- MB/CMP0/P0 0 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P1 1 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P2 2 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P3 3 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P4 4 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P5 5 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P6 6 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P7 7 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P8 8 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P9 9 1000 MHz SUNW,UltraSPARC-T1

Page 21: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

OpenSolaris xVM

Page 22: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Introducción

• Qué es xVM

• Arquitectura

• Usando xVM

Page 23: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Qué es xVM•Consiste en un port de OpenSolaris para que pueda correr en Xen• Permite ejecutar Windows, Linux y Solaris como SO invitados.• Solo corre en sistemas x86/x64.• HVM y PVM.• Migración de “invitados” en caliente.• Disponible a partir de build 75 SXCE• Soporte para Intel VT-x.

Page 24: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Arquitectura

• Hypervisor

• dom0

• domU

• Network

• Disco

Page 25: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Arquitectura

Page 26: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Arquitectura: Hypervisor

• Es la capa encargada de controlar el HW.• Xen utiliza una VM (dom0) para que controle el acceso al HW.• Los invitados (domU) realizan todas sus peticiones a dom0• Los domU pueden estar virtualizados:

• HVM.• PVM (Paravirtualización)

Page 27: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Arquitectura: dom0

• Este es el dominio de control.• Podemos gestionar el resto de dominios de usuarios domU.• Gestiona el acceso al HW.• Permite exportar a los domU tanto discos físicos como ficheros• Si este dominio tiene algún problema afecta a todos los invitados.

Page 28: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Arquitectura: domU

• Son los dominios invitados.

• Son máquinas virtuales que ejecutan su propio SO.

• Existen dos tipos de domU:

• HVM, en SO invitado no sabe que está siendo virtualizado y por lo tanto no necesita de ninguna modificación, este tipo lo usaremos para Windows.•PVM, el SO invitado sabe que está siendo virtualizado. No todos los SO pueden ejecutar en esta modalidad.

Page 29: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Arquitectura: Network

Page 30: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Arquitectura: Disco

El dom0 puede exportar almacenamiento a los domU:

• Dispositivos físicos.disk = [‘phy:dispositivo_dom0, disp_domU, rw’]

• Ficheros

disk = [‘file:file_dom0, disp_domU, rw’]

• NFS

Page 31: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Usando xVM

• ¿ Disponemos de xVM ?

• Herramientas• virt-install• xm• virsh• virt-manager

• HVM

• Paravirtualización

Page 32: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

¿ Disponemos de xVM ?• xVM está disponible desde la build 75 de Solaris Express

• Existen servicios en SMF asociados a xVMbash-3.2# svcs | grep xvmonline 21:33:49 svc:/system/xvm/store:defaultonline 21:33:53 svc:/system/xvm/xend:defaultonline 21:33:53 svc:/system/xvm/console:defaultonline 21:33:55 svc:/system/xvm/domains:default

•Podemos comprobar que existe un kernel con soporte para Xen

bash-3.2# cd /boot/bash-3.2# lsacpi grub solaris x86.miniroot-safe xen.gzamd64 platform solaris.xpm xen-syms

Page 33: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

GRUB para xVM Ejemplo del fichero /boot/grub/menu.lst

#---------- ADDED BY BOOTADM - DO NOT EDIT ----------title Solaris Express Community Edition snv_78 X86kernel$ /platform/i86pc/kernel/$ISADIR/unix module$ /platform/i86pc/$ISADIR/boot_archive#---------------------END BOOTADM--------------------#--------------------- xVM 64bits--------------------title Solaris xVMkernel$ /boot/$ISADIR/xen.gzmodule$ /platform/i86xpv/kernel/$ISADIR/unix /platform/i86xpv/kernel/$ISADIR/unixmodule$ /platform/i86pc/$ISADIR/boot_archive#--------------------- xVM 32bits--------------------title Solaris xVM 32bitskernel$ /boot/xen.gzmodule$ /platform/i86xpv/kernel/unix /platform/i86xpv/kernel/unixmodule$ /platform/i86pc/boot_archive

Page 34: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

HerramientasLa gestión de los domU la podemos realizar con 4 herramientas:

• virt-installEste script que nos permite instalar nuevos domUs

• virshEs una shell para la gestión del domU

• xmNos permite ciertas operaciones desde línea de comando

• virt-managerEs un entorno gráfico.

Page 35: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Directorios• /var/log/xen

Se almacenan los logs

•/var/lib/xend/domainsExiste un directorio por cada dominio.

•/var/xen/dumpAlmacena los coredump de los dominios.

Page 36: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Creando un domUPara la creación de un nuevo domU, podemos emplear el script virt-install

bash-3.2# virt-install -n centos_x64 -r 512 \ -f /export/home/xen/CentOS-5.1/centos_51_x64_2.img -s 5 \--nographics --paravirt --os-type=linux \-l /export/home/root/Desktop/CentOS-5.1-x86_64-bin-DVD.iso

-n nombre_domU-r memoria-f fichero de destino-s tamaño del fichero de destino--paravirt el nuevo domU será paravirtualizado-l ISO que vamos a utilizar para instalar

Page 37: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Arrancando un domUUna vez creado el nuevo domU, podemos arrancarlo con los comandos vxm o virtshbash-3.2# xm start centos_x64bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 389.4centos_x64 30 512 1 -b---- 39.0

Page 38: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Parando un domUPodemos parar el domU de varias formas:• pause• destroyEjemplo de cómo parar un domU:

bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 389.4centos_x64 30 720 2 -b---- 39.0bash-3.2# xm destroy centos_x64bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 391.7centos_x64 512 1 0.0

Page 39: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Borrando un domUPara borrar un domU, necesitamos que primero esté parado, posteriormente podemos utilizar el subcomando delete :

Ejemplo de cómo eliminar un domU:bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 391.7centos_x64 512 1 0.0bash-3.2#bash-3.2# xm delete centos_x64bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 392.6bash-3.2#

Page 40: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Asignando CPU a un domUAl crear el domU se le asigna un número de CPUs, con el comando xm podemos cambiar posteriormente el número de CPUs.bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 389.4centos_x64 30 512 1 -b---- 39.0bash-3.2# xm vcpu-set centos_x64 2bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 389.4centos_x64 30 512 2 -b---- 39.0

Necesitamos reiniciar el domU para que los cambios tengan efecto.

Page 41: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Asignando memoria a un domUAl crear el domU se le asigna una cantidad de memoria, con el comando xm podemos cambiar la cantidad de memoria asignada a un domU.bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 389.4centos_x64 30 512 1 -b---- 39.0bash-3.2# xm mem-set centos_x64 720bash-3.2# xm mem-max centos_x64 720bash-3.2# xm listName ID Mem VCPUs State Time(s)Domain-0 0 774 2 r----- 389.4centos_x64 30 720 2 -b---- 39.0

Necesitamos reiniciar el domU para que los cambios tengan efecto.

Page 42: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Asignando interfaz de red un domUAl crear el domU se le asigna una o varias interfaces de red, esto podemos cambiarlo con el xm :bash-3.2# xm network-attach centos_x64

Si vemos el messages del domU:

[root@trantor log]# tail -f /var/log/messages | grep devicetrantor kernel: netfront: device eth1 has flipping receive path.

No neceesitamos reiniciar el domU para que los cambios tengan efecto.

Page 43: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Asignando disco a un domUCreamos un fichero para la imagen en dom0.bash-3.2# dd if=/dev/zero of=discos1.dd count=100000100000+0 records in100000+0 records out

Asignamos el fichero al domU.bash-3.2# xm block-attach centos_x64 \ /export/home/xen/CentOS-5.1/discos1.dd xvdb w

Comprobamos en el domU el nuevo disco.[root@trantor log]# fdisk /dev/xvdb

Command (m for help): pDisk /dev/xvda2: 5255 MB, 5255953920 bytes255 heads, 63 sectors/track, 639 cylindersUnits = cylinders of 16065 * 512 = 8225280 bytes

Page 44: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Configuración de un domUPara ver la configuración de un domU, utilizamos el subcomando list del comando xm .bash-3.2# xm list centos_x64 -l(domain (domid 27) (uuid 0139bf22-829b-c825-6871-cb52ea3a9620) (name centos_x64) (bootloader /usr/lib/xen/bin/pygrub) (device (vif (mac 00:16:3e:17:b5:8b) (uuid 5dc5d8d1-3b2f-d182-8557-ef16d527d14f) ) ) (device (vbd (uname file:/export/home/xen/CentOS-5.1/centos_51_x64_1.img) (driver paravirtualised) (mode w) (dev xvda) (uuid 758bb505-3590-a507-9dd0-fc9a27e95b2c) )….

Page 45: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Configuración de un domUPara cambiar la configuración de un domU, de una forma rápida.

Volcamos la salida del comando:

bash-3.2# xm list centos_x64 –l > file_centos_x64.xen

Modificamos el fichero centos_config.sxp y creamos el domU.

bash-3.2# xm new -F ./file_centos_x64.xen

Page 46: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Pause, unpause, suspend y resumeEntre las operaciones que podemos realizar con un domU:Pausamos el domU

bash-3.2# xm pause centos_x64

Suspendemos un domUbash-3.2# xm suspend centos_x64

La diferencia es que suspend almacena en disco el estado del domU

Con el subcomando unpause y resume podemos continuar los domU pausados

bash-3.2# xm resume centos_x64

Page 47: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

Save y restoreUn domU podemos salvarlo a disco para recuperarlo posteriormente:Salvar a disco el domU.

bash-3.2# xm save centos_x64 file_saved_domU

Cuando deseemos arrancar la imagen guardada del domU, utilizaremos restore.

bash-3.2# xm restore centos_x64 file_saved_domU

Page 48: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

virt-managerEs una interfaz gráfica para la gestión de los dominios.

Page 49: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

HVMCuando creamos un domU, podemos hacerlo del tipo HVM, lo que significa que SO no sabe que está siendo virtualizado.

Para poder utilizar el HVM, debemos disponer de un procesador con soporte de virtualización.

Ejemplo: Intel dispone del VT-xAMD dispone de AMD-V

Page 50: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

ParavirtualizaciónEl kernel del SO debe ser modificado para que pueda ser virtualizado. Casi todas las versiones de Linux tienen disponen de un kernel con soporte para Xen.

[root@trantor ~]# uname –aLinux trantor 2.6.18-53.el5xen #1 SMP x86_64 x86_64 x86_64 GNU/Linux[root@trantor ~]#

Page 51: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

OpenSolaris Zonas

Page 52: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

● Es una tecnología de virtualización.● Permite ejecutar varias “instancias” del sistema

operativo a la vez.● Todas las instancias se ejecutan en un único

kernel.● No existe una capa intermedia de virtualización de

hardware. Aunque algunos dispositivos si son virtuales.

● Cada una de ellas es independiente de las demás.

Introduccion a las Zonas

Page 53: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Características de una Zona

La zona está identificada por un nombre y un id numérico.

Dispone de sus propios procesos init, (z)sched, etc. Cada zona dispone de los servicios necesarios

para su funcionamiento ( /proc, /dev/console, etc.) Los procesos de una zona ignoran la existencia de

los demás. La seguridad de las zonas impide que sus

procesos interactúen.

Page 54: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

La Zona global

Se crea cuando el sistema arranca. Su id es el 0 y su nombre es global Tiene acceso a los procesos de las demás zonas. Idealmente debería usarse solo para

administración.

Zona Global

Zona 1

Zona 2

Zona 3

Page 55: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Commandos habitualeszonecfg -z zonename Crear, eliminar, reconfigurar.

zoneadm list -cv listar zonas en el sistema.Zoneadm -z zonename install Empezar la instalación de una

zona.zoneadm -z zonename boot arrancar zona.zoneadm -z zonename halt parar zona.zoneadm -z zonename reboot reiniciar zona.

zlogin zonename logearse al sistema.zlogin -C zonename Acceder a la consola de la

zona.

Consultar las páginas man respectivas para los detalles

Page 56: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Pasos para la creación de una zona.• Crear la zona con el comando cfgadm.• Definir el zonepath.• Añadir la configuración adicional que

deseemos. (interfaces de red, containers, privilegios, ...)

• Crear el directorio que contendrá la zona y darle permisos 700.

• Iniciar la copia de los binarios con zoneadm.

• Logearnos a la consola y seguir el asistente para terminar la configuración.

Page 57: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 1: Ver procesos entre zonas

Guión:1.- Arrancamos el sistema y dos zonas

adicionales.2.- Lanzamos un proceso ksh en cada una de las

zonas.3.- Comprobamos que desde cada una de las

zonas no vemos el proceso ksh de la otra.

Page 58: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 2: Usando la Zona Global para administración.

Guión:

Ejecutamos un #pkill -9 ksh, comprobamos como los procesos de las zonas no global mueren.

Page 59: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Tipos de Zonas.

Small Zone. Big Zone. BrandZ.

Page 60: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Características una Small Zone.

Comparten los directorios de sistema con la zona global. (no tiene permisos para modificarlo.)

Tiene su propio /var y /etc Ocupa muy poco espacio en el disco (300MB

aprox.).

Ventajas:- Optimización de recursos

Inconvenientes:- Poca flexibilidad

Page 61: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 3: Instalación de una Small Zone

bash-3.2# zonecfg -z viernes13viernes13: No such zone configuredUse 'create' to begin configuring a new zone.zonecfg:viernes13> createzonecfg:viernes13> set zonepath=/viernes13zonecfg:viernes13> commitzonecfg:viernes13> exitbash-3.2# mkdir /viernes13bash-3.2# chmod 700 /viernes13bash-3.2# zoneadm -z viernes13 installPreparing to install zone <viernes13>.Creating list of files to copy from the global zone.

Page 62: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Características una Big Zone

Tiene sus propios directorios de sistema. No comparte ningún directorio con la global zone.

Ventajas:- Flexibilidad.

Inconvenientes:- No es tan optimo desde el punto de vista de recursos

Page 63: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 4: Instalación de una Big Zonebash-3.2# zonecfg -z bigzonebigzone: No such zone configuredUse 'create' to begin configuring a new zone.zonecfg:bigzone> createzonecfg:bigzone> set zoneset zonename= set zonepath=zonecfg:bigzone> set zonepath=/bigzonezonecfg:bigzone> remove inherit-pkg-dir dir=/sbinzonecfg:bigzone> remove inherit-pkg-dir dir=/usrzonecfg:bigzone> remove inherit-pkg-dir dir=/platformzonecfg:bigzone> remove inherit-pkg-dir dir=/libzonecfg:bigzone> commitzonecfg:bigzone> end

Page 64: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Configurando una zona

Variables de configuración #zonecfg:bigzone> set autoboot=true

Atributos #zonecfg:bigzone> add attr

Interfaces de red #zonecfg:bigzone> add net

Filesystems #zonecfg:bigzone> add fs

Control de recursos #zonecfg:bigzone> add rctl

Dispositivos #zonecfg:bigzone> add device

Dataset #zonecfg:bigzone> add dataset

Page 65: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 5: Modificando la configuración

Guión:

Añadir red Añadir filesystem Añadir control de recursos

Page 66: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Contenedores I

• Permiten limitar el consumo de recursos de cada una de las zonas.

• Se configuran usando la herramienta zonecfg.

• Permiten aumentar el nivel de seguridad, prevención DOS.

Page 67: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Contenedores II

• Set max-lwps, max-sem-ids, max-shm-memory, limitpriv, etc

• Capped-cpu (ncpus, podemos asignar fracciones de cpu)

• Capped-memory (locked, swap, physical)

• Dedicated-cpu (ncpus)

Page 68: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 6: Limitando los recursos

Guión:

Probar fork-bomb (perl -e 'fork while 1;') Agotar la memoria Llenar tmp etc.

Page 69: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Seguridad I

Hay tareas que no está permitido realizar dentro de una zona:

Modificar interfaces de red o tablas de rutas. Acceder al dispositivo /dev/kmem. Rebotar o apagar todo el sistema. Cargar módulos personalizados del kernel.

Page 70: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Seguridad II

• La seguridad en OpenSolaris es granular basado en privilegios, en contra del todo o nada del unix tradicional.

• Los procesos dentro de una zona no disponen de todos los privilegios, para evitar que puedan interactuar con los de otras.

• Ni siquiera el usuario root de una zona (id=0) tiene todos los privilegios

Page 71: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Seguridad III

• La suma de privilegios más la configuración de la zona permitiendo el acceso solo a los recursos necesarios es la que garantiza la seguridad de esta.

• El objetivo no es engañar al usuario humano, sino impedir que los procesos de distintas zonas interactúen.

Page 72: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 7: Seguridad

Guión:

Ejecutar ppriv en la zona global y en la zona1. Añadir privilegios para permitir el uso de

dtrace (set limitpriv="default,dtrace_proc,dtrace_user") Tratar de asignarnos el privilegios para ver

procesos de otras zonas (set limitpriv="default,priv_proc_zone")

Cualquier trastada que se le ocurra a la audiencia.

Page 73: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Performance• Las distintas zonas comparten kernel,

no hay tareas duplicadas (callout table).

• Las páginas de memoria de texto (binario y librerías) son compartidas por todas las zonas.

• La cache de nombres de directorio, DNCL, es compartida entre todas las zonas.

Page 74: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 8: Performance

Guión:

Comprobar el estado de la memoria tras sucesivos arranques de zonas.

Page 75: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Procesos de una Zona I

Zoneadmd Crear las estructuras del kernel necesarias y iniciar un proceso

zsched. Configurar el control a los recursos de dicha zona (como pools

de CPU, memoria o privilegios). Configurar los dispositivos de la zona con el comando

devfsadmd. Crear y destruir las interfaces de red virtuales. Montar los filesystems. Proporcionar un servidor de consola para el comando

zconsole. Ejecutar el proceso init de la zona. Proporcionar un Door Server, los clientes como el zoneadm o

el propio kernel se conectan a el para enviar mensajes de cambio de estado a la zona como halt, reboot, ...

Page 76: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Procesos de una Zona II

Zsched

Es el padre de todos los threads del kernel de su zona. Lanza el proceso init de la zona cuando arranca.

Page 77: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 9: Verificando procesos

Guión:

Lanzamos un ps para comprobar los procesos ejecutándose en el sistema.

Page 78: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

OpenSolaris BrandZ

Page 79: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

BrandZ I

Permite ejecutar binarios no nativos en un kernel OpenSolaris.

Los binarios deben tener formato ELF El proyecto está aun en desarrollo Actualmente funciona de forma estable

RHEL 3, y CentOS 3.

Page 80: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

BrandZ II

Dado que el formato de los ejecutables de Linux y OpenSolaris es el mismo (ELF) idealmente deberíamos poder procesarlos sin más, sin embargo estos esperan unos servicios por parte del kernel, a los que suelen acceder mediante llamadas al sistema que, lógicamente, son distintas en ambos S.O.. En el caso de Linux el problema va incluso un paso más allá, ya que existen diferencias entre las distintas distribuciones dependiendo del nivel de kernel y de la versión de glibc.

Page 81: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

BrandZ III: Técnica de interposición

Se crea una macro que captura los puntos de entrada de un proceso en el kernel ( system calls, tratamiento de señales, etc)

Antes de ser ejecutados por el kernel son tratados por un módulo específico que hace de traductor.

Una vez procesados se entregan de nuevo a dicho módulo que reformatea la salida a lo que espera el proceso.

Page 82: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

BrandZ IV: Ciclo de vida de un proceso

λ El proceso Linux ejecuta la interrupción 80. La macro BRAND_CALLBACK() comprueba si la

interrupción tiene origen en un Brandz. Opensolaris pasa el control del thread al módulo específico

para brandz. El módulo lx lanza la librería de emulación. Dicha librería modifica la llamada al sistema para que sea

compatible con OpenSolaris. El kernel de OpenSolaris procesa la llamada y devuelve la

salida a la librería. Otra vez se realizan las operaciones oportunas, ahora para

adaptar la salida a lo que espera el proceso Linux. La librería devuelve el resultado al proceso.

Page 83: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

Ejercicio 10: Instalación Brandz

Guión:

# zonecfg -z linuxlinux: No such zone configuredUse 'create' to begin configuring a new zone.zonecfg:linux> create -t SUNWlxzonecfg:linux> set zonepath=/linux-zonezonecfg:linux> commitzonecfg:linux> exit# mkdir /linux-zone# chmod 700 /linux-zonebash-3.2# zoneadm -z linux install -d /centos_fs_image.tarInstalling zone 'linux' at root directory '/linux-zone'

Page 84: Viernes Tecnicos Virtualizacion Ldom Xen Zonas Brandz

USE IMPROVE EVANGELIZE

<OpenSolaris Hispano>http://es.opensolaris.org

Lista de distribuciónhttp://mail.opensolaris.org/mailman/listinfo/ug-sposug