• Non ci sono risultati.

La virtualizzazione hardware di un computer, quindi, è il processo per virtualizzare:

N/A
N/A
Protected

Academic year: 2022

Condividi "La virtualizzazione hardware di un computer, quindi, è il processo per virtualizzare:"

Copied!
20
0
0

Testo completo

(1)

VIRTUALIZZAZIONE

(2)

La virtualizzazione

In informatica, il termine virtualizzazione fa riferimento all’atto di creare una versione virtuale, anziché reale, di qualcosa. In tale definizione rientrano piattaforme hardware di computer, dispositivi di memorizzazione e risorse di rete. La virtualizzazione nasce negli anni 1960, come tecnica per dividere tra più applicazioni le risorse di sistema fornite dai computer mainframe. Da allora l’uso del termine è stato esteso anche ad altri contesti.

Virtualizzazione hardware

Con il termine “virtualizzazione” ci si riferisce alla possibilità di astrarre le componenti hardware (CPU, RAM e Storage) degli elaboratori con il fine di renderle disponibili al software in forma di risorsa virtuale. Tramite questo processo è quindi possibile installare sistemi operativi su hardware virtuale; l’insieme delle componenti hardware virtuali (Hard Disk, RAM, CPU, scheda di rete) prende il nome di macchina virtuale e su di esse può essere installato il software come, appunto, i sistemi operativi e relative applicazioni. Tale tecnica è applicabile sia su sistemi desktop che su sistemi server.

La virtualizzazione hardware di un computer, quindi, è il processo per virtualizzare:

• l’intero hardware di un computer

• alcune astrazioni logiche dei suoi componenti

• solamente le funzionalità richieste per eseguire svariati sistemi operativi.

La virtualizzazione nasconde le caratteristiche fisiche di una piattaforma computazionale agli utenti, presentando invece una piattaforma computazionale astratta. Agli albori della virtualizzazione, il software che controllava la virtualizzazione era chiamato “Control Program”, oggi si usa invece il termine “hypervisor” oppure “virtual machine monitor” (VMM).

Come detto, il termine virtualizzazione è stato coniato negli anni 1960 per riferirsi ad una macchina virtuale, ai tempi chiamata anche “pseudo-macchina”, un termine preso dal mainframe sperimentale IBM M44/44X. La creazione e la gestione delle macchine virtuali è stata chiamata anche “virtualizzazione della piattaforma” o, più recentemente, “virtualizzazione dei server”. La virtualizzazione della piattaforma è effettuata su una data piattaforma hardware da un software host (ospitante) che crea un ambiente simulato, una macchina virtuale (Virtual Machine, VM), per

(3)

il software guest (ospite). Il software guest viene eseguito come se fosse in esecuzione direttamente sull’hardware fisico con alcuni importanti punti di attenzione. L’accesso alle risorse di sistema come l’accesso alla rete, il display, la tastiera e il disco fisso, è generalmente gestito in maniera più ristretta, ad esempio il sistema guest non può accedere a tutti i dispositivi hardware del guest, oppure può essere limitato solo ad alcune funzionalità del dispositivo in base alle politiche di accesso implementate dall’host di virtualizzazione.

La virtualizzazione tipicamente comporta una perdita di performance, sia per quanto riguarda le risorse richieste per eseguire l’hypervisor, sia per le performance ridotte della macchina virtuale rispetto a quelle della macchina fisica.

I programmi di “virtualizzazione” consentono di eseguire dei PC virtuali sul proprio PC (reale). Un PC virtuale diventa, quindi, un programma in esecuzione sul computer (chiamato macchina virtuale). Il disco fisso del PC virtuale sarà simulato da un singolo (grosso) file. Il PC virtuale è un PC a tutti gli effetti:

• è possibile installare un sistema operativo diverso da quello del PC reale. Ad es. Linux su Windows, Windows su Linux, Windows su MacOS, …

• i programmi eseguiti dal PC virtuale non avranno accesso ai dati del PC reale (ambiente protetto): utile per eseguire programmi che non vogliamo installare nel PC reale perché pericolosi (origine sospetta), invasivi, o non adatti al sistema operativo del PC reale

Che differenza c’è tra server virtuale e un server fisico?

Un server virtuale ha tutte le potenzialità e le capacità di un server reale o fisico. L’unica differenza è che un server dedicato fisico mette a disposizione la totalità delle risorse hardware al solo utente. Nel caso di un server dedicato virtuale, le risorse hardware sono condivise con gli altri ospiti dell’infrastruttura, ma sono logicamente assegnate in maniera esclusiva agli utenti. Quindi, in un server fisico dedicato l’utente è “inquilino esclusivo” sia delle risorse hardware che software, mentre in un server virtuale dedicato (VPS), l’utente è inquilino esclusivo delle risorse software ma è un “condomino” delle risorse hardware

Un server virtuale privato o Virtual Private Server (VPS), quindi, è un server collegato alla rete internet che consente di installare qualsiasi tipo di software in maniera personalizzata senza richiedere alcun tipo di intervento operativo da parte del provider. Ogni utente del server virtuale

(4)

