In questo breve articolo impareremo a realizzare sistemi virtuali in ambiente Linux. Per farlo utilizzeremo Xen 3, engine di virtualizzazione Open Source, in quanto risulta essere un progetto maturo e stabile. I vantaggi di una simile tecnologia sono molteplici e risultano particolarmente adatti ad ambienti Enterprise/ISP: ottimizzazione delle risorse hardware, riduzione del numero di macchine fisiche e risparmio economico.

Per realizzare il nostro sistema utilizziamo la distribuzione Linux Fedora Core 5 e Xen 3.0.x. Il quantitativo minimo di memoria Ram per il sistema è pari a 256MB, ovvimente andrà aggiunta la memoria necessaria per ogni macchina virtuale creata. Iniziamo installando Fedora Core 5 con la classica procedura grafica; trattandosi del supervisore per le macchine virtuali (domain0) dovremo effettuare una selezione individuale dei pacchetti ed installare solo il sistema base. Una volta completata l’installazione dovremo impostare selinux ad un valore diverso da enforce.

vi /etc/selinux/config

A questo punto possiamo procedere con l’aggiornamento del sistema e l’installazione dei pacchetti necessari:

yum update
yum install xen kernel-xen0 kernel-xenU

Abbiamo installato il supervisore Xen ed i kernel per il domain0 e per le macchine guest. Ora assicuriamoci che al riavvio venga utilizzato il nuovo kernel:

vi /boot/grub/grub.conf

Riavviamo il sistema ed avviamo Xen, assicuriamoci che venga abilitato per i runlevel 345:

/sbin/service xend start
/sbin/chkconfig—level 345 xend on

Verifichiamo il corretto funzionamento del demone:

/usr/sbin/xm list

Dobbiamo ora limitare il quantitativo di memoria utilizzabile dal domain0:

xm mem-set 0 384
xm mem-max 0 384

Passiamo ora alla creazione del nostro primo sistema virtuale, creiamo il filesystem root con dimensione 2GB e montiamolo nella directory /mnt/temp:

dd if=/dev/zero of=fedora-root.img bs=1M count=1 seek=1048
/sbin/mke2fs -F -j fedora-root.img
mkdir /mnt/temp
mount -o loop fedora-root.img /mnt/temp

Creiamo la directory /dev/ nel nuovo filesystem:

for i in console null zero ; do /sbin/MAKEDEV -d /mnt/temp/dev -x $i ; done

Creiamo la directory /etc/ ed il file fstab:

mkdir /mnt/temp/etc
vi /mnt/temp/etc/fstab

/dev/sda1 / ext3 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0

Montiamo il filesystem /proc ed eseguiamo un installazione del sistema base:

mkdir /mnt/temp/proc
mount -t proc none /mnt/temp/proc

yum -c http://people.redhat.com/~katzj/yum-xen.conf—installroot=/mnt/temp -y groupinstall Base
yum -c http://people.redhat.com/~katzj/yum-xen.conf—installroot=/mnt/temp -y install kernel-xenU

cp /etc/selinux/config /mnt/temp/etc/selinux/config

Smontiamo il filesystem:

umount /mnt/temp/proc
umount /mnt/temp

Creiamo il file di configurazione del il nostro server guest:

cd /etc/xen
vi guest1

kernel = ”/boot/vmlinuz-2.6.12-1.1454_FC4xenU”
memory = 128
name = “guest1”
nics = 1
disk = [‘file:/root/fedora-root.img,sda1,w’]
root = ”/dev/sda1”
extra = “ro selinux=0 3”

Avviamo il nostro server virtuale:

xm create -c guest1

Se tutto è andato bene il boot della macchina virtuale verra’ eseguito correttamente. Potremo eseguire il login e completare la configurazione creando i files necessari per il corretto funzionamento della rete. Vediamo ora come automatizzare l’avvio delle macchine virtuali. Sostituiamo lo script di avvio /etc/init.d/xendomains con il seguente: https://bugzilla.redhat.com/bugzilla/attachment.cgi?id=120075.

cd /etc/xen/auto
ln -s /etc/xen/guest1 .
/sbin/chkconfig—level 345 xendomains on
/sbin/service xendomains start

La realizzazione del sistema è stata possibile grazie alla documentazione presente sul sito http://fedoraproject.org/wiki/. Questo articolo voleva essere una breve introduzione operativa alla virtualizzazione, successivamente approfondiremo l’argomento analizzandone in maniera approfondita tutti gli aspetti.