La virtualizzazione in informatica è un paradigma che si è sviluppato in tempi relativamente recenti e che stravolge quello che il nostro usuale approccio a un sistema informatico.

Infatti siamo abituati a uno schema di questo tipo:

virtualizzazione informatica

In cui ciascun utente utilizza un computer fisico, pertanto abbiamo una mappatura di 1:1, cioè ciascun computer è utilizzato da 1 utente.

La virtualizzazione è un concetto che astrae il livello fisico per renderlo, appunto, virtuale

Una, due, centro macchine virtuali

Consideriamo un computer fisico e facciamo finta che possa esporre in qualche modo un certo numero di computer fittizi racchiusi al suo interno. Questi computer fittizi, chiamati macchine virtuali, o VM, possono essere normalmente usati da più utenti, come se fossero reali. I loro utenti non sanno e non si accorgono neanche che il computer che stanno utilizzando non è fisico. Dal loro punto di vista il fatto che sia un computer reale o una VM non fa nessuna differenza.

macchine virtuali

Ma come può funzionare tutto questo? Il segreto sta nell’astrarre le componenti hardware del computer, che chiameremo d'ora in poi host, e simularle via software. In sostanza, una VM è semplicemente un file in cui sono memorizzate tutte le informazioni relative alla VM: il sistema operativo, i software installati e i dati.

Siccome si hanno normalmente più VM sullo stesso host, è necessario qualcosa che astragga e gestisca le risorse hardware dell'host stesso, per renderle disponibili a tutte le VM. Questo gestore è un software che si installa sull'host e si chiama hypervisor. Grazie a questo software particolare, le VM ‘credono’ di avere l’hardware tutto per loro, potremmo dire che vengono ingannate. Detto in altri termini, ciascuna VM crederà di avere la CPU, il disco, la RAM, ecc. dell'host tutta per sè, senza nemmeno 'sapere' dell'esistenza delle altre VM sullo stesso host in cui si trova.

In questo caso abbiamo una mappatura 1:n, per ogni host fisico corrispondono più utenti.

L'insieme fa la forza

Finora abbiamo visto la virtualizzazione di un singolo host, ma questa è una soluzione più che altro didattica, che non si sposa bene con le esigenze delle medio-grande aziende. Vediamo perché.

Che succede infatti se per qualche motivo l'host smettesse di funzionare, ad esempio per un guasto? La risposta è semplice, tutte le VM si spegnerebbero e gli utenti non potrebbero più raggiungerle. Pertanto quello che normalmente si fa è usare più host fra loro connessi in rete, in cui le VM non sono 'agganciate' ad essi in modo rigido, ma sono libere di spostarsi fra i vari host, in caso di guasti degli host o più semplicemente per equilibrare automaticamente il carico (in termini di CPU e RAM), evitando che sia troppo sbilanciato verso pochi host rispetto agli altri.

L’insieme di più host fra loro comunicanti è detto cluster.

Ad un sistema di virtualizzazione così concepito manca ancora un importante dettaglio: lo storage.

Le VM, come abbiamo detto prima, sono in realtà dei file su disco e necessitano pertanto di essere memorizzate in uno spazio comune al cluster, affinché ciascun host possa accedervi tempestivamente in caso di migrazione della VM (per guasto o per bilanciamento delle risorse). Pertanto è comune utilizzare uno storage condiviso, in genere dei dischi fissi. Nel disegno lo storage è stato schematizzato per semplicità come un singolo disco.

Perché si usa la virtualizzazione?

Si hanno indiscutibili vantaggi ricorrendo alla virtualizzazione, vediamo i principali:

Risparmio di risorse. Utilizzare un host, che spesso ha delle prestazioni molto elevate, soltanto per l’esecuzione di un singolo programma o servizio è chiaramente un notevole spreco. Questo perché in ambito infrastrutturale IT è prassi 'far girare' un solo programma per ogni server fisico, per questioni di sicurezza e affidabilità. Con la virtualizzazione supero brillantemente questo problema, poiché faccio utilizzare le risorse fisiche dell'host da più VM contemporaneamente, VM che sono fra loro indipendenti.

Robustezza dell’infrastruttura. La perdita di uno o più nodi del cluster non pregiudica la continuità del servizio erogato, poiché le VM possono spostarsi subito su un altro host acceso. Ovviamente questo meccanismo funziona finché gli host rimasti hanno abbastanza risorse CPU e RAM da poter ‘accogliere’ le VM rimaste orfane.

Facilità di provisioning. Per provisioning si intende la capacità di creare nuovi elementi al bisogno. Nel caso di un’infrastruttura totalmente fisica, fare il provisioning di un nuovo server, non è in genere un’operazione snella. Bisogna acquistarlo, montarlo, configurarlo, installare il sistema operativo, ecc. In un ambiente virtuale il provisioning è praticamente istantaneo. Mediante un’applicazione di gestione, con pochi click si possono istanziare tutte le VM che ci servono. Inoltre è possibile clonare una VM e fare quante copie sono necessarie. Questo è utilissimo soprattutto se dobbiamo fare il provisioning di molte VM tutte uguali, come una serie di client.

Semplicità di migrazione. Siccome le VM sono sostanzialmente file, è davvero semplice spostarle da un cluster virtuale ad un altro, che magari è situato lontano. Basta fare un banale copia/incolla dei file. Provate a fare la stessa cosa con dei computer fisici!

Abbattimento dei costi. Avere meno host vuol dire anche avere meno ingombri, meno elettricità usata e meno condizionamento necessario.

Gli aspetti negativi, o perlomeno quelli a cui prestare attenzione, sono in primo luogo la presenza dei costi della licenza dell’hypervisor. Inoltre le prestazioni delle VM potrebbero in alcune circostanze non equiparabili a quelle dei server fisici, soprattutto se devono essere usate per applicazioni particolari che sfruttano intensamente le risorse hardware. In questi casi, o nei casi in cui sono necessari componenti hardware dedicati, come alcune schede video, la virtualizzazione potrebbe non essere la scelta migliore.



Se ti interessano questi argomenti e ti piace il linguaggio con cui vengono esposti,

ho creato per te un video corso di informatica adatto ai principianti.

Vai alla pagina del corso!