Xen Debian · 8 min read · Dec 07, 2025

Xen En Debian Wheezy Con LVM

Xen En Debian Wheezy Con LVM

Autor: Jason Norwood-Young jason [at] freespeechpub dot co dot za

Así que tienes algunas necesidades serias de servidor. Quieres un montón de servidores, con un par de sistemas operativos, ejecutando sus propios sitios locos haciendo cosas justas, sirviendo al mundo y haciéndolo un lugar mejor. Solo hay un problema: eres pobre. Demasiado pobre para encender servidores de AWS y servidores de Rackspace sin contar las horas que están activos, y llorando cada vez que recibes la factura.

No te preocupes: puedes tener lo que buscas, por mucho menos de lo que esos servidores en la nube te costarían, especialmente si los necesitas activos 24/7/365. Con la virtualización, puedes usar un servidor grande para alojar muchos servidores pequeños. ¡Es casi como tener tu propia nube!

Este tutorial cubre la instalación de Xen y tu primera máquina virtual sobre Debian Wheezy. Si estás usando Squeeze, consulta el tutorial de Falko Timme, que utilicé como inspiración para el mío (aunque hacemos las cosas un poco diferente).

0. Elegir un servidor para ejecutar esto

Así que yo uso Hetzner Alemania. ¿Por qué? Porque son increíblemente baratos. Con un entorno virtualizado, lo que realmente buscas es mucha memoria. Cuanta más memoria, más sistemas virtuales puedes meter allí, y más grandes pueden ser. Tengo dos servidores de 32GB, lo que me permite ejecutar alrededor de 8 servidores entre 1GB y 4GB cada uno sin problemas. Esto no es una recomendación de ningún tipo y no tengo relación con Hetzner aparte de entregarles mi dinero ganado con esfuerzo cada mes.

Lo que buscas es un proveedor que te dé un servidor raíz bonito y barato, con mucha y mucha memoria, y la capacidad de reiniciar y rescatar de forma remota en caso de que realmente te equivoques.

1. Instalando Xen

Asumo que has instalado Wheezy, que has iniciado sesión como root, y que has hecho todas las actualizaciones de apt-get y mejoras de apt-get que necesitas hacer. ¡Así que vamos a empezar!

apt-get install xen-linux-system xen-tools

Esto instala Xen, algunas cosas de alta memoria, y las muy útiles xen-tools que usaremos para crear nuestras imágenes virtuales más tarde.

A continuación, queremos decirle a Xen cómo manejar la red. Tengo una pequeña confesión que hacer: no soy un tipo de redes. De hecho, detesto las redes. Es la plomería de Internet, y me niego a agacharme y mostrar mi trasero de plomero. Y la red de Xen es complicada, con rutas raras y puentes y Dios sabe qué más. Así que solo hago la solución más fácil, rápida y sucia: lo pongo en modo NAT. (No, realmente no sé qué es NAT, pero funciona, ¿de acuerdo? Deja de hacer preguntas.)

pico /etc/xen/xend-config.sxp

Descomenta las siguientes dos líneas:

    (network-script network-nat)
    (vif-script     vif-nat)

Aunque hemos instalado Xen, en realidad no está funcionando. Xen se ejecuta a nivel de kernel, lo que significa que realmente tienes que arrancar en Xen.

Primero, necesitamos decirle a Debian que arranque Xen en lugar de su kernel habitual:

dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen update-grub

Luego necesitamos reiniciar:

reboot

Sé que no puedes esperar para ssh en tu nuevo y asombroso sistema Xen, pero dale un segundo para reiniciar.

Está bien, inténtalo ahora.

¿Y ahora?

¿Estás dentro? ¿Estamos bien? Bien. Continuemos.

2. Controlando Xen

Así que ahora quieres asegurarte de que Xen está realmente corriendo. En Squeeze, podrías simplemente ejecutar uname -r, y verías algo como: 2.6.32-5-xen-amd64. Por alguna razón misteriosa desconocida para la humanidad, esto no funciona en Wheezy, así que en su lugar haz esto:

xen dmesg

Deberías ver algo como:

