Virtualización Debian en Xen con CentOs
14 Sep
Después de mucho buscar leer investigar, he dado con la solución a un problema que se me presentó en materia de Virtualización. Como se habrán dado cuenta últimamente (9 meses) me he convertido en un fan boy de Red Hat, y últimamente de CentOs, por diversos motivos, en primer lugar ya que intento unificar en mi trabajo el uso de las distribuciones de Linux, quisiera que todos los Servidores funcionaran sobre CentOs, ya que como les he contado nuestros servidores son en un 90% Dell, y esta empresa no ofrece soporte en otras distribuciones linux que no sean Red Hat based.
Por otra parte tanto Red Hat, como CentOs, son bastante estables, y se adaptan a nuestras necesidades como anillo al dedo.
Ahora bien, en las últimas 4 semanas he estado involucrado en un proyecto de reducción de costos en nuestro Datacentar, por aquello de la crisis mundial 15000 euros mensuales en factura de consumo eléctrico por 178 servidores es mucha pasta plata, por tal motivo ofrecí la solución de virtualizar 80 de esos 178 servidores. Lo que traerá muchísimos beneficios, tanto para reducción de costos como administración.
En este proceso me encontré con una piedra de tranca, ya que pretendía instalar los servidores de virtualización con Xen y CentOs, pero existen servidores en Debian, y Windows, el primer caso que intente resolver y que pienso explicar en este post es la instalación de Servidores Debian virtualizados, sobre un Host Xen en CentOs. La única solución que encontré para solventar este problema es la instalación haciendo uso del Debootstrap para instalar el Debian, que pensé que sería mas tedioso por esto del ambiente virtualizado pero resulta que no.
Supongamos que debemos instalar una VM de Debian con las siguientes características.
- Espacio en Disco 16G
- / 5GB
- Swap 1GB
- /var 10GB
- Interfaz de Red 192.168.15.16
- Gateway 192.168.15.1
- Dns 192.168.15.126
Una vez instalado nuestro sistema para la virtualización, y dejando una partición destinada a los sistemas virtuales de Debian digamos que deseamos que /dev/sda5 sea dicha partición, procedemos a crear un LVM, Logical Volume Manager destinado a estas tareas.
- Borramos del Fstab, la partición /xen ó como la hayamos llamado en algún momento de la instalación si es que lo hicimos y desmotar la partición con el comando umount /ruta_de_la_partición.
- Creamos un volumen físico con el comando pvcreate /dev/sda5
- Creamos un nuevo grupo de volumen vgcreate servidores /dev/sda5
- Una vez creado esto procedemos a crear nuestro volumen lógico para nuestra VM lvcreate -L16G -nhostname_nuestro_equipo servidores. Esto le dice a nuestro Linux que nos cree un volumen lógico de 16GB, con el nombre hostname_nuestro_equipo, en el grupo de volumen llamado servidores.
- Particionamos nuestro volumen haciendo fdisk /dev/servidores/hostname_nuestro_equipo.
- Aquí creamos nuestras 3 particiones con el comando n para crear una partición nueva y creamos 3 particiones una de 10G para /var, 5G para /, y 1G para nuestra Swap.
- Luego Presionamos w para guardar los cambios y salir.
/dev/servidores/hostname_nuestro_equipop1
/dev/servidores/hostname_nuestro_equipop2
/dev/servidores/hostname_nuestro_equipop3
Una vez echo todo esto procederemos a crear nuestros Filesystems, de la siguiente forma.
Suponiendo que lo creamos en este orden en nuestro Fdisk.
En este punto si no hemos tenido ningún error, es necesario montar la partición / para comenzar la instalación. Para esto:
- mkdir /mnt/hostname_nuestro_equipo
- mount /dev/mapper/hostname_nuestro_equipop1 /mnt/hostname_nuestro_equipo
En este punto ya están preparadas nuestras particiones donde se instalará el Virtual Machine de Debian. Ahora es necesario preparar nuestra instalación de CentOs para que pueda instalar el Debian haciendo uso del DebootStrap. Para ello debemos agregar un repositorio a nuestra distro de la siguiente manera.
- Revisar el tipo de kernel que estamos usando con el comando uname -a, para verificar si estamos corriendo 32 bits o 64 bits, aunque para este punto ya lo deberías saber sin hacer uso del comando TU lo instalaste
. - El repositorio que instalaremos es el EPEL y dependiendo de la distro usaremos cualquiera de estos dos comandos.
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm
- Una vez echo esto ya tendremos las direcciones agregadas en nuestro directorio /etc/yum.repo/, por lo cual será necesario ejecutar el comando yum update para que actualice toda la lista de software que se encuentra en ese repositorio. Para luego ejecutar el comando yum install debootstrap. El cual nos permitirá instalar el Debian sin problemas.
Si hasta este punto vamos a la par, ya lo que falta es pan comido, ya que viene la parte sencilla de la instalación, que es montar el Debian y que lo haremos así:
- Instalamos por Debootstrap el debian según la versión que deseamos.
debootstrap –arch i386 lenny /mnt/hostname_nuestro_equipo/ http://ftp.us.debian.org/debian
debootstrap –arch amd64 lenny /mnt/hostname_nuestro_equipo/ http://ftp.us.debian.or/debian
- El proceso anterior va a tardar bastante ya que nuestro equipo se tiene que bajar todos los paquetes de ese FTP. Ahora nos podemos ir a tomar un café mientras esto pasa, ya que dependerá más que todo de nuestra conexión a internet.
- Listo!, una vez haya acabado, procederemos a enjaularnos dentro de nuestra partición de Debian, Si! la que creamos arriba en el directorio /mnt/hostname_nuestro_equipo, ejecutando chroot /mnt/hostname_nuestro_equipo
- Una vez enjaulados nos colocamos como root con el comando su -, si como puedes imaginar no tiene password el root “recuerda” no se lo has colocado verdad? bueno una vez siendo root debemos colocarle nuestro password
con passwd. - Luego debemos montar las particiones que deseemos, Como? pues muy sencillo.
- mount -t proc proc /proc
- mount -t sysfs sysfs /sys
- Creamos nuestra partición de Grub.
- mkdir /boot/grub
- Actualizamos nuestros repositorios de Debian
- aptitude update
- Configuramos los locales de nuestro VM
- aptitude install locales
- dpkg-reconfigure locales
- Ahora es necesario actualizar la imagen de nuestro kernel de xen en el Debian, para ello debemos revisar las versiones que tenemos instaladas y compararlas con las existentes en los repositorios. Así como también instalaremos ssh, y grub.
- aptitude install linux-image-xen-686 libc6-xen grub ssh
- Una vez realizado todo esto ya tendremos TODOS los paquetes necesarios para ejecutar nuestra Máquina Virtual, por lo tanto ahora necesitamos es configurar nuestra tabla de particiones para que no hayan problemas al inicio, crear los nombres etc.. de esta forma
- Editamos el archivo: vi /etc/fstab y agregamos lo siguiente:
- /dev/xvda1 / ext3 errors=remount-ro,noatime 0 1
/dev/xvda2 swap swap defaults 0 0
proc /proc proc defaults 0 0 - Editamos el archivo de Hosts.
- 127.0.0.1 localhost localhost.localdomain
- 192.168.15.16 hostname_nuestro_equipo
- Editamos las configuraciones de Red en el archivo /etc/network/interfaces agregando.
auto lo
iface lo inet loopback
auuto eth0
iface eth0 inet static
address 192.168.15.16
netmask 255.255.255.0
gateway 192.168.15.1
- Editamos el archivo de Hostname
vi /etc/hostname
y colocamos hostname_nuestro_equipo
- Para poder ver la consola serial sin problemas es necesario editar el /etc/inittab de la siguiente forma
Buscamos la linea que contenga algo parecido a 1:2345:…… y la comentamos colocando abajo lo siguiente:
1:2345:respawn:/sbin/getty 38400 hvc0
- Creamos nuestro archivo de para el menu del Grub /boot/grub/menu.lst y lo editamos como nos interese.
#boot=/dev/xvda
default=0
timeout=3
hiddenmenu
title debian
root (hd0,0)
kernel /boot/vmlinuz-2.6.26-2-xen-686 ro root=/dev/xvda1
initrd /boot/initrd.img-2.6.26-2-xen-686
OJO, es NECESARIO que el Kernel y el initrd esten acordes a los que se encuentran en nuestro /boot en cuanto a las versiones de lo contrario nuestra máquina virtual no encenderá.
Creamos un Link simbólico del menu al grub.conf de la siguiente forma
ln -s /boot/grub/menu.lst /boot/grub/grub.conf
Salimos del chroot para configurar nuestro Xen en el archivo /etc/xen/hostname_nuestro_equipo que contiene esto:
bootloader = “/usr/bin/pygrub”
memory = 1024 #para modificar este parámetro es necesario apagar la máquina virtual editar y volver a iniciarla.
name = “hostname_nuestro_equipo”
vif = [ "mac=00:16:3e:43:3d:e1,bridge=xenbr0" ]
disk = [ 'phy:/dev/servidores/hostname_nuestro_equipo,xvda,w' ]
Como debemos saber para este momento las máquinas virtuales en Xen no se inician automáticamente por defecto, es necesario crear un link simbólico desde el archivo de configuración al directorio /etc/xen/auto
ln -s /etc/xen/deb01 /etc/xen/auto/
El próximo paso es demontar TODO lo que hemos montado así:
desmonto /mnt
umount /mnt/hostaname_nuestro_equipo/proc
umount /mnt/hostaname_nuestro_equipo/sys
umount /mnt/hostaname_nuestro_equipo
rmdir /mnt/hostaname_nuestro_equipo
kpartx -d /dev/servidores/hostaname_nuestro_equipo
Para este momento deberíamos tener nuestro equipo listo, si deseas probar que todo funciona perfecto puedes reiniciar el equipo del xen y verás como tu máquina arranca automáticamente.

