Progetto

Generale

Profilo

XenOnLennyHowto » Cronologia » Versione 13

Versione 12 (Amministratore Truelite, 24-08-2009 17:15) → Versione 13/16 (Amministratore Truelite, 24-08-2009 17:26)

[[TracNav(TOC)]] 
 = Installazione e gestione di Xen su Lenny = 

 [http://www.xensource.com Xen] è 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.  

 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. 

 Il meccanismo di funzionamento di Xen prevede che l'hypervisor lanci una 
 istanza privilegiata del sistema operativo ospite (una versione di Linux 
 modificata per essere eseguita dall'hypervisor) che viene chiamata '''Dom0''', 
 da questa sarà poi possibile creare ed eseguire le varie macchine virtuali, 
 chiamate '''DomU'''. 

 == Installazione di base == 

 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: 
 {{{ 
 aptitude install xen-linux-system-2.6.26-2-xen-686 
 }}} 
 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: 
 {{{ 
 aptitude install xen-tools 
 }}} 

 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: 
 {{{ 
 xenhost:~# xm dmesg 
 ... 
 (XEN) System RAM: 1982MB (2030012kB) 
 (XEN) Xen heap: 9MB (10084kB) 
 (XEN) Domain heap initialised: DMA width 32 bits 
 (XEN) PAE enabled, limit: 16 GB 
 (XEN) Processor #0 15:11 APIC version 16 
 (XEN) Processor #1 15:11 APIC version 16 
 (XEN) IOAPIC[0]: apic_id 4, version 17, address 0xfec00000, GSI 0-23 
 (XEN) Enabling APIC mode:    Flat.    Using 1 I/O APICs 
 (XEN) Using scheduler: SMP Credit Scheduler (credit) 
 (XEN) Detected 2304.832 MHz processor. 
 (XEN) AMD SVM: ASIDs enabled.  
 (XEN) HVM: SVM enabled 
 ... 
 }}} 
 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. 

 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 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: 
 {{{ 
 ... 
 (network-script network-bridge) 
 ... 
 #(network-script network-dummy) 
 }}} 
 (nel default la prima è commentata e la seconda no), se l'interfaccia che si 
 vuole utilizzare non è {{{eth0}}} occorrerà specificarla esplicitamente con: 
 {{{ 
 (network-script 'network-bridge netdev=ethX') 
 }}} 

 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: 
 {{{ 
 (dom0-min-mem 128) 
 }}} 
 (il valore è in Mb, ed il default è 196, eccessivo nella gran parte dei casi). 

 == La gestione delle macchine virtuali con gli xen-tools == 

 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: 
 {{{ 
 aptitude install lvm2 
 }}} 

 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: 
 {{{ 
 pvcreate /dev/sda3 
 vgcreate xenvg /dev/sda3  
 }}} 
 ed in seguito aggiungere eventuali altri dischi con: 
 {{{ 
 pvcreate /dev/sdb1 
 vgextend xenvg /dev/sdb1 
 }}} 
 (si consulti la documentazione di LVM o il relativo capitolo su 
 [http://labs.truelite.it/http://svn.truelite.it/documenti/corso.pdf Amministrare GNU/Linux] per i dettagli di gestione di LVM). 

 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: 
 {{{ 
 lvm = xenvg 
 }}} 
 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.  

 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: 
 {{{ 
 gateway     = 172.16.0.1 
 netmask     = 255.255.0.0 
 broadcast = 172.16.255.255 
 }}} 

 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: 
 {{{ 
 install-method = debootstrap 
 }}} 
 in questo caso è poi possibile anche indicare la distribuzione di default da 
 usare con: 
 {{{ 
 dist = lenny 
 }}} 
 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: 
 {{{ 
 xen-create-image --hostname=xentest.mydomain.it --ip=172.16.0.31 --role udev 
 }}} 
 (dove --role è necessario per installare udev nell'ospite, che altrimenti non 
 sarà in grado di utilizzare una console).  

 Si ma 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}}}). 

   

 Una volta lanciato il comando questo stamperà una serie di informazioni 
 progressive sulla installazione, con qualcosa del tipo: 
 {{{ 
 General Information 
 -------------------- 
 Hostname         :    xentest.mydomain.it 
 Distribution     :    lenny 
 Partitions       :    swap              128Mb (swap) 
                   /                 4Gb     (ext3) 
 Image type       :    full 
 Memory size      :    128Mb 
 Kernel path      :    /boot/vmlinuz-2.6.26-2-xen-686 
 Initrd path      :    /boot/initrd.img-2.6.26-2-xen-686 

 [...] 

 Creating Xen configuration file 
 Done 
 All done 


 Logfile produced at: 
	  /var/log/xen-tools/xentest.ittig.cnr.it.log 
 }}} 

 e creerà automaticamente il file {{{xentest.mydomain.it.cfg}}} sotto 
 {{{/etc/xen}}}; a questo punto si potrà avviare la nuova macchina virtuale 
 con: 
 {{{ 
 xm create xentest.ittig.cnr.it.cfg 
 }}} 
 e verificarne l'avvio con: 
 {{{ 
 xm console xentest.ittig.cnr.it.cfg 
 }}} 

 Si tenga presente però che per un bug degli script di creazione sulla macchina 
 virtale 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).