Gentoo Logo

Disclaimer : Questo documento è in lavorazione e potrebbe non essere ancora considerato ufficiale.


Configurare Gentoo per utilizzare Xen

Indice:

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
(Aggiungere -mno-tls-direct-seg-refs SOLO se si possiede un dom0 a 32-bit)
(Non c'è bisogno di questa flag se si possiede un dom0 a 64-bit)
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"
(Mappa l'immagine del disco alla partizione virtuale /dev/sda1)
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

(Volume LVM)
disk = [ 'phy:lvm/xen-guest-root,sda1,w' ]

(Partizione fisica)
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



Stampa

Aggiornato il 7 ottobre 2012

La versione originale di questo documento non è più mantenuta

Oggetto: Questa guida descrive come iniziare ad usare Xen su un sistema Gentoo

Sven Vermeulen
Autore

Joshua Saddler
Redazione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.