è come se avesse un proprio server dedicato, quindi ha la sua RAM, la sua quota di CPU, il suo albero delle cartelle e tutto il resto. Il vantaggio principale è il costo ridotto rispetto a un analogo server fisico e il fatto di poter operare su un sistema altamente scalabile e configurabile, con la garanzia di backup automatici, continuità elettrica e di connessione alla rete.

A livello aziendale lato server, le tecnologie di virtualizzazione vengono utilizzate per disporre di un certo numero di sistemi operativi su un numero minore di piattaforme hardware, spesso anche in modalità/configurazione cluster di ridondanza (fail-over) o di load balancing.

I cluster hanno le seguenti caratteristiche: i vari computer risultano come una singola risorsa computazionale e le varie componenti sono risorse dedicate al funzionamento dell'insieme; il server cluster è quindi un server ad altissime prestazioni poiché, invece di gravare su un'unica macchina standalone, suddivide il carico di lavoro (quindi, ad esempio, funzioni di mail server, web server, database server e file server) su più.

Il fail-over è un sistema di salvataggio nel quale le funzioni di una componente di un sistema, come ad esempio un processore, un server, una rete un database e altri, vengono inviate ad una seconda componente quando la prima ha un problema. Viene utilizzato per rendere i sistemi più resistenti ai problemi di errori.

In informatica il load balancing, in italiano bilanciamento del carico, è una tecnica utilizzata nell'ambito dei sistemi informatici che consiste nel distribuire il carico di elaborazione di uno specifico servizio, ad esempio la fornitura di un sito web, tra più server, aumentando in questo modo scalabilità e affidabilità dell'architettura nel suo complesso. In pratica se arrivano 10 richieste per una pagina web su un cluster di 3 server, alle prime 3 risponderà il "primo" server, a 3 il "secondo" ed alle ultime 4 il "terzo".

La scalabilità deriva dal fatto che, nel caso sia necessario, si possono aggiungere nuovi server al cluster, mentre la maggiore affidabilità deriva dal fatto che la rottura di uno dei server non compromette la fornitura del servizio (fault tolerance) agli utenti; non a caso i sistemi di load balancing in genere integrano dei sistemi di monitoraggio che escludono automaticamente dal cluster i server non raggiungibili ed evitano in questo modo di far fallire una porzione delle richieste di servizio degli utenti. Viene da sé che affinché l'architettura sia in high availability (HA) anche il sistema di load balancing deve essere costituito da un cluster in HA.

(5)

Per ottenere il load balancing in genere si interviene o a livello applicazioni o di rete della pila ISO/OSI. Nel primo caso si ha una maggiore flessibilità, non sempre utile, ma nel secondo caso si riescono a gestire moli di traffico decisamente maggiori.

Esistono diverse soluzioni sia hardware che software. Nell'ambito del software libero una buona soluzione è Linux Virtual Server.

Motivi per virtualizzare

Diversi fattori influiscono sulla scelta di utilizzare un’infrastruttura virtualizzata piuttosto che una fisica. In generale la virtualizzazione può essere utilizzata in svariate situazioni, con diversi vantaggi tra cui:

• Consolidamento dell’infrastruttura server: molti piccoli server fisici sono sostituiti da un solo server fisico con prestazioni superiori in modo da ottimizzare il tempo di utilizzo di risorse hardware costose come la CPU. Sebbene l’hardware sia consolidato, tipicamente i sistemi operativi non lo sono. Invece, ogni OS che è eseguito in una macchina fisica è convertito in un distinto OS che viene eseguito in una macchina virtuale. Il nuovo server, grazie alle maggiori capacità hardware, può ospitare numerose macchine virtuali guest. In questo caso si parla di trasformazione Physical-to-Virtual (P2V). Il consolidamento dei server ha inoltre il beneficio di ridurre il consumo di energia elettrica. Un server ha un consumo medio di 425 W. La società VMWare, nota fornitrice di soluzioni per la virtualizzazione, sostiene che attraverso la virtualizzazione è possibile ridurre il consumo hardware di un rapporto di 15:1.

• Una macchina virtuale è più facile da controllare e ispezionare dall’esterno rispetto a una macchina fisica e la sua configurazione è più flessibile. Questa possibilità è estremamente utile nello sviluppo dei kernel dei sistemi operativi oltre che nella didattica dei sistemi operativi.

• Una nuova macchina virtuale può essere inizializzata su richiesta, senza necessità di attendere l’arrivo fisico del nuovo hardware.

• Una macchina virtuale può essere facilmente ricollocata da una macchina fisica a un’altra.

Si pensi ad esempio a un venditore che può portare da un cliente una copia di una

(6)

macchina virtuale con il software in versione dimostrativa sul proprio portatile senza bisogno di fare modifiche al sistema operativo sul laptop.

• L’indipendenza hardware: il software, e in particolar modo il sistema operativo, è strettamente legato all’hardware sottostante. Se quindi per qualche motivo un’installazione di un server deve essere spostata o clonata su un’altra macchina, si dovranno tenere in conto diversi problemi d’incompatibilità hardware (ad esempio si dovranno installare tutti i driver mancanti del nuovo hardware). Una delle caratteristiche della virtualizzazione è di creare livelli di astrazione tali per cui il sistema operativo non vede l’hardware fisico bensì un hardware virtuale. In questo modo l’amministratore può spostare o clonare un sistema su altre macchine che eseguono lo stesso ambiente di virtualizzazione senza preoccuparsi dei dettagli fisici (modello delle schede di rete, schede grafiche, chipset e così via).

