Il concetto di virtualizzazione ha radici lontane. Il computer è soltanto l’ultima e più sofisticata porta di accesso a questo mondo della macchina virtuale. La nostra realtà quotidiana, così com’è, è completamente pervasa di “virtuale”. La tecnologia ha generato un tessuto connettivo immateriale che accompagna come un’ombra il nostro agire quotidiano. Ombra che ha origine nella caverna di Platone.
Cosa si intende per virtualizzazione. Le forme di un “inganno”
In fondo è un po’ come ingannare l’utilizzatore e, in certa misura, anche il bene materiale che viene virtualizzato: una furberia che può assumere diverse forme. Per virtualizzazione si intende un’operazione di astrazione su di una risorsa computazionale fornita fisicamente (piattaforma hardware, sistemi di storage dei dati, rete, sistema operativo), con l’obiettivo di creare una molteplicità di accessi logici, ognuno dei quali può essere utilizzato per interagire con un particolare utente o in un determinato contesto, a seconda delle necessità.
Macchina virtuale, la virtualizzazione del sistema operativo
In abito tecnologico, una forma di virtualizzazione molto diffusa è quella dei server: un livello di software chiamato hypervisor è integrato nell’hardware sottostante. Il sistema operativo guest, non ha idea che si trovi su un hardware virtualizzato. Sebbene non funzioni al suo livello ottimale rispetto all’esecuzione sull’hardware reale, il risultato è più che soddisfacente, tanto che la virtualizzazione dei server è stato il seme da cui è nata l’architettura in Cloud.
Leggi anche Servizi Cloud, cosa sono e perché servono
Oggi la virtualizzazione non si limita alla virtualizzazione del server che si è estesa a CPU, rete, archiviazione, ROM, RAM ecc. L’hypervisor ci consente di creare più sistemi su un singolo hardware e ognuno può lavorare su sistemi operativi diversi e gestire diverse applicazioni in base a quanto è necessario.
Macchina virtuale, i diversi tipi di hypervisor: native, hosted & co.
Esistono diversi tipi di hypervisor. L’hypervisor native è in esecuzione direttamente sull’hardware, consentendone il controllo diretto per offrire le funzionalità di virtualizzazione. Un esempio significativo è Hyper-V della Microsoft oppure il progetto open-source Xen, largamente utilizzato da diversi service provider in ambito Cloud come Amazon.
L’hypervisor hosted è invece in esecuzione sul sistema operativo host, il quale risiede a sua volta su una piattaforma fisica. Risulta particolarmente efficace nelle situazioni in cui si desideri accesso immediato sia al sistema operativo host (solitamente individuato dal SO desktop dell’utente) sia al guest. Esempi conosciuti di hypervisor appartenenti a questa categoria sono VMware e VirtualBox.
Nel caso della virtualizzazione del sistema operativo una menzione speciale va fatta per Docker e i Container: mentre una macchina virtuale astrae l’hardware, i container limitano il loro livello di astrazione al solo sistema operativo. Con i Container, ogni utente, oltre a condividere lo stesso sistema operativo, condivide il kernel, la connessione di rete e i file di base del sistema. A differenza delle macchine virtuali, in questo caso le istanze vengono eseguite all’interno di uno spazio separato, garantendo così una notevole diminuzione di consumo della CPU e dell’overload associato – fenomeno tipico dell’esecuzione di più sistemi operativi nelle macchine virtuali – oltreché una maggiore velocità nell’avvio e nell’arresto di un’istanza.
Virtualizzazione di un Application Server: bilanciare il carico di lavoro e creare una gestione più semplice
Un’altra forma di virtualizzazione molto diffusa è quella degli Application Server, spesso definita “advanced load balacing“. Il suo obiettivo è consentire ai dipartimenti IT di bilanciare il carico di lavoro di una o più applicazioni in modo agile, senza sovraccaricare un server specifico o sottoporre a un carico insufficiente un’applicazione specifica. Inoltre, consente una gestione più semplice di server e applicazioni, poiché è possibile gestirli come un’unica istanza, garantendo così una maggiore sicurezza della rete, poiché solo un server è visibile al pubblico mentre il resto è nascosto dietro una funzionalità di sicurezza della rete detta proxy inverso.
Virtualizzazione di un’applicazione (da non confondere con la precedente) per usare terminali di lavoro semplici e economici
La virtualizzazione delle applicazioni viene spesso confusa con la virtualizzazione del server delle applicazioni che abbiamo visto al punto precedente, ma si tratta di un’altra forma di virtualizzazione che consente l’utilizzo di applicazioni residenti su cluster di server remoti, come se risiedessero naturalmente sul disco rigido del PC locale. La possibilità di utilizzare RAM e CPU per eseguire i programmi archiviati centralmente su un server, migliora il modo in cui vengono inviati gli aggiornamenti di sicurezza del software e come viene distribuito il software e, soprattutto, consente di utilizzare terminali di lavoro molto semplici ed economici che sono in grado di sfruttare l’enorme potenza di calcolo messa a disposizione da un cluster di server.
Leggi anche Architettura Rest, le pratiche di buona progettazione
Virtualizzazione di rete, per semplificare il modo in cui implementare e adattare carichi di lavoro e risorse
La virtualizzazione di rete (NV) estrae la connettività di rete e i servizi tradizionalmente forniti tramite hardware in una rete virtuale logica che viene disaccoppiata e funziona indipendentemente su una rete fisica in un hypervisor. Oltre ai servizi L2-3 come lo switch e il routing, NV in genere incorpora servizi L4-7 virtualizzati tra cui firewall e bilanciamento del carico del server. NV risolve molte delle sfide di rete nei data center odierni, aiutando le organizzazioni a programmare ed eseguire il provisioning centralizzato della rete, su richiesta, senza dover toccare fisicamente l’infrastruttura sottostante. Con NV, le organizzazioni possono semplificare il modo in cui implementare, ridimensionare e adattare carichi di lavoro e risorse per soddisfare le esigenze di elaborazione in evoluzione.
Macchina virtuale, 5 vantaggi indiscutibili (e un inganno a fin di bene)
1) Affidabilità del sistema
Questo artificio fornisce numerosi vantaggi. Innanzitutto, l’affidabilità del sistema, dal momento che la virtualizzazione permette l’isolamento di uno o più servizi non in conflitto tra di loro. Questo garantisce una maggiore stabilità dell’intero sistema. Inoltre, l’hypervisor isola le macchine guest in esecuzione sullo stesso host affinché eventuali problemi che potrebbero compromettere il funzionamento di una singola macchina virtuale, non influenzino la stabilità delle altre.
2) Contenimento del numero dei server
Un altro vantaggio riguarda il contenimento del numero di server. A causa dell’aumento dei servizi da fornire, il numero dei server in uso nelle realtà aziendali è cresciuto in modo notevole. Attraverso la virtualizzazione si possono eseguire più macchine virtuali nella stessa macchina fisica, riducendo in modo drastico il numero dei server necessari e la loro manutenzione.
3) Riduzione dei costi
Il consolidamento ad un numero inferiore di server determina, a sua volta, un beneficio, poiché permette una notevole riduzione dei costi legati all’energia utilizzata per alimentare i server e per mantenere la temperatura ambientale adatta alle sale server. In più, si riducono i costi di acquisto e i canoni di manutenzione dei server fisici.
4) Riduzione dei tempi di indisponibilità in caso di guasto
Un ulteriore vantaggio si rivela nel caso di “disaster recovery”. L’intero sistema operativo guest può infatti essere facilmente salvato e ripristinato, riducendo notevolmente i tempi di indisponibilità in caso di guasto.
Se è presente una infrastruttura di server fisici con delle caratteristiche hardware tra loro compatibili e questi server condividono un’area dati (storage) sulla quale risiedono le macchine virtuali, è possibile spostare l’esecuzione di una macchina virtuale su un altro host in caso di failure. Alcuni sistemi prevedono lo spostamento automatico delle macchine virtuali tra i vari host in funzione del carico.
5) Possibilità di usare hardware obsoleti senza migrare ad architettura più attuale
Non ultimo vantaggio, è frequente che alcune organizzazioni utilizzino applicazioni sviluppate per sistemi operativi che girano su hardware ormai obsoleti, non supportati o addirittura introvabili. Attraverso la virtualizzazione si possono continuare ad utilizzare quelle applicazioni che diversamente dovrebbero essere migrate ad una architettura più attuale affrontando i costi relativi al porting e al debug.
Tornando nella caverna, Platone immaginò dei prigionieri incatenati, fin dalla nascita, nelle profondità di una caverna. Non solo le membra, ma anche testa e collo erano bloccati, in maniera che gli occhi dei malcapitati potevano fissare solo il muro dinanzi a loro. Platone invitava a non accontentarsi delle ombre visibili nella caverna, ma ad uscire per conoscere la verità. Pensiamoci quando invece di goderci un bel tramonto sul mare o la recita scolastica di nostro figlio, ci accontentiamo dell’ombra proiettata da uno smartphone.
Articolo a cura di Alessandro Testa
0 commenti