XEN
Conceptos
El entorno de virtualización XEN consta de 3 elementos de software que hace posible la operación de varias máquinas virtuales en un equipo de cómputo.
Hipervisor XEN, un fragmento de software cargado en la memoria del equipo por el bootloader, interactua de manera directa con el hardware y genera una abstracción de los dispositivos físicos con que interactúan los kernels de las máquinas virtuales.
DOM0 la máquina virtual que inicia como un módulo de XEN en el arranque de la máquina, interactua con el hipervisor mediante los comandos xm o xl que permiten crear, destruir, mover o apagar máquinas virtuales, mediante archivos de configuración se asignan recursos de almacenamiento en disco, memoria y procesadores que se asignan a cada máquina virtual. DOM0 administra el I/0 del conjunto de máquinas virtuales.
DOMU's Paravirtuales Estas máquinas virtuales son linux y operan con una versión del kernel modificada para operar con el hardware mediante el hipervisor.
DOMU´s Virtualización Total Estas máquinas se construyen a partir de un sistema operativo sin modificación y la interacción con el hardware se hace a través del emulador QEMU.
En CPT utilizamos la virtualización total en la construcción de servidores virtuales basados en Windows, actualmente ya se encuentran
disponibles un conjunto de drivers windows que permiten que este sistema operativo interactue con el hipervisor mejorando sensiblemente
el rendimiento. Detalles en virtualización de windows.
Requerimientos
Hardware X86 de 64 bits, 16
GB en RAM, 4 procesadores, 1 TB en disco duro, soporte a virtualización en los procesadores si se quiere operar
virtualización total.
Las Herramientas que permite asociar un bridge de varias interfaces virtuales asociadas a una interfaz de red física del equipo.
Un kernel de linux modificado para XEN que permita el establecimiento de DOM0.
Una versión mínima del sistema operativo linux que corresponda a la versión del kernel modificado para XEN.
Arranque de DOM0
Instalación del hipervisor y el kernel de XEN
yum install centos-release-xen
yum install xen
title CentOS (3.7.10-1-el6xen.x86_64)
root (hd0,0)
kernel /xen.gz dom0_mem=512M cpufreq=xen dom0_max_vcpus=0 dom0_vcpus_pin
module /vmliuz-3.7.10-1-el6xen.x86_64 ro root=/dev/mapper/vg_alterno-LogVol01 rd_NO_LUKS rd_NO_DM
SYSFlatarcrrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=la-latin1 rd_NO_DM LANG=es_ES.UTF8
rd_LVM_LV=vg_alterno/LogVol01 rhgb quiet
module intiramfs-3.7.10-1.el6xen.x86_64.img
Infraestructura de red
Se establece una red LAN entre DOM0 y los equipos huéspedes DOMUS habilitando las utilerías de bridge de linux,
la interfaz del bridge br0.
Instalación del paquete para habilitar bridges: yum install bridge-utils
Configuración de la interfaz de red del bridge, editando el archivo: /etc/sysconfig/network-scripts/ifcfg-br0
La interfaz de virtual del bridge puede asociarse a una interfaz física, si se desea que los DOMUS sean accesibles desde una
LAN.
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=10.10.1.2
PREFIX=24
Si se requiere acceso a las DOMUS desde una
LAN modificar /etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
NM_CONTROLLED=no
BOOTPROTO=static
BRIDGE=br0
Generación de DOMUS
La generación de DOMUS consiste en:
Asignación de Almacenamiento
El almacenamiento en disco de las máquinas virtuales es dinámico se expande o contrae de acuerdo a las necesidades, asimismo los requerimientos de contar con respaldos en linea reduce las opciones de tecnologías de almacenamiento a 3:
Volúmenes lógicos de LVM en discos internos o conectados via ISCSCI (SAN) a DOM0.
Imágenes de los sistemas de archivos de las DOMUS que se almacenan como archivos en el sistema de archivos de DOM0.
A continuación se ilustran las operaciones de asignación, extensión y reducción espacio utilizando las
2 tecnologías mencionadas anteriormente:
Volúmenes lógicos (LVM)
Los volúmenes lógicos se construyen a partir de un reservorio global de almacenamiento que recibe el nombre volumeGroup,
en ese reservorio se incluyen todos los discos físicos. Los 2 primeros comandos de la secuencia siguiente preparan los
discos físicos y los agregan al volumeGroup.
Inclusión de de descriptores de volúmenes físicos en discos físicos: pvcreate /dev/hda
Creación de un grupo de volumen: vgcreate volGroup /dev/hda /dev/hdb
Asignación de un volumen lógico a root: lvcreate -L 8G -n domuRoot volGroup
Extensión de un volumen lógico de opt: lvextend -L+50G /dev/volGroup/domuOpt
Reducción de un volumen lógico de swap: lvreduce -L-4G /dev/volGroup/domuSwap
Creación de un snap para respaldar en línea: lvcreate -L 800M -s -n domuRootSnap /dev/volGroup/domuRoot
Archivos imagen
Los archivos imagen se construyen mediante el comando qemu-img que permite manipular archivos de tipo imagen
donde incluir sistemas de archivos.
Creación de una imagen para root: qemu-img create -f qcow2 -o size=8G ./domuRoot.img
Extensión de una imagen de opt: qemu-img resize ./domuOpt.img +50G
Reducción de una imagen de swap: qemu-img resize ./domuSwap.img -4G
Creación de un snapshot: qemu-img create -f qcow2 -b ./snapDomuOpt ./domuOpt.img
La operaciones de extensión y reducción del sistema de archivos contenido en volumen lógico requiere que el
sistema de archivos escogido acepte extensiones y reducciones en el caso de ext4 es necesario:
1. Extensión:
1.1 Extender el área de almacenamiento de acuerdo a la escogida de las señaladas en párrafos anteriores.
1.2 Forzar la revisión del sistema de archivos: e2fsck -f /dev/volGroup/domuOpt
1.3 Extender el sistema de archivos con el comando: resize2fs /dev/volGroup/domuOpt
2. Reducción:
2.1 Forzar al revisión del sistema de archivos: e2fsck -f /dev/volGroup/domuOpt
2.2 Disminuir el tamaño del sistema de archivos: resize2fs /dev/volGroup/domuOpt 150G
2.3 Disminuir el área de almacenamiento de acuerdo a la tecnología de almacenamiento seleccionada.
iSCI
Si se tiene acceso a un Storage Area Network (SAN) que ofrezca acceso a dispositivos de bloque mediante comandos SCSCI, es una opción preferencial para dotar de almacenamiento a DOMUS la manera mas sencilla de hacerlo asignar un volumen virtual a DOM0 y dejarlo disponible a la DOMU en el archivo de configuración.
Para configurar a DOM0 como un iniciador iSCI:
1. Instalar las herramientas de iSCI: //yum -y install isci-initator-utils//
2. Editar el archivo de configuración: //vi /etc/iscdid.conf//
3. En la línea 56 eliminar el comentario de método de autenticación: //node.session.auth.authmethod = CHAP//
4. En las lineas 60 y 61 agregar el nombre del usuario y la contraseña:
//node.session.auth.username = centos7//
//node.session.auth.password = xxxxxxxxx//
5. Descubre el objetivo donde el parámetro p se utiliza para indicar la IP del dispositivo que ofrece
el servicio SAN
//iscsiadm -m discovery -t sendtargets --portal 10.10.8.21:3260//
6.
Creación de los archivos de configuración
Cada máquina virtual cuenta con un archivo de configuración localizado en el directorio /etc/xen, el nombre del archivo
coincide con el identificador de la máquina que se muestra mediante el comando xl list.
La configuración consiste en la inclusión de valores para un conjunto de parámetros que requiere XEN para iniciar una
máquina virtual, los parámetros tienen un nombre que es una palabra reservada el signo '=' y valores que puede ser un string
o un arreglo de strings enmarcados por los caracteres [] que toman ciertos valores predefinidos. Hay parámetros globales,
específicos de equipos paravirtuales y específicos de virtualización total.
Globales
name: Asigna el nombre de la nueva máquina virtual, Ejemplo: name = “atlixco”
memory: El valor representa la cantidad de memoria virtual, Ejemplo: memory = 6000
maxmem: El valor máximo que el VM puede tener debe ser igual o mayor al valor del parámetro memory, si es mayor debe estar presente el driver balloon en el guest o la vm se cae.
vcpus: No. de cpus virtuales en linea al momento de arranque, ejemplo: vcpus = 2
maxvcpus: No. de cpus virtuales asignables a la máquina virtual, cuando el valor es mayor a vcpus la diferencia se reserva offline y se asigna dinámicamente.
disk: Arreglo de parámetros donde se describe las características del almacenamiento, cada parámetro tiene 3 valores separados por comas:
El primer parámetro de iniciar con “/” y hace referencia al path de un dispositivo de bloque o de un archivo imagen
El segundo parámetro al formato cuando se trata de una imagen que puede tomar los valores: raw,qcow,qcow2,vhd
El tercer parámetro es el nombre del dispositivo como lo va a ver la máquina virtual, valores posibles: hda,hdb,hdc,xvba,xvbb, etcétera.
El cuarto parámetro, el modo de acceso: ro (Solo lectura), rw w (Lectura/Escritura)
Ejemplos: disk = [ '/dev/vg/rootDomu,xvda,w','/var/local/rootDomu.img,qcow2,hdb,rw','/var/local/windows2012r2.iso,hdc:cdrom,ro']
Paravirtuales
root: El dispositivo virtual donde se encuentra el sistema operativo. Ejemplo: root= “/dev/xvda ro”
kernel: El path del kernel de la máquina virtual. Ejemplo: kernel= “/boot/vmlinuz-4.9.63-29.el6.x86_64”
ramdisk: El path del sistema de archivos de arranque del kernel. Ejemplo: “/boot/initramfs-4.9.63-29.el6.img”
vif: Arreglo de parámetros para indicar las características del dispositivo de red. Ejemplo: vif= ['bridge=br0','mac=00:16:3E:74:34:32']
Virtualización Total
builder: La máquina virtual es de virtualización total. Ejemplo: builder=“hvm”
vif: Arreglo de parámetros para configurar la red del equipo virtual, los parámetros toman se asignan considerando el nombre del parámetro separado por comas, los parámetros subrayados son exclusivos de hvm.
Ejemplo: vif= ['_type=ioemu_,bridge=br0','mac=00:16:3E:74:34:32','_model_=rtl8139']
La preparación rápida de un archivo de configuración se hace copiando alguno paravirtual o hvm en operación
y cambiar los parámetros señalados anteriormente de acuerdo a las características del nuevo VPS
DOMUS Linux
En Linux tenemos 3 tipos de servidores:
Servidores de correo ZIMBRA
Servidores WEB basados en Apache
Servidores de aplicaciones WebDev
Creación de los sistemas de archivos de los servidores paravirtuales CentOS/Ubuntu
Espacio dedicado al sistema de archivos donde residirá el sistema operativo de 8
GB.
Espacio con tamaño del doble de la memoria asignada para el manejo de memoria virtual del SO virtualizado.
Espacio de tamaño variable para el sistema de archivos donde residirán los datos de la aplicación a instalar.
EJEMPLO: PREPARACION DEL ALMACENAMIENTO DE UN SERVIDOR ZIMBRA
En el DOM0 donde se instalará la máquina virtual linux, es necesario instalar el sistema operativo de la
máquina huésped mediante los comandos siguientes:
- Formateo del sistema de archivos de root: mkfs -t ext4 /dev/volGroup/domuRoot
- Montar el nuevo sistema de archivos: mount /dev/volGroup/domuRoot /mnt
- Bajar los archivos del sistema operativo: (cd /mnt && tar xvfz /var/local/paq-instalados/Centos6Base.tgz) o
(cd /mnt && tar xvfz /var/local/paq-instalados/Ubuntu16-04.tgz)
- Formateo del sistema de archivos de datos: mkfs -t ext4 /dev/volGroup/domuOpt
- Preparación del área de swap: mkswap /dev/volGroup/domuSwap
Los sistemas de archivos de datos donde residen las aplicaciones dependen del tipo de servidor a instalar,
cuando se trata de un ZIMBRA el archivo de datos se monta en /opt, cuando es un servidor WEB se monta en /home y
si se trata de un servidor de aplicaciones WebDev en /usr/local
Comandos XEN
Las recursos de las DOMUS pueden ser modificados de manera dinámica (sin dar de baja el equipo virtual), puede modificarse el número de vcpus, memoria o incluir un nuevo dispositivo de bloque.
Modificación del número de vcpus: Pueden agregarse CPUS si el parámetro maxvcpus es mayor a a vcpus, si el parámetro anterior no esta configurado solo puede disminuirse el numero de cpus asignados. Ejemplo: xl vcpu-set zimbra 2
Modificación de memoria asignada: La memoria que ve el server virtual es la asignada por el parámetro maxmem es posible asignar una cantidad menor, a la señalada en el parámetro memory del archivo de configuración. Ejemplo: xl mem-max zimbra 2g
Agregar o demontar un dispositivo de bloque: Es posible agregar o eliminar un dispositivo de bloque a un DOMU, la maquina virtual reconoce y monta este dispositivo como hotplug.
EJEMPLO
xl block-attach zimbra phy:/dev/lvmgrp/respZimbra xvdc w agrega el volumen lógico a la vm zimbra.
xl block-detach zimbra xvdc lo elimina.
Bibliografía