Elementi essenziali per la virtualizzazione, gli hypervisor operano silenziosamente, ogni giorno, per garantirci un incredibile quantità di servizi informatici. In questo viaggio di scoperta, cercheremo di focalizzarci sugli aspetti essenziali che caratterizzano la natura e l’evoluzione degli hypervisor, cercando di capire, attraverso i concetti base del loro funzionamento, perché continuano a rivestire un ruolo fondamentale nelle architetture IT.

Cos’è un hypervisor

Nella sua definizione più semplice, l’hypervisor è un software capace di creare, gestire e monitorare il funzionamento di una o più macchine virtuali (VM). È la ragione per cui, nella letteratura anglosassone, sentiamo spesso parlare di virtual machine monitor (VMM).

Senza utilizzare un hypervisor, una macchina fisica potrebbe eseguire soltanto il sistema operativo su di essa direttamente installato. L’hypervisor consente di virtualizzare la parte hardware, facendo in modo che le risorse fisiche del pc / server, come la CPU, la GPU, la RAM, lo storage e la rete vengano distribuite per eseguire più macchine virtuali. Questo consente all’hypervisor di pianificare le risorse delle VM stesse in funzione delle risorse hardware fisiche disponibili, monitorando in tempo reale tutti i parametri di esecuzione.

Grazie alla capacità di esecuzione degli hypervisor, una volta create, le macchine virtuali diventano delle entità in grado di essere gestite come un insieme di file, quindi spostati su vari server, pianificare backup, catturare snapshot, oltre che per eseguire istanze differenti su cui effettuare ad esempio altrettanti test in un ambiente sicuro ed isolato, che in caso di malfunzionamenti non comprometterebbero l’efficienza della macchina fisica su cui vengono eseguite. Oltre a garantire la virtualizzazione nel senso più ampio del termine, l’hypervisor diventa un elemento essenziale per pianificare l’attività dei data center in cloud, chiamati ad eseguire migliaia di macchine virtuali.

A livello concettuale virtualizzazione e cloud sono due entità complementari, ma distinte nel significato, per cui non vanno considerate quali sinonimi. Se la virtualizzazione, mediante un hypervisor, è un software che rende indipendenti le macchine virtuali dall’infrastruttura fisica, il cloud computing è di base un servizio, che offre risorse computazionali condivise per eseguire differenti operazioni.

Le tipologie di virtualizzazione hardware supportate da un hypervisor

In generale, esistono almeno tre differenti tipi di virtualizzazione che un hypervisor, secondo le proprie caratteristiche, può essere chiamato a gestire.

  • Virtualizzazione dei server: consente di eseguire più sistemi operativi su un server fisico, come macchine virtuali in grado di assicurare notevoli vantaggi: riduzione dei costi operativi, incremento prestazionale delle applicazioni, maggior rapidità nel deployment dei vari carichi di lavoro, oltre ad una generale ottimizzazione della disponibilità dei server e razionalizzazione della complessità IT.
  • Virtualizzazione del desktop: consente di distribuire un ambiente desktop e le sue relative applicazioni come un servizio, in modo da rendere operativi in breve tempo molti device. In ambito aziendale questa funzione risulta particolarmente comoda quando si devono abilitare in breve tempo un elevato numero di dispositivi mobile, piuttosto che touchpoint delocalizzati.
  • Virtualizzazione della rete: consente di riprodurre in maniera completa una rete, eseguendo le applicazioni sulla sua controparte virtuale, che ne eredita, indipendentemente dall’hardware fisico, le principali dotazioni e servizi: porte, router, switch, load balancing, VPN, firewall, ecc. con la possibilità di gestire i relativi carichi di lavoro.
Virtualizzazione hardware
Esistono almeno tre differenti tipi di virtualizzazione hardware che un hypervisor può gestire

In generale la virtualizzazione è stata favorita negli ultimi vent’anni dal livello di maturità raggiunto in termini computazionali dai server e dai sistemi di rete, finalmente ottimali per eseguire in maniera apprezzabile le macchine virtuali, che consistono nell’emulazione via software di un sistema completo. Una macchina fisica deve infatti disporre sia della potenza per gestire il proprio software host, che tutte le macchine virtuali gestite dall’hypervisor. Il concetto che sta alla base della virtualizzazione è tuttavia ben più radicato rispetto ai tempi di cui abbiamo una concreta percezione ai giorni nostri.

Anche se la virtualizzazione potrebbe apparire, soprattutto ai più giovani, un fenomeno recente, se non addirittura nato o confuso con il cloud computing, in verità esiste da moltissimi anni, tant’è che gli hypervisor hanno formato la loro prima manifestazione sui mitici mainframe IBM, indicativamente attorno al 1970. Si tratta di macchine profondamente diverse da quelle che oggi siamo abituati a concepire sia come pc che come server / datacenter, ma iniziavano a prefigurarne le logiche operative, con l’esigenza di testare ambienti “al volo” senza dover riconfigurare ogni volta la macchina fisica.

Virtualizzazione e Cloud Computing
Virtualizzazione e Cloud Computing, attenzione a non confonderli

