You are on page 1of 8

La_virtualizacin_en_Canaima

Tabla de contenidos
1 Arrancando mquina virtual en modo 'single user' 1.1 Poniendo recursos de memoria en caliente 2 Creacin de maquinas virtuales XEN 4.0 usando LVM (Volmenes Lgicos) 2.1 Preparacin del Servidor 2.2 Instalacin de XEN 2.3 Para qu IPTable? 2.4 Probando XEN 2.5 Creacin de un grupo de volmenes 2.6 Crear nuestra primera maquina virtual usando xen-tools y LVM

Arrancando mquina virtual en modo 'single user'


El modo 'single user' est caracterizado en el primer nivel de arranque (run level 1) de los sistemas Linux. A veces queremos iniciar nuestra mquina (virtual) con servicios mnimos producto de algn componente ya sea corrupto, mal configurado o simplemente daado que nos impide llegar a un estado funcional del sistema operativo. Recuerdo que durante la administracin de los servicios de correo del proyecto, se nos present una vez la situacin de un colistero que envi un mensaje con adjuntos que sobrepasaban los 10M. A este acto de desconocimiento se sum la involuntaria accin del moderador de la lista de discusin quien permiti o dej pasar ese mensaje a los 350 suscritos para aquel entonces. Esta ocasin gener un colapso ipso facto del computador virtualizado. Hctor, quien conoce la capacidad operativa de nuestro servidor de correo -pues l la diseo- infiri el comportamiento del servidor, anticipando que la mquina no podra salir del colapso de su memoria y que debamos conseguir una manera que el computador arrancara sin levantar esos servicios (sendmail, spamassassin, exim, mailman y otros) vitales. Eso lo pudimos lograr con una directiva que se agrega al archivo de configuracin de la mquina virtual (*.cfg), tpicamente ubicada en /etc/xen/:
extra = 'single'

Con esto logramos iniciar el computador, acceder a una terminal y limpiar las colas de envo.

Poniendo recursos de memoria en caliente


Ya que no los permiten, es tpico que se quiera manejar la memoria casi dinmicamente, en caliente, de acuerdo a las circunstancias. Por ejemplo, yo en este mismo instante necesito aumentar la memoria de una mquina virtual que comenz a suapear y tiene la memoria principal colapsada. ste es un computador que est bajando los repositorios de Debian, lleva 40GB descargados y no quiero detenerlo, aunque existen garantas de resumir la descarga.

Arrancando mquina virtual en modo 'single user'

La_virtualizacin_en_Canaima Entonces, veo si poseemos memoria asignable.


# xentop xentop - 01:38:06 Xen 4.0.1 5 domains: 1 running, 4 blocked, 0 paused, 0 crashed, 0 dying, 0 shutdown Mem: 3145288k total, 2699160k used, 446128k free CPUs: 4 @ 3000MHz

Y luego procedo a poner a la mquina virtual, tanta memoria quiero que tenga:
xm mem-set repo 450 Error: memory_dynamic_max must be less than or equal to memory_static_max Usage: xm mem-set <Domain> <Mem> Set the current memory usage for a domain.

Este es sobretodo una advertencia, que puede ser inmediatamente solventada, subiendo el lmite mximo de memoria que puede ser asignado a ese dominio:
xm mem-max repo 512

Y ahora si podemos subir la cantidad de memoria que tenamos previsto inicialmente:


root@caracas:/var/repo/binarios/canaima# xm mem-set repo 450

Pero sigue habiendo problemas. Seguiremos documentando...

Creacin de maquinas virtuales XEN 4.0 usando LVM (Volmenes Lgicos)


Datos Iniciales Se cuenta con un servidor con las siguientes caractersticas: Disco duro de 300gb. Memoria RAM de 8gb. No tenia sistema operativo instalado. Procesador amd64.

Preparacin del Servidor