• La riduzione dei server fisici: le soluzioni hardware/software per la virtualizzazione permettono l’esecuzione di diverse macchine virtuali su un solo server fisico con il vantaggio di ridurre i consumi energetici, il calore generato (sono necessari impianti di condizionamento meno potenti), i guasti hardware, i tempi tecnici per il montaggio e il cablaggio, il numero di armadi rack, lo spazio dedicato in sala macchine e il relativo cablaggio. Molte aziende, infatti, hanno visto crescere vistosamente il numero dei server proprio a causa dell’aumento dei servizi da fornire ai propri utenti. Attraverso la virtualizzazione si possono eseguire più macchine virtuali nella stessa macchina fisica riducendo il numero dei server di 10 volte o più. Il consolidamento ad un numero inferiore di server permette, quindi, una notevole riduzione dei costi legati all’energia utilizzata per alimentare i server e per mantenere la temperatura ambientale adatta alle sale server.

Inoltre si riducono i costi di acquisto e i canoni di manutenzione dei server fisici.

• La creazione di ambienti di test: capita frequentemente che su un sistema in produzione si debbano apportare delle modifiche senza sapere quali siano le conseguenze: ad esempio l’installazione di un aggiornamento del sistema operativo o soprattutto di un service pack non è un’operazione priva di rischi. La virtualizzazione permette la replica immediata di una macchina virtuale per poter effettuare tutti i test di stabilità richiesti. Ovviamente, come ogni altra tecnologia, l’uso della virtualizzazione porta inevitabilmente a degli inconvenienti che variano a seconda dello scenario applicativo e devono essere valutati prima di avviare la virtualizzazione.

(7)

• La standardizzazione delle installazioni: grazie all’astrazione dell’hardware è possibile preparare una sola volta le immagini di ambienti omogenei (come ad esempio quello delle postazioni di lavoro o server di sviluppo) comprensivi di sistema operativo, applicazioni e configurazioni particolari (ad esempio dominio, posta elettronica, LDAP, policy di sicurezza, ecc.…).

• Anche grazie a questa facilità di ricollocazione, le macchine virtuali possono essere usate in scenari di disaster recovery.

Non tutti sono al corrente di come la virtualizzazione possa essere implementata anche in infrastrutture aziendali molto grandi, portando una evidente riduzione dei costi hardware e dei consumi energetici, tempi di implementazione estremamente ridotti.

È noto, infatti, che una crescita in quantità delle applicazioni e dei server, porta inevitabilmente a problematiche come:

• aumento dei costi in termini di spazio (unità di armadio, spazio impegnato da cavi, ecc.)

• consumo di elettricità del nuovo server

• connettività (costo delle connessioni, delle schede in fibra ottica per eventuali collegamenti, porte impegnate sugli switch)

• consumo di elettricità dei condizionatori per raffreddare il calore prodotto dal nuovo server e di utilizzo delle risorse macchina.

Va tuttavia tenuto conto che, quando un elevato numero di macchine virtuali è in esecuzione in maniera concorrente sullo stesso host fisico, ogni macchina virtuale può avere delle performance instabili che dipendono fortemente dal carico di lavoro imposto sul sistema dalle altre VM, a meno che delle tecniche specifiche non siano usate per l’isolamento temporale tra le macchine virtuali.

Vi sono diversi approcci alla virtualizzazione di piattaforma. Alcuni scenari possono essere:

• Esecuzione di una o più applicazioni che non sono più supportate dal sistema operativo host: una macchina virtuale con un OS guest può consentire a tali applicazioni di essere eseguite senza bisogno di modifiche. Questo scenario fa quindi riferimento al cosiddetto legacy software, tipologia di software ormai datato ma che per motivi vari, come costi troppo elevati, non può o non vuole essere modificato. Esempi classici sono i sistemi di prenotazione aerea o sistemi per le banche.

(8)

• Valutazione di un nuovo sistema operativo: si potrebbe voler valutare un nuovo sistema operativo senza però modificare il proprio computer. In questo caso è possibile effettuare una prova del nuovo sistema operativo all’interno di una macchina virtuale.

• Virtualizzazione dei server: molteplici server possono essere eseguiti su un singolo server fisico

• Duplicazione di ambienti specifici: una macchina virtuale può, a seconda del software di virtualizzazione utilizzato, essere duplicato e installato su molteplici host o ripristinato ad uno stato del sistema precedentemente salvato.

• Creazione di un ambiente protetto: se il sistema ospite eseguito all’interno di una VM viene danneggiato in maniera irreparabile, per esempio quando danneggiato a causa di un malware, un virus o un software dal comportamento anomalo, la VM può essere semplicemente scartata senza danneggiare il sistema host e una copia pulita può essere utilizzata la volta successiva. Questo risulta particolarmente utile per i produttori di antivirus che possono così facilmente verificare i danni provocati da un virus e studiare il loro comportamento in maniera protetta.

