Está en la página 1de 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)

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

System
Linux

5
82
83
83
8e

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

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

También podría gustarte