Project

General

Profile

TracNav(TOC)

Come creare un server di virtualizzazione usando Xen su una Debian Sarge

Si considerino i presenti requisiti di base:

  • una distribuzione linux debian, release Sarge, installata;
  • una buona quantità di spazio su disco libero su una partizione;
  • almeno due interfacce di rete (eth0, eth1);
  • una quantità di memoria ram maggiore o uguale a 512MB.

Il primo passo è l'installazione del kernel xen e dei relativi tool che vanno presi da un repository esterno in quanto non presenti in sarge.
I seguenti comandi abilitano il repository esterno ed installano i pacchetti necessari.

echo "deb http://packages.debianbase.de/sarge/i386/xen3 ./" >> /etc/apt/sources.list
apt-get update
apt-get install iproute xen udev hotplug bridge-utils linux-xen0-2.6
cd /usr/src
dpkg -i kernel-xen0-2.6.12.6-xen_tha1_i386.deb
mv /lib/tls /lib/tls.disabled

Una volta installati i pacchetti, è necessario rigenerare l'initrd per il vostro sistema con il comando

mkinitrd -o /boot/xen-modules-2.6.12.6-xen 2.6.12.6-xen

<pre>
#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

title           Xen 3.0.1 - Linux 2.6.12.6-xen
                kernel      /boot/xen-3.0.1.gz
                module      /boot/xen-linux-2.6.12.6-xen root=/dev/hda1 ro
                module      /boot/xen-modules-2.6.12.6-xen
### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs
</pre>

Ipotizzando che _eth0_ sia l'interfaccia di rete in ascolto sulla rete locale con dhcp e che _eth1_ sia collegata ad uno switch per una rete interna di test, possiamo creare un nuovo bridge da fare usare alle macchine virtuali; di default xen crea un bridge sulla _eth0_ per le sue interfacce virtuali.

<pre>
<pre>
# The primary network interface
auto eth0
iface eth0 inet dhcp

auto xen-br-testlan
iface xen-br-testlan inet static
        address 10.0.0.0
        network 10.0.0.0
        netmask 255.255.255.0
        bridge_ports eth1
        post-up ifconfig xen-br-testlan 0.0.0.0; ifconfig xen-br-testlan up
</pre>

A questo punto è possibile riavviare il sistema nel nuovo domain0 xen.

Se il sistema si è avviato senza problemi possiamo creare una nuova istanza di debian sarge che girerà come ospite (guest) sul sistema host.

La prima cosa da fare è la creazione di due file da usare rispettivamente come partizione di root da 2GB e come swapfile da 512MB.
<pre>
mkdir -p /home/vserver/images
cd /home/vserver/images
dd if=/dev/zero of=sarge.img seek=2048000k bs=1 count=1
dd if=/dev/zero of=swap.img seek=512000k bs=1 count=1
mkfs.ext3 sarge.img
mkswap swap.img
</pre>

<pre>

<pre>
modprobe loop
mount -o loop sarge.img /mnt
debootstrap sarge /mnt http://ftp.it.debian.org/debian 
</pre>

Il passo successivo è l'installazione dei moduli del kernel xen sul nuovo sistema guest seguito dalla creazione di alcuni file necessari ed alla modifica di alcune impostazioni di sistema.

Disabilitazione delle librerie TLS
<pre>
cp -a /lib/modules/2.6.12.6-xen /mnt/lib/modules
mv /mnt/lib/tls /mnt/lib/tls.disabled
</pre>

Creazione del file _/mnt/etc/fstab_
<pre>
/dev/hda1       /               ext3    defaults,errors=remount-ro 0       1
/dev/hda2       none            swap    sw              0       0
</pre>

Le console diverse da tty1 vanno disabilitate in _/mnt/etc/inittab_
<pre>
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
#489:23:respawn:/sbin/getty 38400 tty2
#490:23:respawn:/sbin/getty 38400 tty3
#491:23:respawn:/sbin/getty 38400 tty4
#492:23:respawn:/sbin/getty 38400 tty5
#493:23:respawn:/sbin/getty 38400 tty6
</pre>

<pre>
<pre>
name ="sarge-base" 
kernel ="/boot/xen-linux-2.6.12.6-xen" 
ramdisk ="/boot/xen-modules-2.6.12.6-xen" 
root ="/dev/hda1 ro" 
memory =64
disk = [ 'file:/home/vserver/images/sarge_base.img,hda1,w' , 'file:/home/vserver/images/swap.img,hda2,w']

# network
vif = ['bridge=xenbr0', 'bridge=xen-br-testlan']
</pre>

<pre>

<pre>

<pre>

<pre>

<pre>

<pre>

<pre>

<pre>
<pre>
deb http://ftp.it.debian.org/debian sarge main contrib
deb http://security.debian.org/ sarge/updates main contrib
</pre>
<pre>
<pre>
auto lo eth0

iface lo inet loopback

iface eth0 inet dhcp
        hostname sarge
</pre>
<pre>