Svantaggi della virtualizzazione

• Prestazioni: le APP sono un po’ più lente a causa dell’attività dell’emulatore dell’hardware della macchina virtuale (tutte i dispositivi hardware sono simulati da un software).

• l’overhead: ogni soluzione di virtualizzazione fa decrescere le performance globali, come ad esempio i tempi di accesso ai dischi, accesso alla memoria e cosi via. Alcune applicazioni particolarmente critiche potrebbero risentire dell’overhead introdotto dall’ambiente di virtualizzazione;

• l’hardware non virtualizzabile: a seconda dei prodotti utilizzati, alcune periferiche potrebbero non essere usate dalle macchine virtuali, come ad esempio porte seriali / parallele, dispositivi USB, interfacce Bluetooth, accelerazioni grafiche hardware e così via.

(9)

Macchina senza virtualizzazione e con virtualizzazione ed esempio

Senza Virtualizzazione

(10)

Con Virtualizzazione

Esempio

È stato questo il caso della Penny Market, la cui interessante vicenda narrata sul sito Vmware.com che mette in relazione il successo di un’azienda con la virtualizzazione delle proprie applicazioni.

Le applicazioni che sono state virtualizzate risiedevano su server dedicati, dotati di sistema operativo Windows 2000 Server. Attualmente le macchine virtuali sono Windows 2000 e Windows 2003, oltre a una macchina RedHat Linux con Oracle. Le macchine Windows 2003 sono in cluster:

due nodi con Exchange e due con Oracle. Il terzo cluster 2003 clusterizza Captaris RightFax usando come dischi condivisi delle LUN iSCSI della macchina NetApp.

Si è implementato un “cluster across boxes” composto da due macchine hardware sulle quali sono stati implementati tre cluster con i nodi distribuiti sui due hardware. I tempi di implementazione sono stati estremamente ridotti.

“Attualmente abbiamo circa 8 macchine virtuali su 2 server fisici“, ricorda Pessot. “Solo per quanto riguarda il consumo di energia abbiamo quindi un risparmio del 50%, che aumenta con il numero

(11)

di macchine virtuali per server fisico, senza peraltro considerare il calore emesso dai singoli server”.

Le macchine VMWare sono connesse in SAN, ognuna tramite 2 schede fibra. Considerando che le macchine virtuali che usano dischi SAN sono 5, se queste fossero fisiche ci sarebbe la necessità di avere 10 costose schede in fibra ottica. Quelle invece effettivamente utilizzate sono 4, con un risparmio reale del 60%.

La realizzazione del progetto specifico di Penny Market prevedeva la realizzazione di tre cluster. E’

stato sufficiente installare un solo server e quindi duplicare la macchina virtuale (con un semplice copia e incolla, visto che in questo caso l’immagine del server è effettivamente un file) per creare le altre 5, con un enorme risparmio di tempo. Poi si è proceduto alla personalizzazione.

Tipologie di virtualizzazione

Virtualizzazione completa

La virtualizzazione completa o full virtualization è una tecnica di virtualizzazione utilizzata per fornire un ambiente virtuale che sia una simulazione completa dell’hardware sottostante. La virtualizzazione completa richiede che ogni caratteristica saliente dell’hardware sia riproposta nella macchina virtuale, includendo il set di istruzioni completo, operazioni di input/output, interrupt, accesso alla memoria e qualsiasi altri elementi siano usati dal software che è eseguito sulla macchina base e che si intende eseguire nella macchina virtuale. In un tale ambiente, qualsiasi software che può essere eseguito sull’hardware grezzo può essere eseguito sulla macchina virtuale e, in particolare, qualsiasi sistema operativo. Il test ovvio che può essere eseguito per verificare la virtualizzazione completa è che un sistema operativo, progettato per essere eseguito direttamente sull’hardware, venga eseguito con successo all’interno della macchina virtuale.

Un importante esempio di virtualizzazione completa è quello che ci è fornito dal programma di controllo del sistema operativo IBM's CP/CMS. Dimostrato per la prima volta con il sistema di ricerca IBM's CP-40 nel 1967, e poi distribuito attraverso il meccanismo dell’open source nel CP/CMS nel 1967-1972, reimplementato nella famiglia di macchine virtuali IBM dal 1972 ad oggi.

Ad ogni utente di CP/CMS veniva fornito un computer simulato e stand-alone. Ognuna di queste macchine virtuali aveva le funzionalità complete del sistema sottostante e, per i suoi utenti, la

(12)

macchina virtuale era indistinguibile da un sistema privato. Questa simulazione era completa e includeva elementi come il set di istruzioni, memoria centrale, interrupt, eccezioni e accesso ai dispositivi. Il risultato era una singola macchina che poteva essere multiplexata su più utenti.

La virtualizzazione completa è possibile solo con la giusta combinazione di elementi hardware e software. Per esempio non era possibile con la maggior parte degli IBM serie System/360 con l’eccezione degli IBM System/360-67; non era possibile neanche con i primi IBM System/370 fino a quando IBM non aggiunse l’hardware per la memoria virtuale nel 1972.

