guest@il_blog_di_Enrico204:/$ _  
.: Home :: Chi sono :: Attività :: HowTo :: Appunti vari :: Software :: Files :.

Xen on Ubuntu (gutsy - 7.10)

Indice:
  1. Iniziare: materiale occorrente
  2. Installare e preparare Xen
  3. Configurazione di una macchina virtuale
  4. Problemi frequenti
  5. Problemi frequenti [OLD]

Sperimentando diversi tool di virtualizzazione (Virtual PC di casa Redmond, VMware [workstation|server], VirtualBox, qemu, kvm) oggi mi son trovato ad affrontare Xen. A differenza degli altri la virtualizzazione è più trasparente: tutti gli altri tools hanno un sistema completo di bios e hw virtuale: xen invece si basa sull'hw fisico (con opportune modifiche ove necessario, ad esempio limite della ram, sk di rete virtuale, ecc.) e carica direttamente il kernel di linux, non avendo bios (in realtà neanche quello di qemu e compagnia sono bios veri e propri, ma non scendiamo nei dettagli). Ubuntu integra xen mediante pacchetti aggiuntivi dai repository.

Iniziare: materiale occorrente

Prima di tutto una macchina con Ubuntu installato (non fa differenza la tipologia [server|desktop|jeos]) che sarà il nostro server Xen.

Sicuramente la connessione ad internet (o un repository locale, come faccio io per evitare di scaricare lo stesso aggiornamento da internet 3 volte da 3 pc).

Installare e preparare Xen