Se instalar un sistema base de Debian Squeeze (debian-6.0.3-adm64-netinst). Se crearan las siguientes particiones: primaria /boot etx2 256mb logica intercambio 2gb logica / ext4 10gb logica /var etx4 7gb primaria lvm 280,7gb (lo quedo) Creacin de maquinas virtuales XEN 4.0 usando LVM (Volmenes Lgicos) 2

La_virtualizacin_en_Canaima Como se puede observar hay una particin muy grande en comparacin a las dems y es una LVM, esto se debe a que esta servir como contenedor de todos los volmenes lgicos que se creen, por ejemplo: maquinas virtuales, particiones, entre otros.

Instalacin de XEN
Se deben instalar los siguientes paquetes en el contenedor: 1. aptitude install xen-linux-system-2.6.32-5-xen-amd64 xen-tools Adems tambin se instalar fail2ban, 1. aptitude install fail2ban Ms adelante explicar cual ser su funcin. Una vez instalados los paquetes, se debe configurar la interfaz de red para que actu como puente (bridge), de la siguiente manera: root@debian:/etc/xen#vim /etc/network/interfaces Se observar algo como esto:
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp

Modifica y comenta estas dos lneas:


#auto eth0 #iface eth0 inet dhcp Luego se agregaron las siguientes allow-hotplug eth0 iface eth0 inet static address 1.2.3.4 netmask 255.255.255.0 network 1.2.3.0 broadcast 1.2.3.255 gateway 1.2.3.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 200.44.32.12 auto br0 iface br0 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 bridge_ports none Explicando un poco el escenario

Preparacin del Servidor

La_virtualizacin_en_Canaima

Eth0: Puede contener una direccin IP pblica (esttica o dinmica). Ej.: 200.11.10.25 Br0: Nos ayuda a tener una red privada dentro del contenedor y as es posible asignar direcciones IP a las maquinas virtuales como por ejemplo: 192.168.1.16. IPTable: Gracias a esto es posible hacer el reenvo de trafico que entra por eth0 y luego es enviado a cualquiera de las maquinas virtuales. Eth0_V: Son interfaces de red virtuales que se crean al momento de hacer la maquina virtual. MV1, MV2 y MV3: Son las maquinas virtuales.

Para qu IPTable?
Como se mencion anteriormente este servir para hacer el reenvo de trafico hacia las maquinas virtuales, primero se debe coloca un ?1? al archivo ip_forward que est en la ruta /proc/sys/net para que el contenedor sea capaz de hacer reenvo de trafico y por medio de reglas de PREROUTING el trafico se enva a cada maquina virtual. A continuacin se presentar un pequeo ejemplo: Se debe crear el script de IPTable y se guarda en /root/nombre_que_quieran.sh root@debian:/etc/xen#vim /root/firewall.sh Luego agrega las siguientes lineas:
#!/bin/sh #Limpiamos iptables iptables iptables iptables iptables iptables -t nat -X -t nat -F -t nat -Z -F -Z

ETH="eth0" echo "1" > /proc/sys/net/ipv4/ip_forward /sbin/modprobe iptable_nat iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o $ETH -j MASQUERADE

iptables -t nat -A PREROUTING -p tcp -i $ETH -d 192.168.1.15 --dport 33333 -j DNAT --to 192.168.3. iptables -t nat -A PREROUTING -i $ETH -p tcp --dport 33333 -j DNAT --to-destination 192.168.3.101: # otras reglas /etc/init.d/fail2ban restart

Al principio dije que explicara porque instalar fail2ban, como se puede observar se est usando en IPTable, su funcin es una sencilla manera de protegernos de ataques a fuerza bruta. Realmente ment no voy a explicar mucho como funciona, solo les menciono que lo uso en el IPTable.

Instalacin de XEN

La_virtualizacin_en_Canaima

Probando XEN
Para comprobar que el contenedor de maquinas virtuales xen (dum0) esta funcionando bien, se corre el siguiente comando.
root@debian:/etc/xen#xm list La respuesta esperada es la siguiente: Name ID Mem VCPUs State Time(s) Domain-0 0 6145 8 r----- 28365.3

