|
||
| Pubblicato il: 26.05.2009 | A cura di: Giovanni Orlandi |
La virtualizzazione è una tecnologia sempre più apprezzata dagli esperti di informatica che già da un decennio è sinonimo di sicurezza e strumento insostituibile per i programmatori che sviluppano software per più piattaforme. Proprio dieci anni fa, infatti, VMWare introduceva il primo software di virtualizzazione della piattaforma x86, ed oggi abbiamo deciso di ripercorrere gli sviluppi della tecnologia in un articolo diviso in due parti, la prima in cui ne affronteremo i principi fondamentali, facendo riferimento a come viene implementata, alle diverse soluzioni proposte e alle applicazioni che trova, e una seconda parte in cui proporremo una comparativa tra le applicazioni per la virtualizzazione dei sistemi operativi più apprezzate, come VMWare Workstation, Microsoft Virtual PC e SUN VirtualBox.
La virtualizzazione di una risorsa, hardware o software, consente di realizzare una copia, identica per funzionalità alla risorsa reale. Unità ottiche, spazio di archiviazione, sistemi operativi, divisione di un hard disk in unità logiche, costituiscono tutti esempi di risorse virtualizzabili.
Questo principio può essere quindi implementato sia a livello software che hardware o in maniera ibrida e tra i suoi vantaggi c’è quello di poter specificare le caratteristiche della risorsa virtualizzata, in maniera da ottimizzare la distribuzione delle risorse della macchina host, più avanti questo concetto diventerà chiaro. In ogni caso è necessaria una macchina fisica nella quale sia installato un sistema operativo host nel quale vengano realizzate ad alto livello le varie virtual machine dette guest, che saranno eseguite come se fossero normali programmi, ciascuna delle quali sarà poi dotata del software relativo e compatibilmente al tipo di virtualizzazione potrà essere anche installato un sistema operativo. Tali macchine sfrutteranno anche le risorse dell’host attraverso un software che agisce a basso livello, detto hypervisor.
Ad ogni modo, sfortunatamente, l’architettura IA-32, più comunemente conosciuta come x86, non è nativamente compatibile con quelli che sono i criteri di virtualizzazione di Popek e Goldberg, ai quali è dedicato uno dei capitoli successivi. Un altro concetto che è necessario definire per proseguire è quello di macchina virtuale di sistema o system virtual machine, ovvero un sistema in grado di eseguire la virtualizzazione di quello che è un full-set di risorse hardware di un PC standard, dalla CPU alle memorie.

La virtualizzazione dei sistemi operativi è una tecnica che consente di eseguirne diversi contemporaneamente sulla stessa macchina. Avviare un OS virtualizzato richiede pochissimo tempo e, nel caso si verificasse un crash, è sufficiente chiudere la macchina virtuale e riaprirla alla stessa velocità con cui si lancia un’applicazione. Inoltre, la possibilità di eseguire più sistemi operativi sulla stessa macchina, consente ad esempio di passare le richieste in ingresso ad una delle molteplici copie di Linux su un server, mentre quella in crash viene riavviata.
La maggior parte del software per la virtualizzazione consente di eseguire snapshot di un sistema operativo in esecuzione, in questo modo è possibile ripristinarne l’esecuzione esattamente nello stato registrato dallo snapshot, utilissima risorsa in caso di problemi, più veloce della reinstallazione del SO, o del ripristino dell’immagine del disco, come avremmo fatto ad esempio con Norton Ghost o con il Time Capsule di Apple.
Un altro vantaggio offerto dalla virtualizzazione è a favore del web hosting. Con il virtual hosting, ciascun server può gestire più domini, venendo incontro a una differenziazione della domanda e realizzando offerte sempre più su misura e quindi riducendo al minimo indispensabile lo spreco delle risorse.