Articolo precedente: Introduzione a XenServer
Nel precedente numero abbiamo introdotto l’hypervisor XenServer, dalle origini del progetto fino ad oggi, per poi descriverne anche la struttura e i principi di funzionamento. In questo nuovo articolo andiamo a vedere da vicino come installarlo ed iniziare a utilizzarlo. L’immagine ISO è disponibile a QUESTO indirizzo, dove è possibile anche accedere sia ai Software Development Kit, sia alle patch e alla documentazione.
Come per gli hypervisor concorrenti, l’installazione è consigliata su hardware supportato (HCL disponibile QUI), ma per uso di test è possibile installare Xen anche in configurazione whitebox su hardware non supportato ufficialmente: a questo proposito è bene prestare attenzione alla scelta di chipset e schede di rete (Intel IHC e NIC Realteck sono da preferirsi). Una volta preparati l’hardware e la ISO, si può creare un supporto USB avviabile (utilizzando utility gratuite come UnetBootin o Rufus) e iniziare l’installazione selezionando il boot da supporto USB.
Le prime schermate della procedura ricordano molto quelle del sistema CentOS, su cui Xen è stato sviluppato: durante queste fasi possiamo selezionare il layout della tastiera, l’accettazione della licenza EULA, eventuali driver aggiuntivi e, naturalmente, il disco di installazione. Naturalmente è richiesto l’inserimento della password di root, la scelta della NIC dedicata alla gestione e la relativa configurazione IP (statico, dinamico etc.). Una volta terminata la procedura di installazione, viene richiesto il riavvio dell’host che, una volta terminato, presenta all’utente una schermata di riepilogo con la possibilità di modificare alcuni parametri di base o lanciare la shell.
Come descritto nel precedente articolo, Xen è gestibile completamente in linea di comando direttamente sull’host, ma per comodità operativa è possibile scaricare ed eseguire su una macchina della stessa rete il client grafico Windows XenCenter.
Uno sguardo all’interfaccia grafica
Una volta installato il client di gestione, il primo passaggio necessario è l’aggiunta dell’host da gestire: si può selezionare la voce Add dal menu Server, oppure usare l’icona Home. Saranno richieste le credenziali di accesso e l’indirizzo IP. Una volta aggiunto e selezionato il server l’utente può scorrere tra i vari tab e consultare i parametri di memoria, rete e storage, oppure aggiungere il server ad un dominio Active Directory. Nella zona inferiore sinistra si trova l’area delle notifiche, dove il sistema avvisa in caso di presenza aggiornamenti o di eventi da segnalare. Naturalmente dopo la prima installazione è consigliato verificare ed eventualmente installare gli aggiornamenti disponibili.
Alcuni update possono richiedere il riavvio, che viene gestito in automatico dal sistema e applicato solo in caso di necessità. Ma è importante fermare l’esecuzione delle macchine virtuali per evitare interruzioni di servizio: in configurazioni multi-nodo invece, è possibile migrarle temporaneamente su un host di appoggio. Interessante la possibilità di effettuare l’upgrade di un gruppo di host XenServer dalla versione 6.x alla 7 direttamente dall’interfaccia grafica (Tools -> Rolling Pool Upgrade).
Rete e Storage
Due aspetti fondamentali della infrastruttura virtuale sono lo storage e il networking. Partendo da quest’ultimo, XenServer permette di creare due tipologie principali di rete: Internal network ed External network. Le reti di tipo Internal sono completamente virtuali, gestite internamente dall’hypervisor e permettono di mettere in comunicazione le macchine virtuali tra di loro, senza accesso da/verso il mondo esterno. Le reti di tipo External invece, sono bridge che permettono di associare le porte fisiche dell’host (Phisical InterFace) alle porte di rete delle macchine virtuali (Virtual InterFace). In presenza di schede di rete multiple sul server, si possono creare anche dei Bond, ovvero una interfaccia logica che associa più NIC in modo da ottenere maggiori performance e fornire fault tolerance. Xen supporta anche le VLAN e usa internamente Open Virtual Switch (OVS) per gestire il bridge distribuito tra gli host di uno stesso pool.
Lo storage in XenServer è organizzato in Storage Repository (SR), ogni SR è un contenitore logico che può essere composto da una o più LUN remote (SAN fibra/FCoE, oppure iSCSI) o share NFS. Nella terminologia Xen, uno Storage Repository è composto da più Physical Block Devices (PDB) e il tutto è gestito con LVM che dunque – in caso di necessità – permette di espandere una SR aggiungendo nuovo spazio. Per permettere la migrazione live delle macchie virtuali con il relativo storage (l’equivalente dello storage vmotion in vSphere) è naturalmente necessario che l’SR sia condiviso tra gli host del cluster. In caso contrario la migrazione sarà possibile, ma si tratterà sostanzialmente di una copia da un disco all’altro con un conseguente impatto negativo sulle performance.
Come spazio di memorizzazione aggiuntivo per dati meno “preziosi”, come le immagini ISO dei media di installazione o gli snapshot temporanei durante un backup, possiamo anche creare una SR usando dischi locali al server fisico, o share NFS/SMB. Questa operazione non è disponibile dall’interfaccia grafica ma si può agevolmente realizzare da linea di comando. In fase di creazione delle macchine virtuali, alla VM verrà assegnata una porzione di SR per creare il proprio disco virtuale (VDB, Virtual Block Device) o logical volume dedicato. E’ anche possibile scegliere come supporto per i dischi il classico file in formato VHD.
Tramite l’interfaccia possiamo anche agganciare alle VM guest un disco già definito a priori (ad esempio una LUN iSCSI o una unità appartenuta ad altra guest), anche in modalità sola lettura, oppure usare la tecnologia PCI-Passtrough per assegnare direttamente alla VM un dispositivo PCI interno all’host fisico. In fase di sviluppo ci sono tecnologie molto interessanti, come driver RawHBA che consiste nella mappatura diretta tra una LUN su fibra ottica e disco virtuale, oppure un backend CEPH/GlusterFS che implementa una sorta di SAN virtuale ottenuta condividendo i dischi locali, con un risultato simile all’architettura vSAN di VMware.
La prima macchina virtuale
Una volta preparato l’ambiente e viste le caratteristiche di base, possiamo iniziare a creare le macchine virtuali. Selezionando la voce new VM dalla barra superiore dell’interfaccia troveremo una lista predefinita di template tra cui scegliere. Nello step successivo decidiamo il nome della macchina guest, se vogliamo inserire una breve descrizione e in seguito il sistema ci chiede di scegliere la modalità di installazione.
Nel caso già si disponga di un repository contenente le immagini ISO dei sistemi operativi possiamo selezionare quello: in alternativa si può utilizzare l’installazione direttamente da Internet (ad esempio nel nostro test, usando http://ftp.debian.org/debian nella casella Install from URL). Nelle nostre prove abbiamo installato anche un sistema CentOS 6 utilizzando l’url http://mirror.centos.org/centos/6/os/i386/.
I parametri successivi riguardano quante risorse CPU e memoria riservare alla macchina virtuale, la definizione/assegnazione del disco e le interfaccia rete virtuali. Dopo aver avviato l’operazione è possibile controllare lo stato di avanzamento in attesa della conclusione. L’installazione di una vm Windows è molto simile: è sufficiente rendere accessibile il supporto ed eseguiamo il boot come se fosse un normale pc, seguito poi dai classici passaggi dell’installazione Microsoft.
Abbiamo usato questa guest per provare la funzionalità di snapshot: è sufficiente selezionare l’omonima tab e poi la voce take snapshot, ed in pochi secondi avremo a disposizione un salvataggio dello stato della macchina virtuale. Come ogni operazione, anche questa ha l’equivalente comando via command-line: nella pratica possiamo sfruttare il comando xe vm-snapshot seguito dagli opportuni parametri, come base per i nostri script di backup delle macchine virtuali: di seguito alcuni esempi pratici.
xe vm-snapshot uuid=8ac95696-94f3-83c1-bc89-8bb2603f832b new-name-label=testvmsnapshot
xe vm-export vm=b15c0531-88a5-98a4-e484-01bc89131561 filename=vm-backup.xva
Come in altri prodotti di virtualizzazione, possiamo usare questo snapshot come “modello” per creare un template o una nuova macchina virtuale.
xe template-param-set is-a-template=false ha-always-run=false uuid=b15c0531-88a5-98a4-e484-01bc89131561
Perché usare XenServer?
XenServer rappresenta un buon compromesso tra performance, stabilità e costi: con un investimento limitato in termini di hardware si può gestire una farm anche estesa di macchine virtuali. Inoltre la sua architettura è aperta, modulare, automatizzabile e l’SDK fornisce strumenti per una automazione molto avanzata. Inoltre rimane una scelta particolarmente indicata nel caso in cui si voglia fornire agli utenti una infrastruttura di desktop virtualizzati, dove si possono sfruttare i vantaggi dell’integrazione con gli altri prodotti Citrix.
Naturalmente Xen presenta anche qualche limite, tra cui il miglioramento dell’interoperabilità tra piattaforme diverse, oltre a mancare alcune caratteristiche dei prodotti concorrenti (ad esempio la possibilità di espandere “a caldo” le risorse RAM e CPU delle macchine virtuali senza downtime). In generale se ma se la nostra architettura IT non ha bisogno di tali feature e vogliamo un prodotto di virtualizzazione solido, stabile, performante e con una grande azienda alle spalle, XEN rappresenta una scelta da considerare.