Progetto

Generale

Profilo

XenOnLennyHowto » Cronologia » Versione 16

Simone Piccardi, 23-12-2010 15:57

1 15 Amministratore Truelite
h1. Installazione e gestione di Xen su Lenny
2 1 Amministratore Truelite
3 15 Amministratore Truelite
4 16 Simone Piccardi
"Xen":http://www.xensource.com è un sistema di virtualizzazione basato sul concetto di hypervisor, che consente sia di eseguire un sistema operativo modificato per essere eseguito dall'hypervisor con perdite di prestazioni minimali anche su processori che non supportano la virtualizzazione, che di appoggiarsi alle estensioni presenti nei processori moderni per eseguire sistemi non modificati. 
5 1 Amministratore Truelite
6 16 Simone Piccardi
Nel primo caso occorre che il sistema ospite supporti le modifiche per essere usato da Xen (nel caso di Linux occorre un kernel opportunamente modificato, che su Debian è disponibile nei pacchetti @linux-image-2.6.26-2-xen-*@), nel secondo appoggiandosi alle estensioni del processore e ad una apposita versione di @qemu@ si può installare un sistema non modificato, quindi una qualunque versione di Linux ed anche Windows. 
7 15 Amministratore Truelite
8 16 Simone Piccardi
Il meccanismo di funzionamento di Xen prevede che l'hypervisor lanci una istanza privilegiata del sistema operativo ospite (una versione di Linux
9
modificata per essere eseguita dall'hypervisor) che viene chiamata *Dom0*, da questa sarà poi possibile creare ed eseguire le varie macchine virtuali, chiamate *DomU*.
10 15 Amministratore Truelite
11 3 Amministratore Truelite
h2. Installazione di base
12 1 Amministratore Truelite
13 16 Simone Piccardi
Con Lenny il supporto per Xen è presente direttamente nella distribuzione che fornisce i pacchetti necessari, pertanto una volta installato il sistema, si potrà installare Xen ed i kernel con esso compatibili direttamente con il comando:
14 1 Amministratore Truelite
15
<pre>
16 15 Amministratore Truelite
aptitude install xen-linux-system-2.6.26-2-xen-686
17 1 Amministratore Truelite
</pre>
18 16 Simone Piccardi
19
utilizzando il metapacchetto che installa tutte le parti necessarie, dall'hypervisor ai kernel modificati ai vari programmi di ausilio. Si possono poi installare anche i programmi ausiliari per Debian che consentono una creazione rapida delle macchina virtuali con:
20
21 6 Amministratore Truelite
<pre>
22
aptitude install xen-tools
23 1 Amministratore Truelite
</pre>
24
25 16 Simone Piccardi
Una volta installato il nuovo kernel e l'hypervisor si riavvii la macchina, controllando che la prima voce del @menu.lst@ di _Grub_ avvii l'hypervisor. Una volta installato il tutto si potrà controllare che Xen è attivo con il comando: 
26
27 1 Amministratore Truelite
<pre>
28 15 Amministratore Truelite
xenhost:~# xm dmesg
29 6 Amministratore Truelite
...
30 1 Amministratore Truelite
(XEN) System RAM: 1982MB (2030012kB)
31
(XEN) Xen heap: 9MB (10084kB)
32 6 Amministratore Truelite
(XEN) Domain heap initialised: DMA width 32 bits
33 15 Amministratore Truelite
(XEN) PAE enabled, limit: 16 GB
34
(XEN) Processor #0 15:11 APIC version 16
35 1 Amministratore Truelite
(XEN) Processor #488 15:11 APIC version 16
36
(XEN) IOAPICr0: apic_id 4, version 17, address 0xfec00000, GSI 0-23
37 15 Amministratore Truelite
(XEN) Enabling APIC mode:  Flat.  Using 1 I/O APICs
38
(XEN) Using scheduler: SMP Credit Scheduler (credit)
39 6 Amministratore Truelite
(XEN) Detected 2304.832 MHz processor.
40 1 Amministratore Truelite
(XEN) AMD SVM: ASIDs enabled. 
41
(XEN) HVM: SVM enabled
42
...
43 6 Amministratore Truelite
</pre>
44 1 Amministratore Truelite
45 16 Simone Piccardi
che mostra come sia stata riconosciuta la RAM totale, i processori e, nell'ultima riga, come sia disponibile il supporto per HVM (_Hardware Virtual Machine_) cioè la virtualizzazione hardware con il supporto del processore.
46
47
Il passo successivo è configurare Xen per la gestione delle macchine virtuali, questo viene fatto con il file di configurazione principale che è @/etc/xen/xend-config.sxp@; il primo passo è garantire un accesso diretto alla rete alle macchine virtuali, per per questo occorre, rispetto alla configurazione di default, attivare la gestione in modalità _bridge_, in cui l'interfaccia fisica viene messa in bridge con le interfacce virtuali delle varie macchine *DomU*, questo deve essere fatto modificando il file in modo che le direttive di gestione della rete siano le seguenti:
48
49 1 Amministratore Truelite
<pre>
50
...
51
(network-script network-bridge)
52
...
53
#(network-script network-dummy)
54
</pre>
55 16 Simone Piccardi
56
(nel default la prima è commentata e la seconda no), se l'interfaccia che si vuole utilizzare non è @eth0@ occorrerà specificarla esplicitamente con: 
57
58 1 Amministratore Truelite
<pre>
59
(network-script 'network-bridge netdev=ethX')
60
</pre>
61
62 16 Simone Piccardi
Nelle precedenti versioni di Xen era necessario limitare la quantità di memoria messa a disposizione del *Dom0* con la opzione @mem=XXX@ passata al bootloader, le versioni recenti liberano automaticamente la memoria, ma si può impostare un limite minimo con la direttiva: 
63
64 15 Amministratore Truelite
<pre>
65
(dom0-min-mem 128)
66 1 Amministratore Truelite
</pre>
67 16 Simone Piccardi
68 1 Amministratore Truelite
(il valore è in Mb, ed il default è 196, eccessivo nella gran parte dei casi).
69
70
h2. La gestione delle macchine virtuali con gli xen-tools
71 15 Amministratore Truelite
72 16 Simone Piccardi
Il pacchetto @xen-tools@ installa una serie di programmi applicativi che consentono di creare in maniera veloce nuove macchine virtuali. Per farlo sono disponibili due approcci, quello basato su immagini poste su file, e quello basato su volumi logici di LVM; noi ci baseremo su questo. Si darà pertanto per scontato che si sia installato LVM ed i relativi programmi ausiliari, qualora questo non sia il caso sarà sufficiente farlo con:
73 1 Amministratore Truelite
74
<pre>
75 15 Amministratore Truelite
aptitude install lvm2
76 9 Amministratore Truelite
</pre>
77 1 Amministratore Truelite
78 16 Simone Piccardi
Sarà poi necessario disporre di adeguato spazio disco da dedicare a LVM; a questo scopo si ricordi che una partizione usata come _volume fisico_ di LVM deve essere marcata come tale come di tipo @8E@. Se allora @/dev/sda3@ è una partizione libera si potrà creare il gruppo di volumi (che chiameremo @xenvg@ da cui estrarre lo spazio disco per le macchine virtuali con i comandi: 
79
80 15 Amministratore Truelite
<pre>
81 9 Amministratore Truelite
pvcreate /dev/sda3
82 15 Amministratore Truelite
vgcreate xenvg /dev/sda3 
83 1 Amministratore Truelite
</pre>
84 16 Simone Piccardi
85 15 Amministratore Truelite
ed in seguito aggiungere eventuali altri dischi con:
86 16 Simone Piccardi
87 12 Amministratore Truelite
<pre>
88
pvcreate /dev/sdb1
89 15 Amministratore Truelite
vgextend xenvg /dev/sdb1
90 1 Amministratore Truelite
</pre>
91 11 Amministratore Truelite
92 16 Simone Piccardi
(si consulti la documentazione di LVM o il relativo capitolo su "Amministrare GNU/Linux":http://labs.truelite.it/http://svn.truelite.it/documenti/corso.pdf per i dettagli di gestione di LVM).
93
94
La configurazione degli xen-tools viene eseguita con il file @/etc/xen-tools/xen-tools.conf@, la cui sintassi prevede l'assegnazione di una serie di parametri che controllano le modalità di creazione con una sintassi nella forma @chiave = valore@. Dato che il default è usare dei file per i dischi della macchina virtuale occorrerà anzitutto impostare l'uso di LVM con: 
95
96 11 Amministratore Truelite
<pre>
97 12 Amministratore Truelite
lvm = xenvg
98 15 Amministratore Truelite
</pre>
99 1 Amministratore Truelite
100 16 Simone Piccardi
dove si è fatto riferimento al volume fisico appena creato; occorrerà poi impostare le dimensioni di default per il disco, la RAM e la swap assegnate a ciascuna macchina virtuale creata; questo si fà con l'assegnazione dei parametri @size@, @memory@ e @swap@, già presenti commentati nello scheletro di configurazione installato da Debian. 
101
102
Si devono poi impostare gli indirizzi; in questo caso si hanno due scelte, usare il parametro @dhcp = 1@ che configura la macchina virtuale per l'uso del DHCP, o fornire un IP statico a riga di comando, in tal caso si dovranno comunque impostare le altre proprietà della rete, ed in particolare i parametri: 
103
104 1 Amministratore Truelite
<pre>
105
gateway   = 172.16.0.1
106 15 Amministratore Truelite
netmask   = 255.255.0.0
107 1 Amministratore Truelite
broadcast = 172.16.255.255
108
</pre>
109 12 Amministratore Truelite
110 16 Simone Piccardi
Per la creazione delle macchine virtuali esistono diversi metodi, ma fintanto che ci si limita a Debian e Ubuntu è sufficiente usare _deboostrap_, e questo lo si fa con il parametro:
111
112 15 Amministratore Truelite
<pre>
113 1 Amministratore Truelite
install-method = debootstrap
114 15 Amministratore Truelite
</pre>
115 16 Simone Piccardi
116
in questo caso è poi possibile anche indicare la distribuzione di default da usare con:
117
118 12 Amministratore Truelite
<pre>
119 15 Amministratore Truelite
dist = lenny
120 12 Amministratore Truelite
</pre>
121 16 Simone Piccardi
122
Utilizzando questo metodo si potrà creare una macchina virtuale con il comando @xen-create-image@, e si dovranno indicare soltanto l'IP ed il nome della macchina stessa, con un comando come:
123
124 12 Amministratore Truelite
<pre>
125
xen-create-image --hostname=xentest.mydomain.it --ip=172.16.0.31 --role udev
126 15 Amministratore Truelite
</pre>
127 12 Amministratore Truelite
128 16 Simone Piccardi
(dove @--role@ è necessario per installare udev nell'ospite, che altrimenti non sarà in grado di utilizzare una console). 
129 12 Amministratore Truelite
130 16 Simone Piccardi
Si tenga presente che si potrà modificare uno qualunque dei parametri visti in precedenza passando il valore voluto sulla riga di comando, esprimendo l'assegnazione in forma di opzione estesa (cioè come @--parametro=valore@). 
131
132
Una volta lanciato il comando questo stamperà una serie di informazioni progressive sulla installazione, con qualcosa del tipo:
133
134 12 Amministratore Truelite
<pre>
135
General Information
136
--------------------
137
Hostname       :  xentest.mydomain.it
138
Distribution   :  lenny
139
Partitions     :  swap            128Mb (swap)
140
                  /               4Gb   (ext3)
141
Image type     :  full
142
Memory size    :  128Mb
143
Kernel path    :  /boot/vmlinuz-2.6.26-2-xen-686
144
Initrd path    :  /boot/initrd.img-2.6.26-2-xen-686
145
146
[...]
147
148
Creating Xen configuration file
149
Done
150
All done
151 15 Amministratore Truelite
152 12 Amministratore Truelite
153 15 Amministratore Truelite
Logfile produced at:
154
	 /var/log/xen-tools/xentest.ittig.cnr.it.log
155 12 Amministratore Truelite
</pre>
156 15 Amministratore Truelite
157 16 Simone Piccardi
e creerà automaticamente il file @xentest.mydomain.it.cfg@ sotto @/etc/xen@; a questo punto si potrà avviare la nuova macchina virtuale con: 
158
159 12 Amministratore Truelite
<pre>
160 15 Amministratore Truelite
xm create xentest.ittig.cnr.it.cfg
161 12 Amministratore Truelite
</pre>
162 16 Simone Piccardi
163 12 Amministratore Truelite
e verificarne l'avvio con:
164 16 Simone Piccardi
165 15 Amministratore Truelite
<pre>
166
xm console xentest.ittig.cnr.it.cfg
167 1 Amministratore Truelite
</pre>
168 15 Amministratore Truelite
169 16 Simone Piccardi
Si tenga presente però che per un bug degli script di creazione sulla macchina virtuale non viene configurato @/etc/inittab@ per attivare una console sulla interfaccia dedicata @/dev/hvc0@, per cui potrà essere necessario modificare lo stesso file a mano. Questo può essere fatto montando il volume logico (questi sono sempre creati nella forma @/dev/xenvg/hostname-disk@ e @/dev/xenvg/hostname-swap@) e modificando il file).