S sale un error como este


root@debian:/etc/xen#xm list WARING! Can't find hypervisor information in sysfs! Error: Unable to connect to xend: No such file or directory. Is xend running?

Esto se debe a que squeeze utiliza grub2 y los valores de inicio estn equivocados para xen, para corregir este error hacemos lo siguiente: 1. mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux 2. update-grub2 Luego reinicias el contenedor y comprobamos otra vez
root@debian:/etc/xen# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 6145 8 r----- 28365.3

Todo esta funcionado bien!

Creacin de un grupo de volmenes


Para crear el grupo de volmenes ejecuta los siguientes comandos:
root@debian:/etc/xen#fdisk -l Con esto vemos cual es la particin que se dejo para LVM Device Boot Start End Blocks /dev/sdc1 1 32 248832 Partition 1 does not end on cylinder boundary. /dev/sdc2 32 36473 292717569 /dev/sdc5 36230 36473 1952768 /dev/sdc6 32 1247 9764864 /dev/sdc7 35378 36230 6836224 /dev/sdc8 * 1248 35378 274149376 Id 83 5 82 83 83 8e System Linux Extended Linux swap / Solaris Linux Linux Linux LVM

La que posee el asterisco es la que se dejo para LVM, para este caso es /dev/sdc8. Se procede a crear un volumen fsico, que pudiera ser un disco duro real o un arreglo RAID. Para ello ejecutamos el siguiente comando: Probando XEN 5

La_virtualizacin_en_Canaima
root@debian:/etc/xen#pvcreate /dev/sdc8 Physical volume "/dev/sdc8" successfully created

S todo a salido bien podemos continuar. Ahora vamos a crear el grupo de volmenes vg0, para ello ejecuta el siguiente comando:
root@debian:/etc/xen#vgcreate -s 32M vg0 /dev/sdc8 Volume group "vg0" successfully created

El parmetro -s se usa para insertar extensiones fsicas que pudieran ser 4M, 8M, 16M o 32M. Esto quiere decir lo siguiente: -s = 4M ??> vg0 como mximo va ser de 256Gb. -s = 8M ??> vg0 como mximo va ser de 512Gb. -s = 16M ??> vg0 como mximo va ser de 1Tb. -s = 32M ??> vg0 como mximo va ser de 2Gb.

Crear nuestra primera maquina virtual usando xen-tools y LVM


Primero debemos editar el archivo de xen-tools que se encuentra en /etc/xen-tools/xen-tools.conf
root@debian:/etc/xen#vim /etc/xen-tools/xen-tools.conf

Para este caso editaremos las siguientes lineas:


lvm = vg0 install-method = debootstrap size = 4Gb # Disk image size. memory = 256Mb # Memory size swap = 256Mb # Swap size # noswap = 1 # Don't use swap at all for the new system. fs = ext3 # use the EXT3 filesystem for the disk image. dist = `xt-guess-suite-and-mirror --suite` # Default distribution to install. image = sparse # Specify sparse vs. full disk images. gateway = 192.168.1.1 netmask = 255.255.255.0 broadcast = 192.168.1.255 ameserver = 200.44.32.12 bridge = br0 passwd = 1 accounts = 1 kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` mirror = `xt-guess-suite-and-mirror --mirror` ext3_options = noatime,nodiratime,errors=remount-ro ext2_options = noatime,nodiratime,errors=remount-ro xfs_options = defaults reiserfs_options = defaults btrfs_options = defaults boot = 1 output = /etc/xen extension = .cfg

Ya es hora de crear nuestra primera maquina virtual, para ello ejecutamos el siguiente comando:
root@debian:/etc/xen#xen-create-image --force --hostname=nombre_mv --lvm=vg0 --ip=192.168.1.111

