Hoy toca hablar de un concepto muy grande en la rama de la informática, la virtualización, anteriormente hemos tenido la posibilidad de crear escritorios virtuales con VirtualBox
Pero no podemos usar este tipo de programas para un servidor, tendremos que hacer uso de una virtualización de verdad, no solo para hacer escritorios virtuales, si no algo que nos permita tener mas de un servidor en producción.
Hablemos de XEN.En mi caso voy a explicar como hacer una maquina virtual y luego varios comandos para que podáis usar esa maquina virtual. Tened en cuenta que esto es mas complicado que hacerlo con algún programa tipo VirtualBox, VirtualPC o parecidos.
Antes de nada conozcamos un poco como funciona XEN, podéis ver información aquí:
Comprobando qué tipo de virtualización soporta nuestro servidor
Lo primero que necesitamos saber es si nuestro ordenador/servidor permite la virtualización, en caso de que no lo permita, aquí se a acabaría el tutorial, ya que necesitarías un servidor que lo soportara.
egrep '(vmx|svm)' --color=always /proc/cpuinfo
Con este sencillo comando nos aparecerá algo parecido a esto:
flag : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
Si aparece remarcado VMX (para INTEL) o SVM (para AMD) podéis soportar XEN y por tanto continuar con el tutorial.
Os recomendaría que hagáis esto sobre una arquitectura de 64 bits ya que cada maquina virtualizada adquiere RAM del Host o dom0 (servidor que contendrá las maquinas virtuales), por tanto si vais a montar un par de maquinas (para diferentes servicios) vais a necesitar de bastante RAM.
Instalando Xen
Empecemos a darle caña a esto, lo primero que necesitamos es instalar XEN sus paquetes, el Kernel especifico y las herramientas.
Antes de nada, vamos a hacer un update & upgrade de nuestra maquina, para que este totalmente actualizada
apt-get update apt-get upgrade
Ahora instalamos todo lo necesario:
apt-get install xen-linux-system-XXX xen-utils-4.0 bridge-utils xen-qemu-dm-4.0
Donde XXX cambiara dependiendo de tu arquitectura y kernel actual. Por ejemplo en mi caso es: xen-linux-system-amd64, ya que mi arquitectura es de 64 bits.
De ahí que actualizáramos anteriormente, con esto ya tenemos Xen instalado y podemos empezar a configurar las diferentes partes.
Configurando Grub
Lo primero es hacer que arranque el kernel de Xen de manera nativa, por eso nos toca modificar el Grub, en este caso Debian squeeze tiene Grub2:
mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux
Con esto lo que conseguimos es darle al kernel de Xen preferencia en el arranque, cambiando su prioridad en el Grub. Siempre que se toca el Grub, es necesario aplicar los cambios
update-grub2
Configurando la red
La mejor configuración es en modo bridge (puente) de esta manera las maquinas virtuales son accesibles desde cualquier parte de la red, como si se tratara de ordenador mas conectado.
Esto se consigue modificando el archivo xen-config.sxp ubicado en /etc/xen/
Dentro tenéis que descomentar las siguientes lineas:
(network-script network-bridge) (vif-script vif-bridge) (dom0-min-mem 1024)
Explico un poco todas:
- (network-script network-bridge): Es un script de Xen para permitir el modo bridge (puente) en las Maquinas Virtuales
- (vif-script vif-bridge): Este script se utiliza para controlar el modo bridge (puente)
- (dom0-min-mem 1024): Esto pone una limitación de 1024Mb de RAM al Host o dom0 de manera que su RAM no baje nunca de ese limite, de manera que controlamos siempre que no tenga asignada menos memoria de la necesaria para poder funcionar correctamente.
Configurando la creación de las maquinas virtuales
Para poder crear las maquinas virtuales necesitamos de un paquete mas xen-tools, lo instalamos:
apt-get install xen-tools
Una vez instalado, podemos acceder a su configuración, aquí configuraremos como se van a crear las maquinas virtuales por defecto, el archivo podemos encontrarlo en /etc/xen-tools/xen-tools.conf
dir = /vm install-method = debootstrap size = 10Gb # Disk image size. memory = 128Mb # Memory size swap = 512Mb # Swap size fs = ext4 # use the EXT3 filesystem for the disk image. dist = squeeze # Default gateway and netmask for new VMs gateway = 192.168.1.1 netmask = 255.255.255.0 # When creating an image, interactively setup root password passwd = 123456 # Prevents new VMs using some generic mirror, but actually uses the one from the Dom0. mirror = `xt-guess-suite-and-mirror --mirror` # Ext3 had some weird settings per default, like noatime. If you want to change that, set it to 'defaults' ext3_options = defaults # Let xen-create-image use pygrub, so that the grub from the VM is used, which means you no longer need to store kernels outside the VMs. Keeps things very flexible. pygrub=1
- dir: directorio donde se localizaran las imágenes de las maquinas virtuales
- install-method: método de instalación del sistema operativo al crear la maquina virtual. Existen 4 tipos diferentes
- copy: Instala copiando recursivamente un directorio
- debootstrap: instala un sistema basado en Debian dentro de un subdirectorio de otro sistema ya instalado
- rpmstrap: Exactamente lo mismo que debootstrap pero con sistemas RPM
- tar: Instala descomprimiendo un fichero
- size: Tamaño asignada la imagen que se generará para la maquina virtual. Esto generara un «disk.img» de ese tamaño.
- memory: Memoria asignada a la maquina virtual.
- swap: Swap que se asigna a la maquina virtual. Esto generara un «swap.img» de ese tamaño.
- fs: FileSystem de la maquina virtual.
- dist: Distribución que se instalará en la maquina virtual.
- gateway: Puerta de enlace de la tarjeta de red de la maquina virtual
- netmask: Mascara de red de la tarjeta de red de la maquina virtual
- passwd: Contraseña por defecto del usuario root de la maquina virtual
- mirror: Repositorios por defecto del sistema operativo de la maquina virtual.
- ext3_options: Opciones de la extensión de archivos ext3 que se pueden dar al montar el sistema de archivos
- pygrub: Pinchan en el enlace y tendrás toda la información
Con esto ya tenemos todo configurado, es hora de crear las maquinas virtuales.
Crear maquinas virtuales
Lo que hemos puesto en el archivo xen-tools.conf son los atributos por defecto que tendrá nuestra maquina virtual, como podéis ver, no tiene IP, ni nombre. Eso lo vamos a especificar al crear la maquina:
xen-create-image --hostname servidorWeb --ip 192.168.1.111 --vcpus 1
Con esto estamos creando una maquina virtual llamada servidorWeb con la IP 192.168.1.111. También le hemos asignado 1 procesador virtual a la maquina.
Xen se pondrá a trabajar y va a crear ciertos archivos, ademas nos pedirá la contraseña de administrador.
Este comando nos ha creado lo siguiente en /vm (recordemos que ha sido el directorio seleccionado en la configuración anterior)
- Ha creado la carpeta domains en cuyo interior se crearan todas las maquinas virtuales.
- Ha creado la carpeta servidorWeb dentro de domains.
- Dentro de servidorWeb ha creado disk.img y swap.img.
- De la misma manera, ha creado un archivo de configuración de la propia maquina, que podemos modificar nosotros mismos en /etc/xen/servidorWeb.cfg
Básicamente ha creado la estructura de archivos necesarios para la maquina virtual, el disco, el swap y el archivo de configuración. Ahora solamente hace falta arrancar la maquina virtual y entrar en ella.
xm create servidorWeb.cfg
Con esto ya tenemos nuestra maquina virtual arrancada, si usáis htop o top, podéis ver como ya tenéis menos memoria en vuestro Host, que es la memoria que esta usando la maquina virtual.
Para poder entrar en la maquina se puede hacer tranquilamente por SSH, haciendo [email protected] y usando la contraseña que habéis configurado al crear la maquina virtual
Comandos Xen
Comandos para apagar la maquina virtual, pausar la maquina virtual, apagar bruscamente una maquina virtual (como si quitásemos el enchufe), y hacer un reboot respectivamente.
xm shutdow servidorWeb xm pause servidorWeb xm destroy servidorWeb xm reboot servidorWeb
Para crear una maquina virtual usando una imagen ISO.
xen-create-image --hostname webserver --ip 192.168.10.222 --vcpus 1 --pygrub --mirror=/home/miHome/debian5.iso --dist=etch
Para listas todas las maquinas virtuales que tenemos, visualizando la memoria asignada, ID, procesador, estado y tiempo en ejecucion.
xm list
Asignar memoria al host o dom0, ya que esto no ocurre automáticamente al apagar una maquina.
xm mem-set 0 1024
Para poder ver la consola del servidor, ver como arranca y logearnos como si estuviéramos delante (alternativa al SSH).
xm console servidorWeb
Renombrar una maquina virtual.
xm rename servidorWeb ServidorWeb
Para monitorear en tiempo real todas tus maquinas virtuales.
xm top
Para conocer le tiempo que llevan en linea cada maquina virtual.
xm uptime
Listar las maquinas virtuales mostrando información sobre las cpus virtuales que tienen asignadas
xm vcpu-list
Para ver las cpus virtuales que tiene asignado un dominio
xm vcpu-list servidorWeb
Agregar un numero concreto de procesadores a un dominio (cambiamos el numero 2, por el numero de cpus que queremos asignar)
xm vcpu-set servidorWeb 2
Asignamos una limite máximo de memoria a una maquina virtual, en este caso 1Gb
xm mem-max servidorWeb 1024
Mostrar información del Host o dom0
xm info
Con este comando podemos ver el log de Xen, por si tenemos fallos
xm log
Ver el mensaje de buffer de xen, primer sitio que tienes que mirar si te ocurre algún erro en Xen
xm dmesg
Con esto ya tenéis muchos comando a usar para poder sacarle partido a vuestro Xen, si quereis mas comandos de este tipo, haced lo siguiente:
man xm
Ahí podéis ver todo acerca de xm
Tengo que recordad que por ejemplo para que algunos de los cambios se haga efectivos tenéis que reiniciar la maquina virtual que estáis tocando.
De la misma forma, podéis apagar la maquina virtual, y acceder a su configuración (ubicada en /etc/xen/) y modificar hay los valores que queráis, para arrancarla con mas cpu o RAM, por ejemplo.
Inicio automático de maquinas virtuales
Ya sabemos como configurar Xen, ya sabemos como crear una maquina virtual y sabemos jugar con ellas. Ahora ¿como hago para arrancar una maquina virtual al inicio del sistema?
Al iniciar el sistema unicamente se carga el demonio xen, tenemos que decirle que ademas queremos que cargue una o mas maquinas virtuales, tenemos que ir a /etc/xen/, dentro tenemos que mirar si existe la carpeta auto en caso de que no exista, la creamos:
cd /etc/xen ls -las mkdir auto
Con esto ya tenemos creada la carpeta que xen tendrá en cuenta al iniciarse. Dentro tendremos que poner los links a los «.cfg» de las maquinas que queramos arrancar, recordad que los «.cfg» esta en /etc/xen/.
ln -s /etc/xen/servidorWeb.cfg /etc/xen/auto/
Esto lo tenéis que repetir con cada una de las maquinas virtuales que queráis arrancar al inicio.
Conclusiones
Con este manual podéis crear vuestro propio sistema de virtualizacion y usar Xen de una manera rápida y sencilla, en mi caso tengo varias maquinas virtuales montadas sobre un Ml110 con mucha RAM para poder soportar diferentes servicios.
Es muy útil para no tener un único sistema operativo sobrecargado con múltiples servicios.
Y con esto se termina el manual de Xen. Espero que el manual os sirva de ayuda en la configuración y uso de Xen.