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-toolsEsto 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.sxpDescomenta 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-grubLuego necesitamos reiniciar:
rebootSé 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 dmesgDeberí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 listName ID Mem VCPUs State Time(s)
Domain-0 0 31089 8 r—— 8.8Ese 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 -hFilesystem 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/fstabComenta el disco ofensivo
#/dev/md/3 /home ext4 defaults 0 0Desmonta el disco
umount /dev/md3Bien, ahora podemos crear nuestra partición LVM.
pvcreate /dev/md3 Writing physical volume data to disk "/dev/md3"
Physical volume "/dev/md3" successfully createdvgcreate xen-vol /dev/md3vgdisplay --- 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.conflvm = 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 = 15. 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=256KbGeneral 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 : MlkaIn8Esto 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.cfgUsing 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 testUsa 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.comPING 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 ms6. 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/interfacesauto 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 restartifconfig br0br0 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 eth0iptables -A PREROUTING -t nat -p all -i eth0 -d 80.1.2.41 -j DNAT --to 192.168.1.99Usa –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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.