(XEN) Xen version 4.1.4 (Debian 4.1.4-3+deb7u1) ([email protected]) (gcc version 4.7.2 (Debian 4.7.2-5) ) Sun May  5 14:44:49 UTC 2013
(XEN) Bootloader: GRUB 1.99-27+deb7u2
(XEN) Command line: placeholder
(XEN) Video information:
(XEN)  VGA is text mode 80x25, font 8x16
(XEN)  VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN)  Found 2 MBR signatures
(XEN)  Found 2 EDD information structures
...

Si no ves eso, has hecho algo mal. Regresa y prueba de nuevo. Para todos los demás, ¡ÉXITO! ¡Felicidades! Ahora tienes una increíble instancia de Dom0!

¿Dom-qué? ¿A quién llamas dom?

Relájate, amigo. Dom0, o Dominio 0, es tu servidor host, la cosa en la que estás ahora, la base de la pila. Los servidores invitados se denominan DomU, posiblemente porque también suena ligeramente insultante.

xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0 31089     8     r——      8.8

Ese comando lista todos nuestros servidores virtuales, incluyendo Dom0. En este momento, ese es el único servidor que tenemos en funcionamiento.

Podemos hacer mucho con xm, incluyendo xm create que levanta un servidor, xm destroy que mata un servidor, xm reboot que reinicia un servidor, y xm top que monitorea todos los servidores en ejecución.

3. Configurando LVM

Puedes crear servidores Xen ya sea como dispositivos de bloque o como instancias de LVM. Me gusta LVM, porque es más robusto, y también hace que sea mucho más fácil redimensionar las particiones más tarde.

Primero necesitamos un disco vacío y desmontado para poner LVM. No tengo un disco vacío y desmontado, así que simplemente voy a robar uno de mi servidor.

df -h
Filesystem                                              Size  Used Avail Use% Mounted on
rootfs                                                 1008G  915M  956G   1% /
udev                                                     10M     0   10M   0% /dev
tmpfs                                                   3.0G  292K  3.0G   1% /run
/dev/disk/by-uuid/5642a4c4-1bcb-49e2-b89c-7d754e6a521a 1008G  915M  956G   1% /
tmpfs                                                   5.0M     0  5.0M   0% /run/lock
tmpfs                                                   9.2G     0  9.2G   0% /run/shm
/dev/md1                                                496M   34M  437M   8% /boot
/dev/md3                                                1.7T  196M  1.7T   1% /home

¿1.7TB para /home? ¿Estás serio? Eso parece totalmente innecesario.

pico /etc/fstab

Comenta el disco ofensivo

#/dev/md/3 /home ext4 defaults 0 0

Desmonta el disco

umount /dev/md3

Bien, ahora podemos crear nuestra partición LVM.

pvcreate /dev/md3
  Writing physical volume data to disk "/dev/md3"
  Physical volume "/dev/md3" successfully created
vgcreate xen-vol /dev/md3
vgdisplay
  --- Volume group ---
  VG Name               xen-vol
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               1.71 TiB
  PE Size               4.00 MiB
  Total PE              448996
  Alloc PE / Size       0 / 0
  Free  PE / Size       448996 / 1.71 TiB
  VG UUID               wa0QCN-lBc1-545B-zMwf-vIuS-VXXI-GZAfbW

¡Justo!

4. Configurando Xen Tools

Xen Tools hace que nuestra vida con Xen sea mucho más fácil, especialmente cuando se trata de crear nuevos servidores. Pero primero necesitamos configurarlo un poco.

pico /etc/xen-tools/xen-tools.conf
lvm = xen-vol
size   = 20Gb      # Tamaño de la imagen del disco.
memory = 4Gb    # Tamaño de la memoria
swap   = 512Mb    # Tamaño del swap
gateway    = 192.168.1.2
netmask    = 255.255.0.0
broadcast  = 192.168.1.255
mirror = http://ftp.de.debian.org/debian/
mirror_precise = http://archive.ubuntu.com/ubuntu # (y cualquier otro que desees)
serial_device = hvc0
disk_device = xvda #default
copyhosts = 1

5. Creando un servidor invitado

¡Es hora del evento principal! Este es el proceso que repetirás cada vez que quieras crear un nuevo servidor invitado de Xen.