Una sfida chiave nella virtualizzazione completa è l’intercettazione e la simulazione di operazioni privilegiate, come le istruzioni di I/O. Gli effetti di ogni operazione eseguita in una data macchina virtuale devono essere eseguite all’interno della macchina virtuale - le operazioni virtuali non devono modificare lo stato di nessun’altra macchina virtuale, il programma di controllo o l’hardware. Alcune istruzioni macchina possono essere eseguite direttamente dall’hardware poiché i loro effetti sono interamente contenuti negli elementi gestiti dal programma di controllo come le locazioni di memoria e i registri aritmetici. Ma altre istruzioni che “perforerebbero la macchina virtuale” non possono essere eseguite direttamente: devono essere intercettate, intrappolate e simulate poiché esse modificherebbero dei dati che si trovano all’esterno della macchina virtuale.

La virtualizzazione completa si è dimostrata altamente proficua per:

• condividere un sistema tra più utenti

• isolare gli utenti

• emulare nuovo hardware in modo da ottenere maggiore affidabilità, sicurezza e produttività.

Virtualizzazione x86

La virtualizzazione completa non era possibile sulla piattaforma x86, fino al 2005-2006 quando furono introdotte le estensioni AMD-V e Intel VT-x anche se precedentemente molti produttori di software hanno garantito la virtualizzazione di questo tipo in modo software.

In particolare, L'8 febbraio 1999, VMware introdusse il primo prodotto di virtualizzazione x86,

"VMware Virtual Platform", basato su precedenti ricerche dei propri fondatori all'Università di Stanford. VMware e software simili devono impiegare sofisticate tecniche per catturare e

(13)

virtualizzare l'esecuzione di determinate istruzioni. Queste tecniche offrono minori performance rispetto ad una macchina virtuale in esecuzione su un'architettura virtualizzabile nativamente come IBM System/370 o Motorola MC68020. Kevin Lawton lanciò il progetto Plex86 (denominato originariamente "freemware") per la creazione di un "software libero" di virtualizzazione x86 con il solo supporto a Linux come sistema operativo "ospite", ma prima di questo Lawton pubblicò l'articolo “Running multiple operating systems concurrently on an IA32 PC using virtualization techniques”, il quale fornisce un'analisi sugli aspetti dell'architettura x86 maggiormente complicati da virtualizzare ed alcune tecniche per superare queste difficoltà. Anche Microsoft offre dei software di virtualizzazione x86, Microsoft Virtual PC e Microsoft Virtual Server, basati sulla tecnologia acquisita da Connectix. Recenti ricerche hanno cercato di migliorare le performance alla virtualizzazione x86 attraverso l'utilizzo di un'interfaccia software per le macchine virtuali che emula l'hardware sottostante. I sistemi operativi sono eseguiti su questa interfaccia, la quale non implementa i set di istruzioni x86 difficili da virtualizzare. Questa tecnica è chiamata paravirtualizzazione. Esempi di utilizzo di questa tecnologia sono Denali, L4, e Xen.

Virtualizzazione assistita dall’hardware

Per virtualizzazione assistita dall’hardware, si intende un approccio alla virtualizzazione in cui la virtualizzazione avviene in maniera efficiente tramite l’assistenza dell’hardware, principalmente attraverso l’implementazione di istruzioni specifiche nei processori.

IBM offre la virtualizzazione hardware per le sue cpu con architettura POWER per essere utilizzate con AIX (una versione proprietaria di Unix sviluppata da IBM) e per la sua linea di Mainframe della Serie Z. IBM fa riferimento a questa forma specifica di virtualizzazione hardware come “partizione logica” o LPAR.

L’aumento delle capacità computazionali dei server x86 unito all’aumento di banda delle moderne reti ha ravvivato l’interesse in un computing incentrato sui data center basati sulla virtualizzazione.

L’impulso maggiore è stato dato dalla possibilità di poter consolidare i server: la virtualizzazione consente ad un singolo server di consolidare in un singolo server fisico svariati server sotto utilizzati. Il segno più evidente di questo ritorno alle radici dell’informatica è dato dal cloud computing che è un sinonimo per un computing basato su un data center o su di un Mainframe attraverso la rete.

(14)

L’implementazione iniziale dell’architettura x86 non soddisfaceva i requisiti di virtualizzazione di Popek e Goldberg, in particolare:

• equivalenza: un programma eseguito all’interno della macchina virtuale deve avere un comportamento sostanzialmente identico a quello mostrato quando direttamente in esecuzione su una macchina equivalente.

• controllo delle risorse: il VMM deve essere in totale controllo delle risorse virtualizzate.

• efficienza: una frazione statisticamente dominante delle istruzioni macchina devono essere eseguite senza intervento da parte del VMM.

Queste condizioni rendevano difficile implementare un VMM per questa tipologia di processori. Le limitazioni specifiche includevano l’impossibilità di intercettare alcune istruzioni privilegiate.

Per compensare queste limitazioni architetturali, i progettisti hanno realizzato la virtualizzazione dell’architettura x86 attraverso due metodi: la virtualizzazione completa o la paravirtualizzazione.

Entrambe creano l’illusione dell’hardware fisico per raggiungere l’obiettivo dell’indipendenza del sistema operativo dall’hardware, ma questi approcci presentano alcune inefficienze dal punto di vista delle prestazioni e della complessità.

