Disclaimer :
Questo documento è in lavorazione e potrebbe non essere ancora considerato
ufficiale.
|
Configurare Gentoo per utilizzare Xen
1.
Introduzione
La tecnologia Xen permette
l'esecuzione di più sistemi operativi su una stessa macchina, di gestire
l'occupazione delle risorse ed anche di migrare domini (che sono gli ambienti
virtuali nei quali un sistema operativo ospite viene eseguito) da un sistema
Xen ad un altro. Il sistema operativo che ospiterà gli altri deve supportare
Xen (supporto fornito dal kernel Linux) ma i sistemi ospite possono esser
eseguiti senza modifiche se l'hardware in uso supporta l'Intel
Virtualization Technology (VT-x) o l'AMD Virtualization Technology (SVM).
In caso contrario, anche il sistema operativo ospite dovrà avere il supporto a
Xen.
Attraverso questa guida si conosceranno tutti i passi necessari per ottenere un
sistema Xen funzionante su Gentoo Linux. Non si discuterà di Xen in sé (il
progetto Xen fornisce documentazione
sufficiente) né di configurazioni specializzate che potrebbero essere
interessanti ma non sono strettamente legate a Xen (come esportare Portage via
NFS, avviare Linux usando PXE, ecc.).
2.
Preparare il Domain0
Introduzione
In ambiente Xen, Domain0 è il dominio primario e definisce il sistema
operativo che ospiterà gli altri domini. In questo capitolo si preparerà una
installazione esistente di Gentoo per farla diventare il sistema ospitante di
questo dominio e si compilerà un kernel Xen in modo tale da permettere a Gentoo
di ospitare altri domini Xen.
Ricompilare l'intero sistema Gentoo?
Un cambiamento drammatico che potrebbe essere necessario è la ricompilazione
dell'intero sistema Gentoo con differenti CFLAGS, altrimenti i sistemi
operativi ospite sotto Xen potrebbero avere un serio decadimento delle
prestazioni. Comunque, se si sta solo pianificando di provare Xen, non lo si
sta installando in un ambiente produttivo e non si ha l'ardente desiderio di
ricompilare tutti i programmi, si può saltare questo passo. In questo caso si
noteranno solo cali di prestazione, ma si potrà comunque usare Xen.
Importante:
Si raccomanda, nel caso si vogliano modificare le CFLAGS> per ricompilare
il sistema con una versione di gcc inferiore alla 4, di non aver impostato
-Os in quanto si produrrebbe codice corrotto.
|
Codice 2.1: Modificare le CFLAGS e ricompilare Gentoo |
~# nano -w /etc/portage/make.conf
CFLAGS="-O2 -march=pentium4 -pipe -mno-tls-direct-seg-refs"
~# emerge -e world
|
Se si avvia il sistema usando un ramdisk iniziale (initrd) sarà necessario
rigenerarlo (operazione che è meglio fare eseguendo tutti i passi come se
si stesse ricompilando il kernel).
Installare Xen
Attualmente Xen è composto da numerosi componenti, sarà quindi necessario
installare alcuni pacchetti.
Codice 2.2: Installare Xen |
~# emerge xen xen-tools gentoo-sources
|
Configurare e compilare il kernel
Si andrà ora a configurare e compilare il kernel col supporto a Xen. Questo
kernel, i cui sorgenti sono disponibili in
/usr/src/linux, diverranno il kernel principale che
verrà utilizzato (p.e. per il domain 0). Nella sezione XEN si trovano i
driver per tutti i tipi di periferiche di input/output, ogni driver possiede una
implementazione per backend e frontend. Per il kernel del domain 0
è necessario selezionare le implementazioni backend, queste verrano
utilizzate dagli altri domini (che usano i driver frontend) per
comunicare direttamente con l'hardware. Tuttavia si dovrebbe essere in grado
di configurare il kernel per avere il support ad entrambi guest e host.
Ci si potrebbe meravigliare per quanto
riguarda la gestione della rete: in un dominio ogni interfaccia possiede un
link punto-punto ad un'interfaccia sul domain 0 (chiamata vifX.Y
dove X è il numero del dominio e Y è il numero dell'interfaccia di tale
dominio), in questo modo è possibile configurare la propria rete nel modo che
si vuole (bridging, NAT, ecc.).
Codice 2.3: Abilitare il supporto a Xen |
Processor type and features --->
[*] Paravirtualized guest support --->
[*] Xen guest support
|
Codice 2.4: Configurare il kernel |
Bus options (PCI etc.) --->
[*] Xen PCI Frontend
[*] Networking support --->
Networking options --->
<*> 802.1d Ethernet Bridging
[*] Network packet filtering framework (Netfilter) --->
[*] Advanced netfilter configuration
[*] Bridged IP/ARP packets filtering
Device Drivers --->
[*] Block devices (NEW) --->
<*> Xen block-device backend driver
[*] Network device support --->
<*> Xen backend network device
Xen driver support --->
[*] Xen memory balloon driver (NEW)
[*] Scrub pages before returning them to system (NEW)
<*> Xen /dev/xen/evtchn device (NEW)
[*] Backend driver support (NEW)
<*> Xen filesystem (NEW)
[*] Create compatibility mount point /proc/xen (NEW)
[*] Create xen entries under /sys/hypervisor (NEW)
<M> userspace grant access device driver (NEW)
<M> user-space grant reference allocator driver (NEW)
<M> xen platform pci device driver (NEW)
|
La configurazione del kernel dovrebbe abilitare ad avviare il sistema da host e guest.
Tuttavia, se vuoi fare ciò, dovresti allegerire l'immagine del kernel del sistema guest.
Fare riferimento alla documentazione Xen per maggiori informazioni.
Una volta compilato il kernel si troverà la sua immagine, chiamata
vmlinuz, direttamente nella directory di compilazione (non dentro
arch/ o in qualche altra directory). Copiarla in /boot
e configurare il bootloader affinché usi l'hypervisor di Xen (uno dei componenti
installati precedentemente) che è stato salvato come /boot/xen.gz.
Nella configurazione del bootloader, indicare a Xen di effettuare il boot
utilizzando il kernel appena generato. In GRUB, ad esempio:
Codice 2.5: Configurazione di GRUB per Xen |
title Xen Gentoo Linux 3.5
root (hd0,0)
kernel /boot/xen.gz
module /boot/kernel-3.5.x.y-xen0 root=/dev/sda3
|
Ora riavviare il sistema e controllare che si è in grado di fare ciò che si faceva normalmente
sul proprio sistema. Se è il caso, si può modificare la configurazione del bootloader per accedere
a Xen ad ogni avvio.
Nota:
Se si vuol far partire automaticamente anche i domini ospite ad ogni riavvio,
aggiungere xendomains al runlevel di default e creare un link simbolico
in /etc/xen/auto ai file di configurazione di Xen per i domini
che si vuol far partire.
|
3.
Creare un dominio non privilegiato (Domain-U)
Compilare il kernel
Si ritorni ai sorgenti del kernel precedentemente utilizzati e se necessario
si aggiorni la configurazione. È consigliabile mantenere la configurazione
del nuovo kernel il più simile possibile al kernel principale.
Compilare il kernel e spostare il file vmlinuz ottenuto dove si
vuole (in questa guida si assume sia in /mnt/data/xen/kernel):
Codice 3.1: Compilare il kernel per il sistema ospite |
~# make O=~/build/domU
~# cp ~/build/domU/vmlinuz /mnt/data/xen/kernel/kernel-2.6.x.y-xen
|
Creare i dischi per un dominio
Per avere maggiori prestazioni è consigliabile dedicare una partizione (o un
volume logico) ad un dominio piuttosto che un filesystem creato su file.
Comunque, se si vuole usare Xen solo per scopi di test, usare una filesystem
creato su file ha i suoi vantaggi (specialmente per quello che riguarda la
manutenzione).
Si può creare un filesystem su file usando dd e mke2fs
(o qualsiasi altro strumento di creazione di filesystem). Per esempio, per
creare un filesystem ext4 di 4 Gbyte:
Codice 3.2: Creare un filesystem su file |
~# dd if=/dev/zero of=/mnt/data/xen/disks/ext3root.img bs=1M count=4096
~# mkfs.ext4 /mnt/data/xen/disks/ext4root.img
|
Configurare un dominio
Si crei ora un file di configurazione per un dominio Xen. Si possono salvare
questi file di configurazione dove si vuole, per esempio in
/mnt/data/xen/configs. Come esempio, si creerà in file di
configurazione per un piccolo ambiente Gentoo che usi l'immagine del disco
creata precedentemente:
Codice 3.3: Creare un file di configurazione per un dominio |
~# nano -w /mnt/data/xen/configs/gentoo
kernel = "/mnt/data/xen/kernel/kernel-3.5.x.y-xen"
memory = 512
name = "gentoo"
disk = ['file:/mnt/data/xen/disks/ext4root.img,sda1,w']
root = "/dev/sda1 ro"
|
Se come disco si sta usando un device a blocchi (come un volume lvm o una
partizione), usare 'phy:' invece di 'file:' e omettere /dev. Per esempio:
Codice 3.4: Usare un device a blocchi |
disk = [ 'phy:lvm/xen-guest-root,sda1,w' ]
disk = [ 'phy:sdb6,sda1,w' ]
|
Si possono trovare esempi di file di configurazione in /etc/xen.
Far partire il nuovo dominio
Terminata la fase di configurazione, si può far partire il nuovo dominio.
Se l'immagine del disco contiene un sistema operativo, si potrebbe creare e far
partire il dominio usando il comando xl:
Codice 3.5: Creare e far partire un nuovo dominio |
~# xl create /mnt/data/xen/configs/gentoo -c
|
Il dominio dovrebbe partire all'interno del terminale nel quale è stato
eseguito il comando. Nel caso in esempio, comunque, l'immagine del disco è vuota
per cui il dominio non si avvierà. Per ovviare a questo, si può montare
l'immagine in loop ed installarvi Gentoo come fosse un sistema nuovo.
Per scollegarsi dal dominio, premere Ctrl+]. Per ottenere una nuova
connessione alla console del dominio usare xl console gentoo.
Dato che si può avere una sola console per dominio, la si usi solo se non
si può accedere altrimenti (per esempio attraverso SSH).
4.
La rete su un dominio non privilegiato
Introduzione
Xen lavora al meglio quando si usa la modalità bridge. Questo significa che la tua
interfaccia di rete di default è attiva sul dominio amministrativo che diventerà un bridge (NdT:
ponte) che accetta connessioni al dominio virtuale attraverso l'IP del dominio amministrativo.
Interfacce bridged
Creare un'interfaccia bridge creando un nuovo collegamento allo script di init di rete,
provvisto da Gentoo.
Codice 4.1: Creare un bridge |
# cd /etc/init.d
# ln -s net.lo net.br0
|
Modificare /etc/conf.d/net come segue per configurare la
rete:
Codice 4.2: Abilitare l'interfaccia br0 |
# nano -w /etc/conf.d/net
bridge_br0="eth0"
config_br0="192.168.1.200 netmask 255.255.255.0 brd 192.168.1.255"
routes_br0="default via 192.168.1.1"
|
Ora, installare net-misc/bridge-utils e assicurarsi che lo script
net.br0 si avvii al boot.
Codice 4.3: Finire la configurazione del bridge |
# emerge net-misc/bridge-utils
# rc-update add net.br0 default
|
5.
Ulteriori risorse
La documentazione di Xen
Strumenti per Xen
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|