developers Open minds…
Nel precendente articolo abbiamo visto come installare Xen e come rendere operativa la nostra prima macchina virtuale. Vedremo ora in modo approfondito alcuni aspetti relativi alla virtualizzazione e cercheremo di risolvere i problemi più comuni. Per questo articolo utilizziamo Fedora Core 5 ma le informazioni sono facilmente applicabili anche alle altre distribuzioni.
Kernel e loopfs
Per i sistemi guest risulta molto comodo utilizzare filesystem loop; in questo modo evitiamo di creare partizioni sul nostro disco fisico e possiamo aggiungere nuovi dischi virtuali senza modificare la tabella delle partizioni del sistema. Il modulo che gestisce questa modalita’ a livello di Kernel è “loop” e per default sono abilitati 8 loop mounts. Supponiamo di creare 3 dispositivi virtuali per ogni macchina guest, se il numero di macchine è maggiore di 2 dovremo aumentare il valore di loop mounts permessi dal Kernel. Per farlo modifichiamo il file /etc/modprobe.conf aggiungendo la seguente riga:
options loop max-loop=32
E’ necessario rimuovere e reinserire il modulo per applicare le modifiche, in alternativa riavviamo il sistema. Se il valore di loop mount viene superato non sara’ possibile avviare il sistema guest.
Gestione del domain0
Come abbiamo visto il domain0 è il server sul quale gira il demone supervisore Xen ed il Kernel xen0. E’ importante organizzare in modo corretto lo spazio fisico su hard disk per poter gestire in modo flessibile i sistemi guest. Abbiamo deciso di creare una partizione che conterra’ i loop filesystems dei sistemi guest, tale partizione e’ stata montata nel sistema al seguente percorso: /mnt/xendomains. All’interno di questa partizione creiamo una directory per ogni sistema guest:
mkdir /mnt/xendomains/guest1-web
mkdir /mnt/xendomains/guest2-mail
mkdir /mnt/xendomains/guest3-radius
Nell’esempio abbiamo predisposto la realizzazione di 3 server virtuali: web, mail e radius. All’interno delle directory verranno posizionati i filesystem. Come abbiamo accennato e’ importante limitare la memoria fisica utilizzabile dal domain0, per falo dobbiamo eseguire i seguenti comandi:
xm mem-set 0 384
xm mem-max 0 384
Sono sufficienti 256MB di Ram, nel nostro caso il sistema disponeva di 2GB di memoria ed abbiamo preferito assegnare 384MB per ottimizzare le prestazioni.
Gestione dei sistemi guest
Per una gestione ottimale dei sistemi guest può essere utile separare i filesystem come se si trattasse di macchine fisiche. Per farlo è sufficiente creare dispositivi logici differenti. Nell’esempio che segue creiamo 3 filesystem: root, var e swap.
cd /mnt/xendomains/guest1-web
dd if=/dev/zero of=guest1-web-root.img bs=1M count=1 seek=1024
dd if=/dev/zero of=guest1-web-var.img bs=1M count=1 seek=10240
dd if=/dev/zero of=guest1-web-swap.img bs=1M count=1 seek=512
Prepariamo i filesystem:
/sbin/mke2fs -F -j guest1-web-root.img
/sbin/mke2fs -F -j guest1-web-var.img
/sbin/mkswap guest1-web-swap.img
Montiamo i filesystem e procediamo all’installazione:
mkdir /mnt/temp-root
mount -o loop guest1-web-root.img /mnt/temp-root
mkdir /mnt/temp-root/var
mkdir /mnt/temp-root/dev
mkdir /mnt/temp-root/etc
mkdir /mnt/temp-root/proc
mount -t proc none /mnt/temp-root/proc
mount -o loop guest1-web-var.img /mnt/temp-root/var
for i in console null zero ; do /sbin/MAKEDEV -d /mnt/dev -x $i ; done
Creiamo il file /mnt/temp-root/etc/fstab adattandolo alla nuova configurazione con 3 partizioni:
/dev/sda1 / ext3 defaults 1 1
/dev/sda2 /var ext3 defaults 1 1
/dev/sda3 swap swap defaults 0 0
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
Installiamo il sistema base ed il kernel xenU sulla macchina guest:
yum -c http://people.redhat.com/~katzj/yum-xen.conf—installroot=/mnt/temp-root -y groupinstall Base
yum -c http://people.redhat.com/~katzj/yum-xen.conf—installroot=/mnt/temp-root -y install kernel-xenU
cp /etc/selinux/config /mnt/temp-root/etc/selinux/config
Smontiamo i filesystem del sistema guest:
umount /mnt/temp-root/proc
umount /mnt/temp-root/var
umount /mnt/temp-root
Configuriamo Xen per il nuovo guest, dobbiamo rendere disponibili i 3 dischi virtuali come sda1-2-3. Creiamo il file /etc/xen/guest1-web come segue:
kernel =”/boot/vmlinuz-2.6.12-1.1454_FC4xenU”
memory = 256
name = “guest1-web”
nics = 1
disk = [‘file:/mnt/xendomains/guest1-web/guest1-web-root.img,sda1,w’, ‘file:/mnt/xendomains/guest1-web/guest1-web-var.img,sda2,w’, ‘file:/mnt/xendomains/guest1-web/guest1-web-swap.img,sda3,w’]
root = ”/dev/sda1”
extra = “ro selinux=0 3”
Siamo pronti per avviare il nostro sistema guest e completare la configurazione di rete. Se non abbiamo commesso errori non dovrebbero esserci problemi.
Alcuni comandi utili
Per monitorare e gestire i nostri sistemi guest e’ sufficiente un comando: xm. Vediamo come utilizzarlo.
/usr/sbin/xm create -c guest1-web
Avvia il sistema guest guest1-web e ci presenta la console.
/usr/sbin/xm shutdown guest1-web
Esegue il comando shutdown sul sistema guest e lo arresta.
/usr/sbin/xm top
Simile al comando top, visualizza i processi relativi alle macchine guest.
/usr/sbin/xm help
Elenco dei comandi disponibili.
Ovviamente l’argomento Xen e’ molto vasto, spero di avervi fornito qualche informazione in piu’ rispetto al QuickStart precedente. Sto utilizzando Xen a livello enterprise con successo e questo mi permetterà di scoprirne tutte le potenzialità, sarà mia premura realizzare altri articoli non appena le mie conoscenze saranno adeguate. Per ora che dire… Virtualizzate!!!
Netmoole fornisce consulenza e supporto informatico alle aziende, realizza Siti Internet ed applicazioni Web personalizzate. Grazie all'elevata esperienza nel settore è in grado di realizzare portali dinamici completamente gestibili dall'utente e sistemi di Commercio Elettronico (E-Commerce). Netmoole fornisce inoltre servizi di Posta Elettronica, Hosting, condivisione di File via Web ed E-Mail Marketing.
Visita il sito www.netmoole.net