Tabla de Contenidos

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.

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

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.

             
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=10.10.1.2
PREFIX=24
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:

  1. Volúmenes lógicos de LVM en discos internos o conectados via ISCSCI (SAN) a DOM0.
  2. 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.

  1. Inclusión de de descriptores de volúmenes físicos en discos físicos: pvcreate /dev/hda
  2. Creación de un grupo de volumen: vgcreate volGroup /dev/hda /dev/hdb
  3. Asignación de un volumen lógico a root: lvcreate -L 8G -n domuRoot volGroup
  4. Extensión de un volumen lógico de opt: lvextend -L+50G /dev/volGroup/domuOpt
  5. Reducción de un volumen lógico de swap: lvreduce -L-4G /dev/volGroup/domuSwap
  6. 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.

  1. Creación de una imagen para root: qemu-img create -f qcow2 -o size=8G ./domuRoot.img
  2. Extensión de una imagen de opt: qemu-img resize ./domuOpt.img +50G
  3. Reducción de una imagen de swap: qemu-img resize ./domuSwap.img -4G
  4. 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

  1. name: Asigna el nombre de la nueva máquina virtual, Ejemplo: name = “atlixco”
  2. memory: El valor representa la cantidad de memoria virtual, Ejemplo: memory = 6000
  3. 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.
  4. vcpus: No. de cpus virtuales en linea al momento de arranque, ejemplo: vcpus = 2
  5. 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.
  6. 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

  1. root: El dispositivo virtual donde se encuentra el sistema operativo. Ejemplo: root= “/dev/xvda ro”
  2. kernel: El path del kernel de la máquina virtual. Ejemplo: kernel= “/boot/vmlinuz-4.9.63-29.el6.x86_64”
  3. ramdisk: El path del sistema de archivos de arranque del kernel. Ejemplo: “/boot/initramfs-4.9.63-29.el6.img”
  4. 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

  1. builder: La máquina virtual es de virtualización total. Ejemplo: builder=“hvm”
  2. 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.
  3. 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:

Creación de los sistemas de archivos de los servidores paravirtuales CentOS/Ubuntu

  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.

  1. 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
  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
  3. 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

Xen4CentOS
LVM HowTo
Comandos QEMU
Configuracion de cliente iSCI en centOS 6
Parámetros de red XEN
Parámetros de disco XEN
Agregar y remover cpus con xl
Agregar y remover dispositivos de bloque con xl