All’inizio la virtualizzazione dell’architettura x86 si basava sulla traduzione binaria per intercettare e virtualizzare l’esecuzione di alcune istruzioni non virtualizzabili. Con questo approccio, istruzioni le istruzioni critiche sono scoperte (statisticamente o dinamicamente a run time) e rimpiazzate con delle istruzioni simulate via software. La traduzione binaria incorre in pesanti degradazioni delle prestazioni. VirtualBox, VMware Workstation e Microsoft Virtual PC funzionavano originariamente esclusivamente con questa modalità.

La paravirtualizzazione è una tecnica invece in cui l’hypervisor fornisce una serie di API e il sistema operativo ospite della macchina virtuale richiama tali API e quindi, per tale motivo, questo approccio richiede la modifica del sistema operativo.

Nel 2005 e nel 2006 Intel e AMD, lavorando in maniera indipendente, crearono delle nuove estensioni all’architettura x86 chiamate Intel VT-x e AMD-V, rispettivamente. Implementazioni conosciute che sfruttano queste estensioni sono VMware Workstation, XenCenter, Xen 3.x, Linux KVM e Microsoft Hyper-V. Anche le versioni recenti di VirtualBox possono sfruttare le estensioni hardware Intel e AMD se presenti, migliorando sensibilmente le prestazioni in tal modo

(15)

Vantaggi

La virtualizzazione assistita dall’hardware riduce l’overhead di manutenzione della paravirtualizzazione poiché riduce o elimina del tutto la necessità di modificare il sistema operativo guest. Inoltre è considerevolmente più facile ottenere prestationi migliori.

Svantaggi

Richiede ovviamente il supporto esplicito da parte della CPU, cosa che non potrebbe sempre essere possibile su tutti i processori x86/x86_64. Inoltre un approccio “puro” alla virtualizzazione assistita hardware, utilizzando interamente un sistema operativo guest non modificato, implica numerose intercettazioni della VM e quindi un alto overhead della CPU, limitando l’efficienza del consolidamento dei server. Questo problema può però essere mitigato attraverso l’uso di driver paravirtualizzati; questo approccio viene da alcuni chiamato “virtualizzazione ibrida”.

Virtualizzazione parziale

Nella virtualizzazione parziale, inclusa cui la virtualizzazione dello spazio di indirizzamento, la macchina virtuale simula più istanze di gran parte di un ambiente hardware sottostante, in particolare dello spazio degli indirizzi. Di solito, questo significa che l'intero sistema operativo non può essere eseguito nella macchina virtuale, come avviene nella virtualizzazione completa, ma che molte applicazioni possono essere comunque eseguite. L’aspetto chiave della virtualizzazione parziale è la virtualizzazione dello spazio degli indirizzi, in cui ogni macchina virtuale è costituita da uno spazio di indirizzamento indipendente. Questa funzionalità richiede l’hardware per la rilocazione dell’indirizzo ed è stata presente nella maggior parte degli esempi pratici di virtualizzazione parziale.

La virtualizzazione parziale è stata una pietra miliare sulla strada per la virtualizzazione completa. È stata usata nel sistema time-sharing di prima generazione, il CTSS, nel sistema sperimentale IBM M44/44X. Il termine può anche essere utilizzato per descrivere qualsiasi Sistema operative che fornisce uno spazio di indirizzi separato per gli utenti o i processi, inclusi molti che oggi non sarebbero considerati sistemi a macchina virtuale.

(16)

L’esperienza con la virtualizzazione parziale e i suoi limiti ha portato alla creazione del primo sistema di virtualizzazione completo, l’IBM's CP-40, la prima iterazione del CP/CMS che sarebbe infine diventato la famiglia IBM VM).

La virtualizzazione parziale è significativamente più facile da implementare della virtualizzazione completa. È stata spesso in grado di fornire macchine virtuali robuste, utili e capaci di supportare importanti applicazioni. La virtualizzazione parziale si è dimostrata utile per condividere le risorse dei computer tra molteplici utenti.

Tuttavia, in confronto alla virtualizzazione completa, i suoi svantaggi si manifestano nel caso di situazioni che richiedono compatibilità all’indietro o portabilità. Può essere difficile anticipare esattamente quali funzionalità sono state usate da una data applicazione. Se certe funzionalità hardware non sono simulate, allora qualsiasi software che utilizza queste funzionalità fallirà.

Paravirtualizzazione

In informatica, la paravirtualizzazione è una tecnica di virtualizzazione che presenta un'interfaccia software per macchine virtuali che è simile, ma non identica a quella dell’hardware sottostante.

Lo scopo dell’interfaccia modificata è quello di ridurre il tempo speso dal sistema guest nell’eseguire operazioni che sono sostanzialmente più difficili da eseguire all’interno di un ambiente virtuale rispetto ad un ambiente non virtuale. La paravirtualizzazione fornisce degli hook (agganci) per consentire ai sistemi guest e host di riconoscere questi compiti, che sarebbero altrimenti eseguiti nel dominio virtuale, dove l’esecuzione è meno performante. Una piattaforma paravirtuallizata in maniera corretta consente al VMM di essere più semplice, grazie alla ricollocazione dell’esecuzione di questi compiti dal dominio virtuale al dominio dell’host, e/o di ridurre il degradamento generale delle performance dell’esecuzione all’interno dell’ospite virtuale.

