• Non ci sono risultati.

4.2 Alcune tecniche utilizzate

4.2.2 La virtualizzazione delle risorse

La virtualizzazione consiste nella creazione di una versione virtuale di una risorsa normalmente fornita sicamente ed è una tecnologia il cui uso si sta sempre più dif- fondendo nei centri di calcolo anche come metodologia di consolidamento dei server. Qualunque risorsa hardware o software, quali il sistema operativo, la memoria, lo spazio disco, etc, può essere virtualizzata. La virtualizzazione può essere eettuata sia a livello software che a livello hardware.

La virtualizzazione del sistema operativo è uno degli esempi più comuni. In modalità software, la virtualizzazione richiede un sistema operativo sul quale eseguire il software di virtualizzazione, il cui compito è quello di creare un layer che astragga dall'hardware e dal software sottostante e sul quale vanno in esecuzione le macchine virtuali.

L'architettura x86 non supporta nativamente la virtualizzazione, ma recente- mente sono state introdotte estensioni all'insieme di istruzioni della CPU, sia per processori Intel che per AMD, che hanno permesso di sormontare vari problemi tec- nici legati alla virtualizzazione. Varie sono le tecniche implementative disponibili a seconda dello scopo che ci si pregge. Gli aspetti più rilevanti da considerare sono le prestazioni e la essibilità necessarie nel proprio scenario applicativo. La essibilità nella virtualizzazione rappresenta il grado di dipendenza della risorsa virtualizzata

dall'hardware e del sistema operativo, ovvero dalla macchina ospitante.

L'indipendenza viene fornita dal cosiddetto `abstraction layer` ed è inversamen- te proporzionale alle prestazioni della risorsa virtuale risultante. In altri termini, un abstraction layer complesso ore grande essibilità, ma prestazioni più basse. Generalmente si distinguono tre tipi di virtualizzazione:

1. Full virtualization (o native virtualization): emula completamente l'hard- ware e rende possibile ospitare sistemi operativi senza richiedere alcuna mo- dica. In questo caso, il codice binario è eseguito direttamente oppure viene tradotto o adattato per l'architettura del computer. La traduzione viene appli- cata laddove il codice di partenza non possa essere usato perché le istruzioni che esso contiene non sono virtualizzabili. Invece il codice a livello utente è sem- pre eseguito direttamente dal processore. Il sistema operativo contenuto nella macchina virtuale è indipendente dal fatto di trovarsi su un vero hardware per- ché l'abstraction layer fornisce periferiche e componenti hardware (cpu, ram, dischi, etc.) per ogni ambiente virtuale. Le prestazioni sono minori di quelle che si riscontrano in una ambiente non virtualizzato a causa dell'elaborazione aggiuntiva necessaria per la traduzione del codice.

2. Operating system-level virtualization (o Single Kernel Image (SKI)): si basa su un'esecuzione `leggera` del sistema operativo in cui il sistema ope- rativo `master` si duplica in memoria. Il sistema operativo ospite esegue esat- tamente lo stesso sistema operativo del suo sistema principale: la dierenza è che il kernel non viene rimandato in esecuzione.

3. Para virtualizzazione: prevede l'uso di un sistema operativo modicato (in genere i cambiamenti sono limitati al kernel e ad alcune librerie). Il sistema viene modicato perché alcune funzioni non sono compatibili con la virtua- lizzazione (come le chiamate di sistema, l'amministrazione della memoria, la gestione dell'orologio, etc.). Sistemi non modicabili, come la varie versioni di Microsoft Windows, non possono funzionare usando la para virtualizzazione. Le prestazioni sono simili a quelle ottenibili con un sistema operativo in fun- zione direttamente sull'hardware. La macchina virtuale non simula l'hardware in toto, ma ore speciche API il cui supporto richiede però la modica del sistema operativo ospite.

4.2. ALCUNE TECNICHE UTILIZZATE 63

In questo lavoro di tesi la virtualizzazione è stata prevalentemente utilizzata come tecnica di ottimizzazione e consolidamento delle risorse. Tra le diverse tecnologie di virtualizzazioni disponibili, la scelta è ricaduta sul software Xen [82].

Xen

La para virtualizzazione è la tecnica adottata da Xen, un prodotto Open Source rilasciato sotto licenza GPL per piattaforma x86 e compatibili sviluppato presso il Computer Laboratory dell'Università di Cambridge. Xen non mira a creare un'e- mulazione dell'hardware di un generico computer x86, ma piuttosto di regolare e controllare l'accesso alle risorse siche della macchina reale da parte delle varie istanze virtuali. Questo tipo di approccio consente di contenere il decadimento delle prestazioni rispetto all'esecuzione non-virtualizzata, poiché le istruzioni provenienti dalle macchine virtuali vengono eseguite quasi tutte direttamente sul processore, evitando dunque l'intervento di un sistema operativo aggiuntivo che si ponga tra la macchina virtuale e le risorse siche. Tuttavia questo approccio richiede un adat- tamento del sistema operativo destinato a girare sulla macchina virtuale (guest) al ne di renderlo compatibile con Xen. Senza questo adattamento, alcune chiamate di sistema del kernel non sarebbero possibili. L'aspetto vantaggioso è che le appli- cazioni non necessitano ricompilazione, in quanto i kernel adattati a Xen espongono la stessa Application Binary Interface (ABI). Intel ha contribuito al progetto Xen introducendo il supporto per la sua tecnologia VT-X denominata Vanderpool [83]: se eseguito su sistemi dotati di questa caratteristica, Xen permette di creare delle macchine virtuali che consentono ai sistemi operativi ivi installati di andare in ese- cuzione senza modiche. Una tecnologia simile, denominata AMD-V [84], è stata sviluppata da AMD al ne di ottenere lo stesso risultato su processori AMD. Ambiti applicativi

La tecnologia Xen è stata scelta perchè ben supportata dalle distribuzioni di sistema operativo basate su RedHat ES [85], come Scientic Linux [86], largamente utilizzate in ambito EGEE; uno dei vantaggi della virtualizzazione, a fronte di una leggera per- dita prestazionale rispetto alla macchina sica, che da recenti evidenze sperimentali è stato visto essere nell'ordine del 5% [87], è la completa indipendenza dall'hardware installato. In altre parole, le macchine virtuali sono simulate con hardware standard

e ciò le rende totalmente estranee al reale hardware della macchina su cui viene eseguito il software di virtualizzazione.

Questa caratteristica agevola le operazioni che richiedono interventi di natura sistemistica a livello hardware: per esempio, è possibile gestire interventi che richie- derebbero lo spegnimento di un server, come upgrade o sostituzione dei componenti hardware, sul quale sono in esecuzione macchine virtuali, semplicemente migrando le macchine virtuali su un altro server, anche se con caratteristiche hardware diver- se. Tale migrazione, sotto certe condizioni, può essere fatta `a caldo`, cioè mentre le macchine virtuali sono in esecuzione, in maniera totalmente trasparente agli utenti e senza interruzioni di servizio.

Un altro vantaggio importante della virtualizzazione è quello di poter snellire drasticamente le procedure di backup e disaster recovery: mantenendo una copia giornaliera delle immagini virtualizzate delle risorse, è possibile un rapido e semplice ripristino in caso di un qualsiasi malfunzionamento.

Inne, la virtualizzazione permette di concentrare i servizi gestiti su un numero inferiore di server e quindi di abbattere il costo dell'infrastruttura hardware sia in fase di acquisto che in fase di gestione e manutenzione, mantenendo al tempo stesso i servizi tra loro indipendenti utilizzando macchine virtuali distinte.