Hypervisor: cos’è e perché utilizzarne uno. Una guida completa e “viva” (ovvero aperta al contributo di tutti i nostri lettori) nel momento in cui proprio gli ambienti virtuali sono e saranno sempre più decisivi per attivare digital workspace, digital workplace, piattaforme VDI, iperconvergenza ecc ecc e tutto ciò che attiene al nuovo e inevitabile ufficio ibrido.
Negli ultimi anni la virtualizzazione ha letteralmente rivoluzionato il mondo IT, sia a livello on-premises che in cloud, dove alle prime macchine virtuali si è aggiunta una grande varietà di servizi informatici. Gli hypervisor, o Virtual Machine Monitor (VMM), hanno esercitato, ed esercitato tuttora, un ruolo di primissimo piano nell’abilitare le risorse virtuali che formano l’essenza delle moderne architetture IT. Vediamo in cosa consistono e perché
Cos’è un Hypervisor?
Nella sua concezione originale, tuttora da intendersi quale la più generica, l’hypervisor è un’applicazione che ha il compito di creare e gestire il funzionamento delle macchine virtuali. Altrimenti noto come Virtual Machine Monitor (VMM), l’hypervisor consente ad un server host di supportare più VM guest, che gli utenti finali possono utilizzare in maniera analoga rispetto alle macchine tradizionali, con i vantaggi in termini di agilità e flessibilità che soltanto una gestione a livello software può garantire.
Nella sua configurazione tradizionale, un computer può disporre delle proprie risorse di elaborazione per soddisfare le richieste di un solo sistema operativo, direttamente installato sul sistema fisico. L’hypervisor consente di astrarre le risorse fisiche della macchina (CPU, memoria, storage, rete, ecc.) per formare dei pool di risorse da distribuire come macchine virtuali. L’hypervisor ha dunque il compito di pianificare le risorse da dedicare alle singole macchine virtuali, in funzione delle risorse hardware fisiche effettivamente disponibili. Tale condizione deve essere garantita da un monitoraggio in tempo reale di tutti i parametri in esecuzione sull’hardware host, in modo che le VM possano rispondere con successo alle richieste provenienti dai carichi di lavoro assegnati.
Come vedremo nel paragrafo dedicato a questo specifico aspetto, gli hypervisor sono applicazioni in grado di interfacciarsi sia con l’hardware host, fungendo da sistema operativo, che con il sistema operativo host, fungendo da normale software applicativo.
[Arriva il VMworld 2021, uno degli eventi più attesi da imprese, manager di tutto il mondo e da tutto l’ecosistema di partner che ruota intorno a VMware. Protagoniste di quest’anno saranno la magia e la potenza del cloud al servizio di app, networking, sicurezza e digital workspace.
Tutti i dettagli dello straordinario programma e, soprattutto, il link per iscrivervi li trovate qui!]
La breve storia degli Hypervisor
La virtualizzazione delle risorse IT è diventata un argomento popolare a partire dagli anni ’90, eppure fonda le sue basi in tempi ben più remoti, quando nei primissimi anni ’70 IBM cercava nuove soluzioni per i leggendari computer mainframe, in merito alla possibilità di eseguire un testing rapido degli ambienti senza dover riconfigurare ogni volta la macchina fisica. Si tratta del resto di un’esigenza tuttora presente e quanto mai attuale anche sui server attuali. L’idea originale non era dunque volta alla creazione di macchine virtuali come le intendiamo ora, ma il presupposto tecnologico trova basi comuni nell’astrarre risorse logiche per ottimizzare l’impiego delle risorse fisiche, aumentando in questo caso l’efficienza dei processi di testing. Perché ciò accadesse, era già necessaria l’azione di un hypervisor.
Gli hypervisor, come li conosciamo oggi, vedono però la luce soltanto nella seconda metà degli anni ’80, con l’arrivo di Simultask, un virtual machine monitor capace di operare su host Unix utilizzando le istruzioni dei processori Intel 8086. Tale episodio segnò l’inizio di una fortunata, quanto pionieristica, serie di applicativi VMM in grado di rendere disponibile la virtualizzazione di un crescente numero di sistemi operativi, a cominciare dal celebre MS-DOS.
Nel corso degli anni ’90 si ha il vero e proprio salto di scala nella diffusione degli hypervisor, la cui maturità sul mercato è diventa un reale fattore nei primi anni 2000, quando Intel e AMD hanno introdotto sul mercato linee di processori dotati di istruzioni specifiche per la virtualizzazione. Intel-VT e AMD-V hanno infatti consentito agli sviluppatori di hypervisor un hardware in grado di supportare nativamente le loro applicazioni, con un incremento prestazionale davvero considerevole.
Il resto è storia recente, in cui gli hypervisor trovano un’applicazione sempre più ampia, occupandosi di virtualizzare non soltanto i server, ma quasi tutte le risorse IT tradizionali.
Perché utilizzarne uno
Gli Hypervisor consentono di ottimizzare le risorse hardware, rendendole disponibili via software con un maggior livello di efficienza. Grazie alle tecnologie di virtualizzazione, i server sono in grado di ospitare più macchine virtuali, sfruttando pertanto in maniera più elevata le loro dotazioni hardware, che altrimenti rischierebbero di rimanere in gran parte inutilizzate.
Un tale livello di efficienza comporta ovviamente l’esigenza di un maggior livello di gestione rispetto alle configurazioni tradizionali, ma i benefici che gli hypervisor e le macchine virtuali sono in grado di garantire risultano tangibili sia nei data center delle piccole aziende che, in misura crescente, nelle realtà che possono contare su un parco IT formato da centinaia di server.
I vantaggi degli hypervisor e della virtualizzazione delle risorse IT
Nel contesto di una generale strategia di trasformazione digitale ed ammodernamento dei sistemi informatici, i vantaggi offerti dalle macchine virtuali e, più in generale dall’avvalersi di tecnologie di virtualizzazione per soddisfare la richiesta di risorse IT possono essere così sintetizzati:
Riduzione dei costi: le macchine virtuali limitano l’impiego alle macchine fisiche e di conseguenza i costi legati all’hardware, sia in merito all’ottimizzazione delle risorse effettivamente richieste che alla manutenzione complessiva. L’aumento di efficienza dei server consente di ottimizzare l’efficienza dell’intero sistema IT, risolvendo in gran parte l’eterno problema legato al sottoutilizzo delle risorse.
- Elevata scalabilità nei servizi: l’astrazione delle risorse IT consente di disporre in tempi estremamente rapidi delle risorse necessarie per soddisfare nuovi carichi di lavoro, anche in situazioni di emergenza o per far fronte ad eventuali imprevisti. Un hypervisor mette a disposizione una macchina virtuale nel giro di pochi click, evitando di disporre e dover configurare nello specifico una macchina fisica.
- Miglior continuità di business: le macchine virtuali sono isolate rispetto all’infrastruttura fisica che le esegue, per cui un problema su di esse non si ripercuote causando dei problematici downtime a livello generale.
- Efficienza backup e sicurezza: l’isolamento delle risorse e la virtualizzazione degli elementi IT agevola notevolmente la gestione di backup e ripristino dei sistemi, che può essere fortemente automatizzata, oltre a consentire una notevole rapidità in caso di duplicazione e produzione di istanze differenti. L’isolamento delle macchine virtuali consente alle minacce informatiche di non propagarsi a livello dei sistemi host, garantendo un livello di sicurezza intrinseco nel design di questa tecnologia.
- Agilità sviluppo e testing applicazioni: l’esecuzione di istanze virtuali consente la creazione di ambienti in cui sviluppare e testare rapidamente le funzionalità dei software. La creazione degli snapshot consente di riportare in qualsiasi momento il sistema in una determinata condizione, senza dover riconfigurare tutto l’ambiente operativo. In questo modo, il processo di sviluppo risulta più agile e vengono sensibilmente ridotti tutti i rischi tradizionalmente derivanti dalle fasi di testing, grazie alla possibilità di isolare totalmente l’ambiente in cui vengono eseguite.
- Gestione unificata delle risorse: la virtualizzazione consente agli amministratori IT di gestire tutte le risorse a livello software, con il costante monitoraggio su tutti i processi attivi, garantito mediante un pannello di controllo che consente la visione unificata attraverso il costante dialogo con l’hypervisor.
- Maggior sostenibilità: l’ottimizzazione dei server, oltre a garantire un’efficienza più elevati nel rapporto prezzo prestazioni consente di ridurre sensibilmente il fabbisogno energetico generale dell’infrastruttura IT. Una condizione ulteriormente favorevole è garantita dall’isolamento delle macchine virtuali, che possono essere attivate e disattivate in funzione delle esigenze, riducendo il carico sui sistemi host che garantiscono la loro esecuzione.
- Minor dipendenza dai fornitori hardware: L’hypervisor consente di rendere disponibili le risorse a livello logico, riducendo sensibilmente la dipendenza e i potenziali lock-in derivanti dalle configurazioni di hardware host. Questo non vuol dire che vengono eliminati i server, anzi, che è possibile sfruttare tecnologie differenti, anche non compatibili tra loro, in quanto l’hypervisor è in grado di astrarre le risorse necessarie alla creazione di pool virtuali. In altri termini, l’utente finale può avvalersi di varie VM identiche, senza doversi minimamente preoccupare del fatto che queste si basano su server fisici del tutto differenti tra loro.
Gli hypervisor e la virtualizzazione dei sistemi IT
Grazie alle sue tecnologie, un hypervisor può gestire la virtualizzazione un’ampia tipologia di risorse hardware, tra cui:
- Virtualizzazione dei server: nella sua configurazione più classica, l’hypervisor consente di avviare più sistemi operativi su un unico server fisico. È il processo che genera le macchine virtuali e che, come abbiamo visto, ha posto le basi per una nuova era nell’information technology, dove l’hardware fisico rimane qualcosa di necessario, ma può diventare un fattore limitante se non viene sfruttato nel pieno delle proprie potenzialità.
- Virtualizzazione dei dati: in maniera simile a quanto avviene nel caso dei server, un hypervisor può astrarre risorse storage fisiche e distribuirle come un pool di risorse virtuali. Un vantaggio non indifferente, se si considera che un hypervisor può addirittura unificare ed ottimizzare a livello software la gestione di differenti dispositivi di storage, NAS, SAN, ecc. che tra di loro potrebbero essere nemmeno compatibili. Gli utenti finali vengono del tutto sollevati da tale complessità nella gestione dell’hardware, disponendo di un unico pannello di controllo attraverso cui monitorare tutti i loro dati. Un hypervisor storage costituisce la base per implementare tutte le strategie legate alla gestione virtuale dei dati, ivi compresa l’automazione delle procedure di backup e disaster recovery ormai indispensabili per garantire la continuità di business delle aziende.
- Virtualizzazione della rete: un hypervisor può riprodurre tutti gli elementi di una rete fisica, che vengono astratti e distribuiti a livello software. Le reti virtuali consentono di disporre di dotazioni e servizi quali porte, router, switch, firewall, VPN, load balancing in maniera molto simile a quanto avviene nel caso di una rete fisica tradizionale, con una maggior flessibilità nella gestione dei carichi di lavoro.
- Virtualizzazione dei desktop: oltre alle risorse fondamentali, un hypervisor può gestire anche applicazioni più specifiche, come avviene nel caso della distribuzione di un ambiente desktop con le sue applicazioni, alla base del modello Desktop as a Service di cui sentiremo sempre più parlare nei prossimi anni. Grazie alla virtualizzazione è infatti possibile abilitare con pochi click un desktop virtuale pienamente operativo, senza dover ogni volta installare e configurazione un pc fisico.
Le tipologie
Abbiamo visto come, nel corso degli anni, il crescente successo della virtualizzazione abbia generato una grande varietà di Hypervisor, per gestire a livello software la maggior parte delle risorse IT (CPU, Memorie, Storage, Rete, ecc.). Per quanto riguarda la creazione e il monitoraggio delle macchine virtuali, è lecito riferirsi a due principali tipologie di Hypervisor, il cui funzionamento può facilmente illustrarci le logiche informatiche che costituiscono le basi della virtualizzazione anche in altri contesti applicativi.
Hypervisor di tipo 1
Si parla di hypervisor di tipo 1, o bare metal, nel caso in cui la sua implementazione avviene direttamente su un server che funge da hardware host, per eseguire le macchine virtuali come sistemi guest (guest VM). In questo modo, l’hypervisor agisce in buona sostanza da sistema operativo, non essendovi ulteriori livelli tra lui e l’hardware fisico che impiega per astrarre le risorse e renderle disponibili come pool a livello software. Gli hypervisor di tipo 1 sono pertanto molto utilizzati direttamente nei data center e nella virtualizzazione in ambiente server, sia on-premises che in cloud.
Hypervisor di tipo 2
Si parla di hypervisor di tipo 2 nel caso in cui la sua implementazione avviene a livello software su un sistema operativo host. A differenza di quanto accade nel caso dei sistemi bare metal, un hypervisor di tipo 2 non comunica direttamente con l’hardware host. Vi è dunque la presenza di un ulteriore livello di architettura, che consente il suo impiego anche sui personal computer, per rendere possibile l’esecuzione di macchine virtuali quali applicativi gestiti direttamente da un comune sistema operativo. Gli hypervisor di tipo 2 si rivolgono anche all’utilizzo individuale e consentono dunque una notevole flessibilità e semplicità di impiego. È possibile utilizzare un hypervisor di tipo 2 per testare sistemi operativi differenti su una singola macchina, senza modificare la sua configurazione di base. Le istanze virtuali consentono inoltre di testare le singole applicazioni senza compromettere la generale stabilità di un sistema operativo host.
Hypervisor vs Cloud
Le tecnologie di virtualizzazione, e di conseguenza gli hypervisor, hanno costituito la base per garantire i servizi in cloud. I server contenuti nei data center dei provider vengono infatti utilizzati per creare dei pool virtuali da vendere sotto forma di servizio agli utenti finali. Cloud e hypervisor vanno a costituire due fenomeni complementari, ma del tutto distinti a livello di significato e funzionamento. Il cloud è una piattaforma di servizi che offre risorse virtuali per eseguire differenti operazioni; l’hypervisor è la tecnologia che la rende possibile, rendendo indipendenti le macchine virtuali dall’infrastruttura fisica che le supporta. Per quanto cloud e virtualizzazione siano destinate a viaggiare a braccetto, è opportuno tenere ben presente i caratteri distintivi, soprattutto considerando come la virtualizzazione si estenda ben oltre i confini della nuvola, supportando anche le infrastrutture IT dei data center on-premises.
[Arriva il VMworld 2021, uno degli eventi più attesi da imprese, manager di tutto il mondo e da tutto l’ecosistema di partner che ruota intorno a VMware. Protagoniste di quest’anno saranno la magia e la potenza del cloud al servizio di app, networking, sicurezza e digital workspace.
Tutti i dettagli dello straordinario programma e, soprattutto, il link per iscrivervi li trovate qui!]
Hypervisor vs Microservizi (Container)
Negli ultimi anni, soprattutto grazie alla crescente diffusione dei servizi in cloud, è possibile disporre di ambienti di sviluppo in grado di accelerare notevolmente le tradizionali pipeline dedicate alla realizzazione del software. Un caso evidente è offerto dai container e, più in generale, dai microservizi in grado di supportare le applicazioni cloud native, grazie alla loro struttura pacchettizzata.
Un container è per logica molto più “leggero” di una macchina virtuale, in quanto non si occupa di virtualizzare le risorse hardware, dal momento che queste rimangono a capo del sistema operativo host della macchina. Tuttavia, un container non può, se non per un campo limitato di applicazioni, essere considerato quale un sostituto di una macchina virtuale, capace di garantire una gamma di funzioni virtuali molto più ampia, pur a fronte di una minor agilità complessiva nella gestione. È dunque necessario non fare confusione tra quelle che di fatto sono due manifestazioni del tutto differenti di tecnologie della virtualizzazione, valutando piuttosto il loro impiego in base ai pro e i contro che possono caratterizzare nel soddisfare le nostre esigenze specifiche.
Hypervisor e sicurezza
La classica domanda che a questo punto ciascuno di noi potrebbe porsi è la seguente: “gli hypervisor sono sicuri?”. La risposta, tendenzialmente positiva, non è tuttavia banale e presuppone un livello di attenzione elevato non soltanto nei confronti della tipologia da scegliere, ma anche al suo effettivo livello di implementazione, dove si rendono assolutamente indispensabili le cautele e le best practice da adottare per quanto concerne qualsiasi sistema informatico.
Una macchina virtuale è per design piuttosto sicura, in quanto la sua esecuzione è isolata rispetto al sistema operativo host e all’hardware host. In altri termini, se si manifestasse un fenomeno malevolo su una macchina virtuale, gli effetti non si propagherebbero sul sistema host che la esegue. Sarà quindi sufficiente risolvere localmente il problema o avviare direttamente una nuova istanza virtuale per ripristinare la corretta condizione operativa.
Il potenziale punto debole non è quindi da intendersi nell’applicazione finale, ma va posto proprio a livello dell’hypervisor. Grazie a particolari attacchi, definiti Hyperjacking, è possibile aggredire direttamente l’hypervisor, grazie all’installazione di software malevolo in grado di intercettare le sue comunicazioni con i sistemi host. Se si verificasse tale condizione, la sicurezza del sistema verrebbe compromessa nel suo insieme, collocandosi ad un livello inferiore rispetto a quello delle applicazioni monitorate dall’hypervisor stesso.
Se intendiamo gli hypervisor come applicazioni, cosa che a tutti gli effetti sono, si può valutare la strategia necessaria ai fini di garantire un livello di sicurezza adeguato per la loro esecuzione. Da un lato è necessario proteggere l’intera infrastruttura host, dall’altro è opportuno agire a livello di design, per creare situazioni agili e semplici da gestire a livello di istanza, dove le applicazioni si mantengano il più possibile isolate l’una dall’altra e nei confronti dei sistemi hardware e software indispensabili per garantire il loro funzionamento.