Progetto

Generale

Profilo

Actions

XenOnSargeHowto » Cronologia » Versione 9

« Precedente | Versione 9/12 (diff) | Successivo »
Amministratore Truelite, 06-07-2006 17:12


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
}}}

e successivamente aggiungere a grub le voci necessarie per fare il boot con il kernel xen, nel file {{{ "/boot/grub/menu.lst" }}} {{{ #
  1. 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
  1. BEGIN AUTOMAGIC KERNELS LIST
  1. lines between the AUTOMAGIC KERNELS LIST markers will be modified
  2. by the debian update-grub script except for the default options below
  1. DO NOT UNCOMMENT THEM, Just edit them to your needs
    }}}

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.

Il file {{{ "/etc/network/interfaces" }}} dovrebbe quindi avere questo aspetto. {{{
  1. 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
}}}

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. {{{
mkdir -p /home/vserver/images
cd /home/vserver/images
dd if=/dev/zero of=sarge-base.img seek=2048000k bs=1 count=1
dd if=/dev/zero of=swap.img seek=512000k bs=1 count=1
mkfs.ext3 sarge-base.img
mkswap swap.img
}}}

Una volta create e formattate le partizioni, è necessario installare debootstrap con {{{ "apt-get install debootstrap" }}} per poi procedere all'installazione di un sistema base.

{{{
modprobe loop
mount -o loop sarge-base.img /mnt
debootstrap sarge /mnt http://ftp.it.debian.org/debian
}}}

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 {{{
cp -a /lib/modules/2.6.12.6-xen /mnt/lib/modules
mv /mnt/lib/tls /mnt/lib/tls.disabled
}}}

Creazione del file ''/mnt/etc/fstab'' {{{
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
/dev/hda2 none swap sw 0 0
}}}

Le console diverse da tty1 vanno disabilitate in ''/mnt/etc/inittab'' {{{
  1. Note that on most Debian systems tty7 is used by the X Window System,
  2. 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
    #2:23:respawn:/sbin/getty 38400 tty2
    #3:23:respawn:/sbin/getty 38400 tty3
    #4:23:respawn:/sbin/getty 38400 tty4
    #5:23:respawn:/sbin/getty 38400 tty5
    #6:23:respawn:/sbin/getty 38400 tty6
    }}}

A questo punto è possibile smontare il disco virtuale con {{{ umount /mnt }}} e procedere alla creazione del file di configurazione per la macchina vituale xen che chiameremo ''sarge-base.sxp'' {{{
name ="sarge-base"
kernel ="/boot/xen-linux-2.6.12.6-xen"
ramdisk ="/boot/initrd-2.6.12-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']

  1. network
    vif = ['bridge=xenbr0', 'bridge=xen-br-testlan']
    }}}

Una volta salvato il file, sarà possibile avviare la macchina virtuale con il comando {{{ xm create -c sarge-base.sxp }}}. Se tutto procede senza problemi, verrà avviata una macchina virtuale con 64MB di ram, e due interfacce di rete. Il parametro "-c" passato alla linea di comando fa si che la console virtuale venga agganciata subito (in caso contrario la macchina virtuale viene avviata in background).

Il comando {{{ "xm" }}} permette di effettuare alcune operazioni sulle macchine virtuali e di controllarne lo stato.

{{{ xm list }}} mostra la lista delle macchine virtuali attive.

{{{ xm reboot }}} forza il riavvio di una macchina virtuale.

{{{ xm shutdown }}} forza lo shutdown di una macchina virtuale.

{{{ xm destroy }}} distrugge istantaneamente una macchina virtuale.

{{{ xentop }}} consente di avere l'equivalente del comando ''top'' per le macchine virtuali in esecuzione.

Per avere delle macchine virtuali funzionanti correttamente una volta avviato il sistema occorrerà anche completare, all'interno dello stesso, la configurazione. Questo comporta anzitutto mettere un {{{sources.list}}} valido, del tipo: {{{
deb http://ftp.it.debian.org/debian sarge main contrib
deb http://security.debian.org/ sarge/updates main contrib
}}}
e configurare {{{/etc/network/interfaces}}} con qualcosa del tipo: {{{
auto lo eth0

iface lo inet loopback

iface eth0 inet dhcp
hostname sarge
}}}
inoltre dato che {{{debootstrap}}} non installa {{{module-init-tools}}}, necessario per usare i moduli (e far funzionare DHCP) con il kernel 2.6, occorrerà configurare una prima volta la rete a mano ed installarlo.

Aggiornato da Amministratore Truelite quasi 18 anni fa · 9 revisions