Para nuestro primer servidor de prueba, voy a hacer algo un poco más pequeño que los valores predeterminados que hemos configurado en xen-tools.conf. Puedes anular cualquiera de los valores predeterminados en la línea de comandos, dependiendo de lo que quieras. Dado que no estamos usando un servidor dhcp, necesitarás establecer “hostname” e “ip” cada vez. Todo lo demás es opcional.

xen-create-image --hostname=test --ip=192.168.1.99 --memory=512Mb --size=5G --swap=256Kb
General Information
--------------------
Hostname       :  test
Distribution   :  wheezy
Mirror         :  http://ftp.de.debian.org/debian/
Partitions     :  swap            256Kb (swap)
                  /               5G    (ext3)
Image type     :  full
Memory size    :  512Mb
Kernel path    :  /boot/vmlinuz-3.2.0-4-amd64
Initrd path    :  /boot/initrd.img-3.2.0-4-amd64
Networking Information
----------------------
IP Address 1   : 192.168.1.99 [MAC: 00:16:3E:27:33:2D]
Netmask        : 255.255.0.0
Broadcast      : 192.168.1.255
Gateway        : 192.168.1.2

Creating swap on /dev/xen-vol/test-swap
Done
Creating ext3 filesystem on /dev/xen-vol/test-disk
Done
Installation method: debootstrap
Running hooks
Done
No role scripts were specified.  Skipping
Creating Xen configuration file
Done
No role scripts were specified.  Skipping
Setting up root password
Generating a password for the new guest.
All done

Logfile produced at:
     /var/log/xen-tools/test.log
Installation Summary
---------------------
Hostname        :  test
Distribution    :  wheezy
IP-Address(es)  :  192.168.1.99
RSA Fingerprint :  de:92:b7:63:55:20:74:46:d3:de:cc:ff:55:22:69:24
Root Password   :  MlkaIn8

Esto crea el archivo de configuración y la partición para nosotros, pero no arranca el servidor por nosotros. El archivo de configuración se encuentra en /etc/xen/hostname.cfg. Puedes editar este archivo directamente si necesitas cambiar cosas como la memoria más tarde.

Vamos a proceder a iniciar el servidor

xm create /etc/xen/test.cfg
Using config file "/etc/xen/test.cfg".
Started domain test (id=1)

Lo que es bastante genial es que “test” se añadirá a nuestro archivo /etc/hosts, lo que significa que podemos hacer esto:

ssh test

Usa la contraseña que recibiste al final de la salida de xen-create-image, ¡y estás dentro!

Asegúrate de que puedes ver los interwebs:

ping google.com
PING google.com (173.194.70.113) 56(84) bytes of data.
64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=1 ttl=48 time=6.05 ms
64 bytes from fa-in-f113.1e100.net (173.194.70.113): icmp_req=2 ttl=48 time=6.03 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 6.030/6.044/6.058/0.014 ms

6. Tómate una cerveza

¡Te lo mereces!

7. Apuntando direcciones IP a tus servidores virtuales

Necesitarás un montón de direcciones IP de tu ISP (llamadas una subred). Pago un poco más al mes por ocho direcciones IP adicionales. Pero hacer que pasen directamente a tu servidor virtual requiere un poco de trabajo.

pico /etc/network/interfaces
auto br0
iface br0 inet static
  address 192.168.1.2
  netmask 255.255.0.0
  pre-up brctl addbr $IFACE
  post-down brctl delbr $IFACE
/etc/init.d/networking restart
ifconfig br0
br0       Link encap:Ethernet  HWaddr 82:18:d1:b8:37:c9
          inet addr:192.168.1.2  Bcast:192.168.255.255  Mask:255.255.0.0
          inet6 addr: fe80::9118:d1ff:feb8:37c9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:172 (172.0 B)
ip addr add 80.1.2.41 dev eth0
iptables -A PREROUTING -t nat -p all -i eth0 -d 80.1.2.41 -j DNAT --to 192.168.1.99

Usa –bridge=br0 al usar xen-create. Para los archivos existentes /etc/xen/*.cfg, edita esta línea:

    vif         = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34' ]

para que se vea así:

    vif         = [ 'ip=192.168.1.99,mac=00:15:3F:B4:AC:34','bridge=br0' ]

Destruye y crea el servidor virtual si es necesario.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.