Tipi di virtualizzazione

Scritto il 11/09/2009
 

La virtualizzazione dei sistemi operativi – Capitolo 1.2

Il problema della virtualizzazione è stato affrontato in diversi modi. Tutte le quattro metodologie di virtualizzazione attualmente impiegate danno l’illusione di utilizzare un sistema operativo stand alone, non virtualizzato. Esse sono l’emulation, la full virtualization, la paravirtualization e la operating system level virtualization.

Emulation

Con l’emulazione l’hypervisor simula l’intero hardware set che permette al sistema operativo guest di essere eseguito senza alcune modifiche. Il software di virtualizzazione si incarica di presentare al sistema operativo guest un’architettura hardware completa a lui nota, indipendentemente dall’architettura hardware presente sulla macchina host.

Fig. 1.2: L’emulatore simula un’architettura hardware diversa da quella fisica

I limiti in termini di prestazioni e di funzionalità di questo sistema sono facilmente immaginabili. Infatti gli emulatori presentano al sistema operativo guest un’architettura hardware standard precludendo quelle che potrebbero essere le funzionalità alle quali siamo abituati, ad esempio quelle implementate in hardware. Inoltre deve interfacciare la CPU, la memoria e l’I/O tra sistema host e sistema guest.

Per quanto riguarda la memoria, viene generalmente assegnata alla macchina virtuale una sequenza di indirizzi di memoria che utilizza in modo esclusivo e l’emulatore somma all’indirizzo della cella richiesta una costante.

Un modo di gestire la CPU invece consiste nell’interpretare il flusso di istruzioni provenienti dal sistema guest ed eseguire sul processore host una serie di istruzioni semanticamente equivalenti. Questo può essere reso possibile con l’assegnazione di una variabile per ogni registro e flag della CPU simulata. Questo carico di lavoro dell’emulatore rende difficoltoso l’uso di questa tecnica di virtualizzazione quando bisogna emulare sistemi guest che richiedono processori di velocità equivalente al processore dell’host.

Full Virtualization

La Full Virtualization detta anche Native Virtualization è molto simile alla Emulation. Come nell’emulazione, i sistemi operativi guest girano senza alcuna modifica in macchine virtuali ospitate sul sistema host. La differenza rispetto all’emulazione sta nel fatto che i sistemi operativi guest devono essere compatibili con l’architettura hardware della macchina fisica.

In questo modo molte istruzioni possono essere eseguite direttamente sull’hardware senza bisogno di un software di traduzione garantendo prestazioni superiori rispetto all’emulazione. Recentemente (v. Fig. 1.1 Timeline della virtualizzazione) Intel e AMD hanno introdotto delle specifiche sugli ultimi modelli di processore con architettura x86 che garantiscono miglioramenti delle performance delle macchine virtuali.

Esempi di software che utilizzano la full virtualization sono VMware, Parallel Desktop, Virtual Box, Win4Lin Pro e Xen, limitatamente ai sistemi operativi proprietari non modificabili.

Fig. 1.3: La Full Virtualization presenta al sistema operativo guest la stessa architettura hardware presente sull’host fisico

Paravirtualization

Un’altra tecnica di virtualizzazione è la paravirtualization. L’hypervisor presenta alle macchine virtuali un versione modificata dell’hardware sottostante, mantenendone tuttavia la medesima architettura. Il sistema operativo in esecuzione sulle macchine virtuali è invece modificato per evitare alcune particolari chiamate di sistema. Non viene invece modificata l’Application Binary Interface1 e pertanto le applicazioni possono essere eseguite senza modifiche.

Questa tecnica permette di ottenere un decadimento delle prestazioni minimo rispetto al sistema operativo non virtualizzato, dato che le istruzioni provenienti dalle macchine virtuali vengono eseguite quasi tutte direttamente sul processore senza che intervengano modifiche. Esempi di paravirtualizzazione sono Xen e User-mode Linux.

Fig. 1.4: La Paravirtualization è simile alla full virtualization, ma è necessario modificare il sistema operativo guest per ottimizzare l’esecuzione sull’ambiente virtualizzato

Operating System level Virtualization

Una quarta tecnica di virtualizzazione è la cosiddetta Operating System level Virtualization nella quale non si utilizza un Hypervisor, ma la virtualizzazione è creata utilizzando copie del sistema operativo installato sull’host.
I sistemi guest creati saranno a tutti gli effetti istanze del sistema operativo host con un proprio file system, configurazione di rete e applicazioni.

Il vantaggio principale di questa tecnica è il miglior utilizzo delle risorse grazie alla condivisione di spazi di memoria. Essendo i sistemi operativi delle macchine guest equivalenti a quello della macchina host, le istanze guest non richiederanno un kernel privato, ma utilizzeranno lo stesso con un conseguente minor utilizzo di memoria fisica. Questo è tuttavia il principale svantaggio dei questa tecnica, che la rende inutilizzabile da coloro che vogliono eseguire sistemi operativi diversi sullo stesso host.

Un altro punto debole è il limitato isolamento tra le macchine guest. Un problema di stabilità o di performance di un solo guest può influire negativamente sugli altri.

Esempi di Operating System level Virtualization sono Virtuozzo, Linux VServers, Solaris Containers, HPUX 11i Secure Resource Partitions.

Fig. 1.5: La Operating System level Virtualization mette a disposizione ai sistemi guest l’immagine del sistema operativo in esecuzione sull’host.

Torna all’Indice »

Serverlab