Creacin de un grupo de volmenes

La_virtualizacin_en_Canaima Hostaname es el nombre de la maquina virtual Lvm es para especificar el grupo de volmenes que se va a utilizar y esto especifica que la maquina virtual ser creada bajo el paradigma de LVM. Ip es la direccion ip que le asignaremos a la maquinas virtial. Tambin pueden agregar otros parmetros para la creacin de la maquina virtual, como por ejemplo: ?fs Especifica el sistema de ficheros a utilizar, en nuestro caso ext3 ?image Especifica como crear las imagenes, si al completo full o en parte de la particion sparse ?kernel La direccin del kernel de domU que creamos en los primeros pasos ?memory La memoria de que va a disponer la maquina ?passwd Que solicite el password de root para la maquina en el momento de creacin ?size Tamao del disco ?swap Tamao de la swap ?copy Instala la nueva imagen copiada de otro directorio ?dist Especifica la distribucin a instalar (nosotros, sarge) ?debootstrap Para utilizar debootstrap si usamos ?dist. ?tar Obtiene las imagenes de un archivo previamente empaquetado ?dhcp obtiene la ip por dhcp ?gateway define el gateway ?netmask define la mascara de red ?copy copia la imagen de un directorio Luego hay que esperar que el sistema cree nuestra primera maquina virtual. Al terminar el proceso nos pedir la clave de root que se le asignar a la maquina virtual. Por ltimo podemos levantarla usando el siguiente comando:
root@debian:/etc/xen#xm create /etc/xen/nombre_mv.cfg -c

Luego para comprobar que la maquina virtual arranc sin problemas ejecuta:
root@debian:/etc/xen#xm list Name Domain-0 nombre_mv

ID 0 10

Mem VCPUs 6145 8 256 1

State r-----b----

Time(s) 28827.1 68.9

Como se puede observar la maquina inicio con normalidad, es la que en la lista dice maquina_mv. Ahora para entrar en ella ejecuta:
root@debian:/etc/xen#xm console maquina_mv

Pedir el password de root que se coloc al culminar el proceso de creacin de la maquina virtual. Datos importantes Al crear una maquina virtual se crean dos volmenes lgicos, uno para la particin raz / y otro para el swap. (ambos parmetros se especifican en el archivo de configuracin de xen-tools, que est en /etc/xen-tools/xen-tools.conf). Para comprobarlo ejecuta el siguiente comando:
root@debian:/etc/xen#lvdisplay --- Logical volume ---

Crear nuestra primera maquina virtual usando xen-tools y LVM

La_virtualizacin_en_Canaima
LV Name VG Name LV UUID LV Write Access LV Status # open LV Size Current LE Segments Allocation Read ahead sectors - currently set to Block device /dev/vg0/maquina_mv-swap vg0 ctMlN2-u7Vq-kGCs-wXVE-keYW-f4Rl-fDeSAz read/write available 1 256,00 MiB 8 1 inherit auto 256 254:16

--- Logical volume --LV Name /dev/vg0/maquina_mv-disk VG Name vg0 LV UUID sqfHvB-Ky1e-nCie-ZNU9-1tvB-fg3V-lRacdL LV Write Access read/write LV Status available # open 1 LV Size 4,00 GiB Current LE 640 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:17

LV Name: es el nombre del volumen lgico de la maquina virtual que pudiese ser / o swap. VG Name: nos dice el grupo de volumen donde se aloja el volumen logico. LV Size: nos indica el tamao del volumen lgico. Como se puede obsevar ya existen dos volumenes lgicos, el primero representa la swap de la maquina virtual (/dev/vg0/maquina_mv-swap) y el segundo la particin / ( /dev/vg0/maquina_mv-disk). Realmente esta ultima es el disco de la maquina virtual, es equivalente al archivo .img que se genera al crear una maquina virtual xen basada en dd.

Crear nuestra primera maquina virtual usando xen-tools y LVM

You might also like