Ora, se la nostra installazione di ubuntu è di tipo server (senza grafica) conviene installare il pacchetto ubuntu-xen-server, se desktop invece ubuntu-xen-desktop. I pacchetti differiscono dalla dipendenza di xenman, un tool grafico per la gestione di Xen (che non andremo a vedere perchè presupponiamo di avere un'installazione server, e anche perché a me non funziona :-D)

Una volta installato quel pacchetto (e le dipendenze) conviene, prima di riavviare il PC per caricare il kernel Xen, modificare il file /etc/xen/xend-config.sxp sostituendo alla riga:

(network-script network-dummy)

la riga:

(network-script network-bridge)

Per avere il server in bridging sull'interfaccia ethernet predefinita.

A questo punto si può riavviare il PC per far caricare il kernel Xen.

Configurazione di una macchina virtuale

Inanzitutto esistono due modi: usare xen-tools oppure costruirsi il sistema virtuale "da sè". Analizzeremo il primo aspetto visto che costruirsi un sistema da zero è più complicato e richiede una conoscenza abbastanza approfondita di Linux. Inoltre possiamo scegliere se usare un volume LVM per l'immagine oppure usare un'immagine loopback (un file).

Cominciamo editando /etc/xen-tools/xen-tools.conf. Possiamo decommentare la riga che indica la directory di output delle immagini loopback dir = /home/xen e aggiustare la parte Disk and Sizing Options, Opzioni dischi e dimensione (del disco, dello swap e della ram). Possiamo scegliere tra varie release di Debian, Ubuntu, CentOS e Fedora.

E' d'obbligo anche aggiustare la parte Networking setup values, riguardante appunto la rete. Volendo c'รจ anche la possibilità di configurare la password di root direttamente prima di avviare il sistema, o di importare gli account locali, tutto sotto Misc options.

Finito di configurare, possiamo dare, dal terminale, il comando:

xen-create-image --hostname=nome.host.del.pc.virtuale --ip=192.168.1.5

Questo comando crea una macchina virtuale con l'hostname nome.host.del.pc.virtuale e l'indirizzo ip 192.168.1.5 (evitate di mettere quest'opzione se avete scelto il dhcp nelle impostazioni di rete nel config di xen-tools).

Per avviare la macchina virtuale basta dare:

xm create /etc/xen/nome.host.del.pc.virtuale.cfg -c

Questo comando usa il file di configurazione creato da xen-tools nella directory di xen per far partire la macchina virtuale appena creata. Il comando -c serve per indicare il passaggio alla console direttamente (cioè vedete ciò che succede sulla macchina virtuale come se fosse il monitor, mentre parte): per terminare il comando (control-c lo termina nella macchina virtuale) bisogna usare la combinazione Control-AltGR e il tasto + (non del tastierino numerico, l'altro). Per ritornare in qualsiasi momento nella console è possibile digitare xm console nome.host.del.pc.virtuale.

Gestione delle macchine virtuali

Ecco un po' di comandi (con relativa descrizione) per gestire la macchina virtuale:

  • xm console dominio
    Passa alla console (tty1) sul dominio virtuale (aka: nome host della macchina virtuale). Per terminare il comando (control-c lo termina nella macchina virtuale) bisogna usare la combinazione Control-AltGR e il tasto + (non del tastierino numerico, l'altro).
  • xm create [-c] fileConfigurazione
    Crea (aka: fa partire) una nuova macchina virtuale all'interno dell'ambiente xen partendo dal file di configurazione fileConfigurazione (percorso completo). L'opzione -c serve per passare automaticamente alla console tty1 (vedi il comando console per ulteriori info)
  • xm destroy dominio
    Termina immediatamente il dominio (aka: macchina virtuale). Come da manuale: This doesn't give the domain OS any chance to react, and it's the quivalent of ripping the power cord out on a physical machine. Che dire, la frase si commenta da sola :-D
  • xm list [dominio]
    Visualizza le informazioni sul dominio o su tutti i domini avviati. Lo stato del dominio può contenere:
    • r: Avviato
    • b: Bloccato - Il dominio è bloccato e non è avviato o avviabile. Può essere causato dall'attesa di un IO da parte del dominio (stato wait tradizionale) oppure è andato in stato sleep perché non c'è nient'altro che può fare.
    • p: In pausa - Dominio in stato di pausa.
    • c: Crashed - Il dominio è letteralmente crashato: come indica il manuale: ... which is always a violent ending. Anche questa parte del manuale si commenta da sola :-P
    • d: Morte in progresso - Il dominio "vá" verso la "morte", che può essere lo stato "crashed" o semplicemente uno spegnimento.
  • xm shutdown [-w] [-a] dominio
    Spegne (normalmente) il dominio specificato oppure tutti i domini (opzione -a). Può anche attendere fino a quando un dominio non sia spento (opzione -w).

Naturalmente se volete avere maggiori info riguardo a questi comandi (e ad altri non listati qui) fate riferimento al manuale ufficiale o alle "man pages" ;-)

Problemi frequenti

Ultimamente ho incontrato diversi problemi, e ho trovato i relativi rimedi: prima di tutto aggiungere la riga "extras" per passare i parametri del kernel relativi alla console di Xen con il comando:

sudo echo "extra = ' TERM=xterm xencons=tty console=tty1'" >> /etc/xen-tools/xm.tmpl

Dopodiché modifichiamo il file /usr/lib/xen-tools/gutsy.d/30-disable-gettys aggiungendo:

cat ${prefix}/etc/event.d/tty1 | sed "s/tty1/xvc0/" > ${prefix}/etc/event.d/xvc0
echo "xvc0" >> /etc/securetty

Poi aggiungiamo al file /usr/lib/xen-tool/gutsy.d/15-disable-hwclock la riga:

chroot ${prefix} /usr/sbin/update-rc.d -f hwclockfirst.sh remove
rm -f ${prefix}/etc/init.d/hwclock.sh ${prefix}/etc/init.d/hwclockfirst.sh ${prefix}/etc/udev/rules.d/85-hwclock.rules

Dopo questi passaggi però dovete ricreare la vostra immagine eliminando i vecchi file su disco (compreso quello di configurazione in /etc/xen/).

Errore creazione loopback

Se vi capita un errore simile a questo:

Error: Device 2049 (vbd) could not be connected. losetup /dev/loop0
/home/xen/centos51/centos.5-1.img failed

provate a modificare il file di configurazione e, nella voce del percorso delle partizioni, inserire "tap:aio:" al posto di "file:".

Problemi frequenti [OLD]

ATTENZIONE: questo fix è valido solo se modificate di volta in volta la macchina virtuale. Consiglio vivamente di usare il metodo illustrato qui sopra invece di questo.

Se la macchina virtuale si ferma all'avvio dopo il montaggio del filesystem EXT3 con il seguente messaggio:

kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.

potrebbe essere necessario aggiungere la seguente riga:

extra = 'xencons=tty console=tty1 TERM=xterm'

al file di configurazione della macchina virtuale (/etc/xen/nome.host.del.pc.virtuale.cfg).

Tutte le "trascrizioni" sono le mie "esperienze" che ho acquisito facendo di tutto nel tempo libero.

I contenuti di questo sito sono stati prodotti da me, e possono essere ridistribuite sotto licenza Creative Commons BY-NC-ND 3.
In qualsiasi caso gradirei essere contattato...

Enrico Bassetti - Contattami
Ultimo aggiornamento: 03/07/2008

Valid XHTML 1.0 Transitional Level A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0 Creative Commons License
Attribuzione - Non Commerciale - No opere derivate 3.0 Generico