La paravirtualizzazione richiede che il sistema operativo ospite sia esplicitamente convertito alle para-API. Una distribuzione di un sistema operativo convenzionale che non sia consapevole della paravirtualizzazione non può essere eseguita da un VMM paravirtualizzatore.

Tuttavia anche nel caso in cui non sia possibile modificare il sistema operativo, potrebbero essere disponibili dei componenti che possono rendere disponibili molti dei vantaggi di performance della paravirtualizzazione. Per esempio il progetto Xen Windows GPLPV fornisce una serie di driver

(17)

consapevoli della paravirtualizzazione che possono essere installati all’interno di un ospite con Windows in esecuzione con un hypervisor Xen.

La paravirtualizzazione è un nuovo termine per una vecchia idea. Il sistema operativo IBM VM ha offerto una tale funzionalità sin dal 1972.

Il termine paravirtualizzazione è stato usato per la prima volta in letteratura insieme al gestore della macchina virtuale Denali. Il termine è anche utilizzato per descriver gli hypervisor Xen, L4, TRANGO, VMware, Wind River and XtratuM. Tutti questi progetti utilizzano o possono utilizzare tecniche di paravirtualizzazione per supportare macchine virtuali ad alte prestazioni su hardware x86 attraverso l’implementazione di una macchina virtuale che non implementa le parti difficili da virtualizzare del set di istruzioni x86.

Virtualizzazione a livello di sistema operativo

La virtualizzazione a livello di sistema operativo è un metodo di virtualizzazione server nel quale il kernel di un sistema operativo consente l’esistenza di molteplici istanze dello spazio isolate anziché solamente una. Tali istanze, che sono a volte chiamate containers, software containers, virtualization engines (VEs) o jails (FreeBSD jail o chroot jail), possono apparire come un vero server dal punto di vista degli utenti.

Su un sistema operativo Unix, questa tecnologia può essere vista come una implementazione avanzata del meccanismo chroot standard. In aggiunta ai meccanismi di isolamento, il kernel spesso fornisce funzionalità di gestione delle risorse per limitare l’impatto delle attività di un container sulle attività degli altri container.

La virtualizzazione a livello di sistema operativo è solitamente utilizzata negli ambienti di hosting, dove è utile per allocare in maniera sicura risorse hardware finite tra un grande numero di utenti mutualmente non affidabili. I system administrators posso anche usarla, in maniera minore, per consolidare l’hardware dei server attraverso lo spostamento dei servizi su host separati in container su un server.

Altri scenari tipici includono la divisione di molteplici applicazioni in container separati per migliorare la sicurezza, l’indipendenza dell’hardware e maggiori funzionalità di gestione delle risorse. È utilizzata inoltre per consentire la migrazione a caldo in modo da poter effettuare load balancing dei container tra i nodi di un cluster.

(18)

La virtualizzazione a livello di Sistema operative solitamente ha un overhead basso o inesistente, dato che i programmi nella partizioni virtuali utilizzano le normali interfacce per le chiamate di sistema e non sono soggette ad emulazione e non devono essere eseguite in macchine virtuali intermedie come nel caso di sistemi di virtualizzazione completa (come VMware ESXi, QEMU o Hyper-V) o paravirtualizzatori (come Xen). Questo tipo di virtualizzazione inoltre non necessita del supporto nell’hardware per migliorare le performance.

Tuttavia la virtualizzazione a livello di sistema operativo non è flessibile come altri approcci di virtualizzazione, poiché non può ospitare un sistema operativo guest diverso da quello dell’host o anche solo un diverso kernel del guest. Per esempio, con Linux, diverse distribuzioni vanno bene, ma altri sistemi operativi come Windows non possono essere ospitati.

Virtualizzazione del desktop

La virtualizzazione del desktop è una tecnologia software che separa l’ambiente del desktop e il software applicazione dal dispositivo fisico con il quale vi si accede.

La virtualizzazione del desktop può essere usata insieme alla virtualizzazione dell’applicazione e i sistemi di gestione del profilo utente, adesso definiti come “virtualizzazione utente”, per fornire un ambiente di gestione desktop completo. In questa modalità, tutte le componenti del desktop sono virtualizzate, il che consente un modello di distribuzione del desktop altamente flessibile e più sicuro. In aggiunta, questo approccio, supporta una strategia di disaster recovery del desktop più completa poiché tutti i componenti sono salvati nel data center e il loro backup viene eseguito attraverso i tradizionali meccanismi di manutenzione ridondanti. Se il dispositivo hardware dell’utente viene smarrito, il recupero è immediato e semplice, poiché i componenti saranno presenti al momento del login da parte di un altro dispositivo. Inoltre, poiché nessun dato viene salvato sul dispositivo dell’utente, se quel dispositivo viene smarrito vi è una probabilità molto più bassa che dei dati critici possano essere recuperati e compromessi.

Architetture di Sistema