Per vedere le prime avvisaglie di un hypervisor moderno occorre attendere la seconda metà degli anni ‘80, con l’arrivo di Simultask, un VMM in grado di eseguire sistemi operativi su host Unix, per processori Intel 8086, mentre qualche anno più tardi SoftPC ha esteso queste capacità anche ad altri sistemi operativi host, innanzitutto per consentire l’emulazione di MS-DOS, all’epoca molto utilizzato.

Il successivo livello di evoluzione è dunque arrivato verso la fine degli anni ’90 e i primi anni 2000, quando hanno iniziato a proporsi sul mercato i prodotti che ancora oggi ritroviamo tra i protagonisti assoluti nella scena della virtualizzazione, sia a livello di VMM che di hardware adatto a supportarlo nativamente. Nel 2005, sia Intel che AMD, i due produttori di riferimento per i processori x86, hanno introdotto nelle linee server delle CPU con istruzioni specifiche per il supporto alla virtualizzazione. È il caso degli Intel-VT e degli AMD-V.

In tempi più recenti, la progressiva diffusione dei servizi di cloud computing ha contribuito all’affacciarsi di altre tecnologie che, pur non nascendo nello specifico per la gestione di macchine virtuali, consentono di virtualizzare dei contenuti. È il caso dei container, microservizi molto utilizzati nella programmazione cloud native di applicazioni pacchettizzate. Dal punto di vista computazionale i container risultano piuttosto leggeri, soprattutto per il fatto che, a differenza di un hypervisor, per eseguire un applicazione guest, non devono virtualizzare anche le risorse hardware, che continuano ad essere gestite dal sistema operativo host. Ciò consente ai container di essere più parsimoniosi in termini di utilizzo CPU e RAM sui server.

Anche se molto attraente per via delle intrinseche doti di agilità e scalabilità, non è tuttavia coerente considerare un container come un software capace di pensionare in via definitiva un hypervisor, dal momento che quest’ultimo è in grado di coprire una gamma di funzioni di virtualizzazione più ampia, pur a discapito dell’agilità complessiva. Container e hypervisor sono pertanto entità differenti, chiamate a risolvere esigenze altrettanto distinte, nonostante alcune di essere possano in certi frangenti coincidere.

In merito alla sicurezza, non esiste a priori una condizione più sicura di altre. Se è pur vero che nel caso degli hypervisor, una vulnerabilità su una macchina virtuale rimane isolata, senza condizionare le altre, è tuttavia possibile attaccare un sistema server sullo stesso livello dell’hypervisor, grazie a violazioni di tipo hyperjacking, che consentono di installare software malevolo capace di intercettare le operazioni di un sistema operativo, spesso eludendo quella che a tutti gli effetti potrebbe sembrare un’architettura sicura, ma non certo inviolabile. Dal momento che le macchine virtuali, anche se infette, non possono propagare particolari danni al sistema host, gli esperti di cybersicurezza devono pertanto concentrare le loro attenzioni sul livello dell’hypervisor che nel caso in cui venisse violato potrebbe compromettere tutte le macchine virtuali da lui monitorate.

Le tipologie di Hypervisor

Nella loro più recente evoluzione, gli hypervisor vengono identificati in due tipologie di riferimento, in cui varia sostanzialmente la sua configurazione nei confronti dell’hardware e del sistema operativo delle macchine fisiche da cui trae le risorse da allocare alle macchine virtuali che è chiamato a gestire. È pertanto comune e ricorrente sentir parlare di hypervisor di tipo 1 e di tipo 2. Vediamo le sostanziali differenze.

Tipo 1

L’hypervisor di tipo 1 viene eseguito direttamente sull’hardware host, per eseguire le macchine virtuali come guest. Altrimenti noto come hypervisor nativo o bare metal, fa sostanzialmente le veci del sistema operativo host, pianificando e monitorando la gestione delle risorse da allocare alle macchine virtuali installate sul hardware host. Gli hypervisor di tipo 1 sono usati soprattutto per i data center e in generale per la virtualizzazione su ambienti server, sia on premises che in cloud.

Tra gli hypervisor di tipo 1 più noti riscontriamo KVM, molto diffuso ed integrato nel kernel delle distribuzioni Linux a partire dal 2007, piuttosto che Xen, VMware (vSphere, ESX e ESXi), Oracle VR Server (versioni SPARC e x86) e Microsoft Hyper-V.

Tipo 2

L’hypervisor di tipo 2 è a tutti gli effetti un guest, installato come un software applicativo su un sistema operativo host convenzionale. Rispetto al hypervisor di tipo 1 riscontriamo pertanto un livello architetturale in più, ragion per cui viene utilizzato in prevalenza per utilizzo sui personal computer, qualora si ponga l’esigenza, piuttosto che la semplice curiosità, di installare più sistemi operativi su una macchina, senza modificarne la configurazione di base. Le macchine virtuali vengono eseguite come processi sul sistema operativo host, che gestire le risorse hardware host che vengono allocate virtualmente alle VM proprio dall’hypervisor.

Tra gli hypervisor di tipo 2 più noti riscontriamo VMWare Workstation, WMWare Player, Oracle VM Virtualbox e Parallels Desktop, quest’ultimo particolarmente noto in quanto soluzione di riferimento per coloro che intendono installare Windows sui sistemi Mac, per eseguire applicativi non disponibili per il sistema operativo host di casa Apple.