Le implementazioni della virtualizzazione desktop sono classificate in base al fatto che i desktop virtuali siano eseguiti remotamente o localmente e sul fatto che sia richiesto un accesso costante o intermittente e se il desktop virtualizzazione del desktop viene persistita attraverso le sessioni.

(19)

Tipicamente, i prodotti software che forniscono soluzioni di virtualizzazione del desktop possono combinare implementazioni locali e remote in un singolo prodotto per fornire il supporto specifico più appropriato per i requisiti. I gradi di indipendenza funzionale del dispositivo client non sono necessariamente interdipendenti con la strategia di accesso e il posizionamento del server. Inoltre la virtualizzazione non è strettamente richiesta affinché esista il controllo remoto. La virtualizzazione è impiegata per presente istanze multiple indipendenti a più utenti e richiede una segmentazione strategica del server host e della presentazione in qualche livello dell’architettura dell’host.

Virtualizzazione remota del desktop

Le implementazioni di desktop remoto operano in ambiente client/server. L’esecuzione dell’applicazione avviene su un sistema operativo remoto che comunica con il dispositivo client locale attraverso una rete utilizzando un protocollo di display remoto attraverso il quale l’utente interagisce con le applicazioni. Tutte le applicazioni e i dati utilizzati rimangono sul sistema remoto con solo le informazioni del display, della tastiera e del mouse scambiate tra il server e il dispositivo client, che può essere tipicamente un normale pc/laptop, un dispositivo thin client, un tablet o anche uno smartphone.

Un’implementazione comune di questo approccio coinvolge l’hosting di diverse istanze di un sistema operativo desktop su una piattaforma hardware che esegue un hypervisor. Questo deriva dal Multiwin Engine sviluppato da Citrix sotto licenza da Microsoft. La sua ultima iterazione è generalmente conosciuta come "Virtual Desktop Infrastructure" o "VDI". La virtualizzazione del desktop remota è frequentemente utilizzata nei seguenti scenari:

• in ambienti distribuiti con requisiti di alta disponibilità e dove il supporto tecnico non prontamente disponibile come nelle sedi periferiche e negli ambienti di retail.

• In ambienti in cui l’elevata latenza di rete degrada le performance delle tradizionali applicazioni client server

• In ambiente dove i requisiti di accesso remoto e sicurezza dei dati creano requisiti in contrasto che possono essere soddisfatti tenendo tutti i dati all’interno del data center e il client formato solo da monitor, tastiera e mouse

• È utilizzato anche per fornire accesso ad applicazioni Windows su endpoint non Windows (inclusi i tablet, gli smartphone e desktop e laptop non basati su Windows)

(20)

Virtualizzazione della presentazione

I Remote Desktop Services (precedentemente chiamati "Terminal Services") è un component di virtualizzazione/presentazione di Microsoft Windows che consente ad un utente di accede alle applicazioni e ai dati su computer remoto attraverso una rete utilizzando un protocollo di display remoto chiamato RDP. Un altro esempio di virtualizzazione della presentazione è Citrix XenApp.

L’uso di un singolo sistema operativo condiviso invece di istanze di sistemi operativi individuali consuma meno risorse ma allo stesso tempo e meno dispendioso dei desktop virtuali.

Virtualizzazione delle applicazioni

La virtualizzazione delle applicazioni migliora il delivery e la compatibilità delle applicazioni attraverso il loro incapsulamento dal sottostante sistema operativo su cui sono eseguite.

Un’applicazione completamente virtualizzata non è installata sull’hardware, nel senso comune.

Invece, un hypervisor intercetta l’applicazione che a runtime agisce come se si stesse interfacciando con il sistema operativo originale e tutte le risorse da esso gestite, quando in realtà non lo è. Esempi sono Citrix XenApp, Microsoft App-V, Spoon, VMware ThinApp e Systancia AppliDis.

Riferimenti

Documenti correlati

Manipolando i risultati è possibile far eseguire al sistema reale (detto anche sistema host) le operazioni, mostrando poi ai processi interni della macchina virtuale (guest) effetti

Usai “Identification and triggering of soft muons in the Atlas detector”, June 2004 (PhD thesis).. riconoscimento dei muoni

La virtualizzazione completa prevede che il VMM esponga ad ogni macchi- na virtuale interfacce hardware simulate funzionalmente identiche alle corrispondenti interfacce fisiche:

14 Robert Schuman Centre for Advanced Studies Working Papers Our main finding is that of a positive relationship across these destination countries between

Dunque un device logico deve essere collegato ad uno ed un solo device fisico mentre lo stesso dispositivo fisico può essere associato a molti dispositivi logici.. L’attributo

Questo software è di fatto il sistema operativo dei server fisici PowerEdge, riesce a bilanciare le risorse necessarie tra i due host in modo dinamico e automatico, oltre a

• Data Grid: i requisiti di condivisione e accesso trasparente ai dati, anche di grosse dimensioni, e la capacità di gestire i meta-dati relativi all’accesso e all’utilizzo dei

  Le istruzioni non privilegiate possono essere eseguite direttamente dall’hardware senza alcun intervento da parte della CPU (esecuzione diretta).. Esempio: tentativo di