Un’introduzione al concetto di virtualizzazione

Che cosa sarebbe il cloud se non ci fosse la virtualizzazione? L’approntamento di risorse IT virtuali e l’astrazione dai calcolatori fisici che ne deriva hanno aperto la strada all’epoca del cloud. Tutte le tecniche che vengono messe in campo nell’ambito del cloud computing si basano su una virtualizzazione delle risorse IT, che si tratti di hardware, software, memoria o di componenti di rete. A livello tecnico queste forme di virtualizzazione si differenziano in modo netto. Vi mostriamo i principali campi di applicazione di diversi concetti di virtualizzazione evidenziandone pregi e difetti.

Che cos’è la virtualizzazione?

La virtualizzazione consiste in un’astrazione dalle risorse fisiche dell’IT e si possono astrarre sia i componenti hardware che quelli software. Una componente IT creata con la virtualizzazione si indica come componente virtuale o logica e può essere utilizzata esattamente come il suo pendant fisico.

Il vantaggio principale della virtualizzazione è il livello di astrazione tra le risorse fisiche e la rappresentazione virtuale, alla base di diversi servizi cloud che acquisiscono una sempre maggiore importanza nella quotidianità aziendale. Il concetto di virtualizzazione deve innanzitutto essere separato da quelli (a volte molto simili) di simulazione ed emulazione.

Definizione

Per virtualizzazione si intende l’astrazione di risorse IT fisiche come hardware, software, memoria e componenti di rete. Il fine è quello di fornire queste risorse a livello virtuale e distribuirle in modo flessibile a seconda delle esigenze tra i diversi clienti. Ciò dovrebbe migliorare l’utilizzo delle risorse IT.

Virtualizzazione: né simulazione né emulazione

Chi si occupa di virtualizzazione incontra immancabilmente i concetti di simulazione ed emulazione, che spesso vengono utilizzati come sinonimi, ma che tuttavia si differenziano l’uno dall’altro, nonché dal concetto di virtualizzazione.

  • Simulazione: Con simulazione si indica la completa riproduzione di un sistema per mezzo di un software. In questo caso, la “completezza” sta a significare che non soltanto sono imitate le funzioni nell’interazione con altri sistemi, ma anche tutte le componenti del sistema e la loro logica. I simulatori sono utilizzati per compilare, con finalità di analisi, programmi che sono stati sviluppati per un particolare sistema su un altro sistema. Ad esempio la simulazione consente di eseguire sulle moderne piattaforme software che erano stati progettati per calcolatori grandi e obsoleti. Diversamente dall’emulazione, la simulazione non è progettata per ottenere lo stesso fine pratico del processo che simula. Pensiamo ad esempio ai simulatori di volo: essi per l’appunto simulano un volo, ma non portano il pilota alla meta. Uno dei simulatori più famosi è l’iPhone Simulator in XCode, che viene utilizzato ad esempio per testare la progettazione di pagine web mobili su desktop.
  • Emulazione: mentre la simulazione mira a riprodurre sistemi, l’emulazione presenta le funzioni delle componenti hardware o software ma non la logica loro intrinseca. Il fine dell’emulazione è infatti di ottenere con il sistema riprodotto gli stessi risultati che ottiene il pendant reale. A differenza del simulatore, l’emulatore può perciò sostituire completamente i sistemi che riproduce. Un simulatore di volo che portasse davvero il pilota alla meta desiderata diverrebbe così un emulatore di volo. Un celebre progetto di software che rispecchia questo concetto è l’Android Emulator su Android Studio.

I simulatori e gli emulatori tornano utili in tre scenari:

  • Per la riproduzione di un ambiente hardware in modo da poter eseguire un sistema operativo che era stato in realtà sviluppato per altre piattaforme di processori
  • Per la riproduzione di un sistema operativo per eseguire applicazioni che sono state progettate per altri sistemi
  • Quando occorre riprodurre un ambiente hardware per un software divenuto obsoleto, le cui componenti originali non sono più disponibili.

Oltre a quella tra simulatori ed emulatori, occorre fare un’ulteriore distinzione per le soluzioni software che forniscono semplicemente un livello di compatibilità per colmare appunto le incompatibilità tra diverse componenti hardware e software. In questo caso viene riprodotto non l’intero sistema, ma soltanto una parte di un sistema, per esempio un’interfaccia. Esempi noti sono Wine (un acronimo ricorsivo per Wine Is Not an Emulator) e Cygwin.

Fatto

Wine stabilisce uno strato di compatibilità su sistemi operativi compatibili con POSIX (Linux, Mac, Solaris o BSD) che permette di eseguire programmi Windows. Il software si basa su una difficile ricostruzione del codice sorgente proprietario e non pubblico di Windows. La base della ricostruzione non era lo smantellamento del software protetto da copyright, bensì un reverse engineering nel contesto del testing della black box. A livello tecnico Wine non riproduce la logica interna dell’intero sistema operativo di Windows, ma soltanto l’API di Windows (Application Programming Interface). Le chiamate di sistema di Windows sono accettate da Wine, che le converte immediatamente in chiamate POSIX e le inoltra al sistema sottostante.

Come funziona la virtualizzazione?

La virtualizzazione assomiglia ai concetti di simulazione ed emulazione, anche se serve a un altro scopo. I simulatori e gli emulatori implementano un modello di un sistema informatico realizzato mediante software che serve a colmare le incompatibilità. Il fine è di eseguire le applicazioni su un sistema su cui non sono supportate. Questo approccio presenta due svantaggi, in quanto lo sviluppo di emulazioni e simulazioni è molto dispendioso e inoltre entrambi gli approcci portano a un’inevitabile perdita di prestazioni.

Idealmente la virtualizzazione dovrebbe essere concepita in modo da dover essere simulata o emulata il meno possibile. Al suo posto le tecnologie di virtualizzazione dovrebbero stabilire soltanto un grado di astrazione che consenta di fornire risorse IT indipendentemente dalla loro base fisica.

Per fare un esempio, se a scopo di test un utente vuole eseguire sul proprio computer Windows 7 una o più versioni virtuali di Windows 7, utilizza un software di virtualizzazione. Se lo stesso utente invece volesse avviare sullo stesso calcolatore due versioni virtuali di Ubuntu, avrebbe bisogno di un software di virtualizzazione capace di colmare le incompatibilità tra il sistema Windows su cui opera e il sistema Linux che deve eseguire attraverso la simulazione.

Numerose soluzioni software utilizzate nell’ambito della virtualizzazione contengono emulatori e nella pratica i due concetti spesso si sovrappongono.

Forme di virtualizzazione

Il concetto di “virtualizzazione” venne coniato negli anni 60 per indicare la creazione di macchine virtuali, un concetto che ha a che fare con la virtualizzazione dell’hardware. Nel moderno paesaggio IT esistono diverse forme di virtualizzazione che si riferiscono all’astrazione di risorse IT: software, memoria, dati o componenti di rete. In generale si può distinguere tra:

  • Virtualizzazione di hardware
  • Virtualizzazione di software
  • Virtualizzazione di memoria
  • Virtualizzazione di dati
  • Virtualizzazione di reti

Virtualizzazione di hardware

Il concetto di virtualizzazione dell’hardware si riferisce a tecnologie che permettono di fornire componenti hardware attraverso software indipendentemente dalla loro base fisica. Il primo esempio di virtualizzazione dell’hardware è la macchina virtuale (abbreviato VM).

Una VM è un computer virtuale che si comporta con l’utente finale allo stesso modo di un computer fisico dotato di hardware e sistema operativo. Le macchine virtuali funzionano come sistemi guest virtuali su uno o più sistemi fisici chiamati host. Il livello di astrazione tra la base fisica e il sistema virtuale in una virtualizzazione hardware viene stabilito da un cosiddetto hypervisor.

N.B.

Un hypervisor (o Virtual Machine Monitor, VMM) è un software che consente il funzionamento di più sistemi guest su un unico host. Ci sono due tipi di hypervisor: l’hypervisor di tipo 1 si colloca direttamente sull’hardware del sistema host. Gli hypervisor di questo tipo sono chiamati bare metal hypervisor. Gli hypervisor di tipo 2 invece lavorano nel sistema operativo dell’host e utilizzano i driver di dispositivo forniti dal sistema per accedere all’hardware. Si parla perciò di un hosted hypervisor.

Gli hypervisor gestiscono le risorse hardware messe a disposizione dal sistema host, come ad esempio CPU, RAM, memoria di archiviazione e periferiche e le condividono con un numero di sistemi guest a piacere. A livello tecnico ciò può avvenire con una virtualizzazione completa o una paravirtualizzazione.

  • Virtualizzazione completa: con la virtualizzazione integrale l’hypervisor di ciascuna macchina virtuale riproduce un ambiente hardware completo. In questo modo ogni VM dispone di un proprio contingente di risorse hardware fornito dall’hypervisor e può eseguirvi applicazioni. Invece l’hardware fisico del sistema host rimane nascosto al sistema operativo guest. Questo approccio consente il funzionamento di sistemi guest non modificati. Le soluzioni software più popolari per la virtualizzazione completa sono Oracle VM VirtualBox, Parallels Workstation, VMware Workstagion, Microsoft Hyper-V e Microsoft Virtual Server.
     
  • Paravirtualizzazione: mentre con la virtualizzazione completa è fornito un ambiente hardware virtuale per ogni VM, per la paravirtualizzazione l’hypervisor mette a disposizione soltanto un’interfaccia di programmazione (API) che consente ai sistemi operativi guest di accedere all’hardware fisico del sistema host. La paravirtualizzazione offre quindi un vantaggio in termini di prestazioni rispetto alla virtualizzazione completa. Ciò richiede tuttavia che il kernel del sistema operativo guest venga portato all’API, in modo che soltanto i sistemi guest modificati possano essere paravirtualizzati. I fornitori di sistemi proprietari, ad esempio Microsoft Windows, solitamente non prevedono la possibilità di tale modifica. Xen e Oracle VM Server for SPARC sono tra gli hypervisor che consentono una paravirtualizzazione. Il concetto viene anche utilizzato nel sistema operativo mainfraime IBM z/VM.

Per l’utente finale una macchina virtuale non presenta differenze rispetto a un computer fisico. La virtualizzazione hardware riguarda perciò la possibilità di scegliere una varietà di server virtuali per diversi utenti sulla base di una potente piattaforma di elaborazione: la base del popolare modello di hosting condiviso.

Fatto

Con lo Shared Hosting un provider di hosting gestisce e mantiene la macchina fisica in un data center ottimizzato e fornisce ai suoi clienti risorse hardware virtualizzate come sistemi guest chiusi.

Un ulteriore campo di applicazione della virtualizzazione hardware è il consolidamento dei server in ambito aziendale. La virtualizzazione viene utilizzata con l’obiettivo di aumentare l’utilizzo dell’hardware del server. I componenti hardware come i processori sono costosi da acquistare; per evitare che costose risorse CPU rimangano inutilizzate, le aziende evitano architetture IT nelle quali le diverse applicazioni server sono svolte da computer distinti ed eseguono invece diversi server come sistemi guest separati sulla stessa piattaforma hardware. Ciò comporta essenzialmente tre vantaggi:

  • Un miglior utilizzo del server
  • Una distribuzione efficace dei supporti di memorizzazione
  • Un minor consumo di energia per funzionamento e raffreddamento

Questo approccio è particolarmente efficace quando i server consolidati funzionano con picchi di prestazione sfalsati. Se invece l’hardware del sistema host viene utilizzato contemporaneamente da tutti i sistemi guest, occorre accertarsi che ci siano risorse sufficienti per tutti i workload. D’altra parte c’è anche il pericolo che un consumo intensivo di risorse in una delle macchine virtuali abbia effetti negativi sulle prestazioni di altre applicazioni in altre VM sullo stesso sistema host.

Fatto

Uno dei campi centrali di applicazione della virtualizzazione hardware in contesto aziendale è il consolidamento dei server. Perciò quando si tratta del funzionamento di macchine virtuali si parla anche di virtualizzazione del server.

La virtualizzazione dell’hardware è un concetto di virtualizzazione relativamente sicuro. Ogni sistema guest è eseguito isolatamente in un ambiente hardware virtuale. Se uno dei sistemi guest viene attaccato da hacker o danneggiato da un malware nelle sue funzioni, ciò di solito non ha alcun effetto sugli altri sistemi guest che poggiano sullo stesso sistema host. Un’eccezione è però rappresentata dagli attacchi in cui gli hacker sfruttano i punti deboli del software hypervisor per riuscire ad avere accesso al sistema host sottostante. Quanto sia sicuro il funzionamento della macchina virtuale dipende sempre dal relativo software di virtualizzazione e dalla velocità con cui vengono individuate e chiuse le falle di sicurezza da parte del relativo fornitore.

Negli ultimi tempi la virtualizzazione hardware ha dovuto fronteggiare un’agguerrita concorrenza da parte di altri concetti di virtualizzazione. Uno dei motivi che ha portato questo è il cosiddetto overhead delle macchine virtuali: la tecnologia dei container ad esempio, una forma di virtualizzazione di software, non ha bisogno dell’hypervisor.

Una virtualizzazione sul piano del sistema operativo, nella quale le applicazioni sono eseguite in container isolati, è perciò molto più efficiente in termini di risorse. I container offrono tuttavia un livello di isolamento significativamente inferiore rispetto alle macchine virtuali. Per questo motivo è improbabile che una delle tecnologie possa completamente soppiantare l’altra. Vale molto di più l’idea di trovare il concetto di virtualizzazione ottimale per il campo di applicazione desiderato.

Vantaggi e svantaggi della virtualizzazione hardware:

Vantaggi

Svantaggi

✔ Nell’ambito del consolidamento server è possibile allocare le risorse hardware in modo dinamico e utilizzarle in modo più efficiente.

✘ La riproduzione di un ambiente hardware, sistema operativo incluso, porta a un overhead.

✔ L’hardware consolidato è più efficiente dal punto di vista energetico rispetto ai computer separati.

✘ La performance di una macchina virtuale può essere influenzata da altre VM sullo stesso sistema host.

✔ Con l’isolamento del workload le macchine virtuali offrono un livello di isolamento e conseguentemente di sicurezza relativamente alto.

Virtualizzazione dei software

Se anziché componenti hardware vengono virtualizzate componenti software, si parla di virtualizzazione dei software. Gli approcci comuni a questo concetto di virtualizzazione sono:

  • Virtualizzazione delle applicazioni
  • Virtualizzazione del desktop
  • Virtualizzazione del sistema operativo

Virtualizzazione delle applicazioni

Con virtualizzazione delle applicazioni (in inglese application virtualization), si intende l’astrazione di singole applicazioni dal sistema operativo sottostante.

Sistemi di virtualizzazione delle applicazioni come VMware ThinApp, Microsoft App-V o Citrix XenApp consentono di eseguire programmi in ambienti di runtime isolati e di distribuirli su più sistemi senza richiedere modifiche ai sistemi operativi locali, ai file system o al rispettivo registry.

Con VMware ThinApp ad esempio si possono convertire pacchetti di dati di Windows Installer (ad esempio file MSI) in file EXE autonomi. Essi contengono intere biblioteche e file di configurazione che sono necessari per eseguire l’applicazione su un sistema operativo Windows a piacere.

La virtualizzazione delle applicazioni è particolarmente adatta per l’implementazione locale, ad esempio per proteggere il sistema operativo sottostante da possibili codici maligni. In alternativa le applicazioni virtualizzate possono essere fornite su un solo server per diversi client nella rete. In questo caso gli utenti finali accedono ad applicazioni virtualizzate attraverso lo streaming delle applicazioni.

Contemporaneamente l’applicazione desiderata comprensiva di tutte le dipendenze viene copiata dal server sul rispettivo dispositivo client ed eseguita in un ambiente runtime isolato, senza che il software debba essere installato sul sistema di destinazione. L’incapsulamento delle applicazioni incluso l’ambiente di runtime consente inoltre di copiare ed eseguire i programmi su memorie di archiviazione portatili come chiavette USB.

Lo scopo della virtualizzazione delle applicazioni è di separare i programmi dal sistema operativo sottostante, in modo da poterli portare e gestire centralmente. In un contesto aziendale il concetto si adatta ad esempio per fornire le applicazioni di Office.

Vantaggi e svantaggi della virtualizzazione delle applicazioni:

Vantaggi

Svantaggi

✔ Il software dell’applicazione può essere fornito e gestito centralmente.

✘ Le applicazioni che sono strettamente integrate con il sistema operativo o che necessitano l’accesso a particolari dispositivi, non si possono virtualizzare.

✔ Attraverso l’isolamento dell’applicazione il sistema sottostante è protetto da codici maligni.

✘ La virtualizzazione delle applicazioni pone domande riguardo alle licenze.

✔ Il software può essere rimosso dal sistema senza lasciare residui.

La virtualizzazione del desktop

La virtualizzazione del desktop indica un concetto per il quale gli ambienti desktop vengono forniti centralmente e possono essere utilizzati attraverso una rete. Questo approccio trova applicazione in primo luogo in contesti aziendali.

Le aziende moderne mettono normalmente a disposizione dei propri dipendenti una postazione di lavoro comprensiva di PC. Ognuno di questi computer deve essere configurato e gestito. L’amministrazione locale tuttavia è dispendiosa in termini di tempo. Per risparmiare risorse nel personale sono stati sviluppati diversi concetti per la virtualizzazione degli ambienti desktop.

La virtualizzazione del desktop si basa su una struttura client server. Lo scambio di dati tra il server e il client avviene attraverso i cosiddetti protocolli remote display. I fornitori principali delle soluzioni software per la virtualizzazione del desktop come Microsoft, VMware o Citrix si affidano a tecnologie proprietarie. A seconda di dove venga utilizzata la potenza di calcolo per fornire un desktop virtuale, viene fatta una distinzione tra approcci basati su host e client.

  • Virtualizzazione desktop basata sull’host: per virtualizzazione desktop basata sull’host si intendono tutti gli approcci nei quali i desktop virtuali vengono eseguiti direttamente sul server. In questo caso la potenza di calcolo totale per fornire l’ambiente desktop e per il funzionamento delle applicazioni viene messa a disposizione dall’hardware server. Gli utenti accedono al desktop virtuale basato sull’host con un numero di dispositivi client a piacere attraverso la rete. È possibile utilizzare PC o notebook completamente attrezzati (thick clients), dispositivi con hardware ridotto (thin clients) o computer assolutamente minimali (zero clients), nonché tablet e smartphone. Normalmente è necessaria una connessione di rete permanente. La virtualizzazione desktop basata sull’host può essere implementata utilizzando le seguenti modalità:
  • Macchina virtuale basata su host: con questo approccio alla virtualizzazione ogni utente si connette a un dispositivo client con una propria macchina virtuale sul server. Si distingue tra una virtualizzazione desktop persistente, nella quale un utente si connette alla stessa VM in ogni sessione e una non persistente, in cui le macchine virtuali vengono assegnate casualmente. Se vengono utilizzate macchine virtuali basate sull’host nell’ambito della virtualizzazione del desktop, si parla di una Virtual Desktop Infrastructure (VDI). Le VM persistenti basate su host offrono agli utenti un grande spazio per la personalizzazione. I desktop virtuali che vengono forniti secondo questo approccio si possono infatti personalizzare come i desktop locali con applicazioni definite dall’utente e opzioni di visualizzazione individualizzate.
     
  • Terminal service: quando il client viene utilizzato solo come dispositivo di visualizzazione per ambienti desktop hostati centralmente, si parla di terminal services o di virtualizzazione della presentazione, che vengono messi a disposizione da un cosiddetto Terminalserver. Questo approccio della virtualizzazione desktop basata sull’host offre agli utenti solamente una minima possibilità di personalizzazione ed è perciò adatta a situazioni in cui un bisogna approntare un gran numero di postazioni lavorative altamente standardizzate con funzioni limitate. I terminal services sono utilizzati ad esempio nel commercio al dettaglio. Qui i thin client danno ai dipendenti la possibilità di controllare lo stato del magazzino e di visualizzare informazioni sul prodotto. I clienti utilizzano terminal di questo tipo per configurare in modo personalizzato le merci e per effettuare ordini.
     
  • Blade server: con l’aiuto di un blade server l’utente finale può accedere remotamente a macchine fisiche separate. Si tratta di un server modulare o di un alloggiamento del server che contiene diversi computer a scheda singola, i cosiddetti blades (in italiano: fogli). Nell’ambito della virtualizzazione desktop ogni ambiente desktop viene eseguito su un blade separato. Il vantaggio risiede nel fatto che sebbene i serverblade siano calcolatori fisici autonomi, condividono gli alimentatori dell’alloggiamento (alimentazione e raffreddamento) e sono gestiti centralmente.
  • Virtualizzazione desktop basata sul client: se la virtualizzazione del desktop avviene basandosi sul client, le risorse per il funzionamento dell’ambiente desktop devono essere fornite dal relativo dispositivo client. Questa modalità necessita perciò di un thick client con un hardware appropriato. Nella pratica la virtualizzazione desktop basata su client viene implementata utilizzando macchine virtuali o come streaming del sistema operativo.
  • Macchine virtuali basate sul client: con questa modalità di virtualizzazione l’ambiente desktop della macchina virtuale viene eseguito sul dispositivo client. Normalmente viene utilizzato un hypervisor. Ciascun desktop virtuale si sincronizza periodicamente con l’image del sistema operativo sul server, consentendo una gestione centrale e cicli di backup basati su image. Un ulteriore vantaggio di questo tipo di virtualizzazione è che le applicazioni possono essere disponibili anche localmente se la connessione al server si interrompe.
     
  • Streaming del sistema operativo: Con lo streaming del sistema operativo (OS streaming), il sistema operativo dell’ambiente desktop viene eseguito sull’hardware locale. Solamente il processo di avvio viene eseguito remotamente tramite un’image sul server. Lo streaming del sistema operativo è utile quindi in situazioni in cui occorre fornire interi gruppi desktop basandosi su un’unica image del sistema operativo. In questo modo si ha il vantaggio che gli amministratori devono gestire una sola image sul server con la quale possono apportare modifiche a tutti i desktop in streaming. Lo streaming del sistema operativo non necessita di hypervisor, tuttavia ha bisogno di una connessione di rete costante tra il server e il dispositivo client.

I diversi tipi di virtualizzazione desktop hanno innanzitutto il vantaggio di una gestione centralizzata, riducendo in modo significativo la gestione e il mantenimento soprattutto se si tratta di ambienti lavorativi standardizzati. Se però il reparto IT di un’azienda si trova davanti al problema di dover realizzare un’infrastruttura IT eterogenea con un grande numero di desktop diversi, questo vantaggio diventa relativo.

Le aziende che optano per la virtualizzazione del desktop beneficiano sicuramente di un vantaggio economico. Innanzitutto i think client dovrebbero ridurre sia i costi di acquisto dell’hardware che il fabbisogno energetico in ufficio; talvolta a parità di condizioni di lavoro è inoltre necessario un numero minore di licenze software. Ciò consente di risparmiare anche sulle licenze. Per quanto riguarda invece il server, il passaggio ai desktop virtuali comporta dei costi iniziali.

La virtualizzazione del desktop richiede server ad alte prestazioni. A seconda del tipo di virtualizzazione è inoltre necessaria una banda larga per la comunicazione dei dati nella rete. Si può perciò affermare che, a causa dei costi iniziali, la virtualizzazione del desktop a livello pratico conviene più che altro sul lungo termine.

Vantaggi e svantaggi della virtualizzazione del desktop:

Vantaggi

Svantaggi

✔ Consente una gestione centralizzata dell’ambiente desktop.

✘ Si presta soprattutto per infrastrutture omogenee.

✔ Gli utenti possono accedere al desktop virtuale con diversi dispositivi.

✘ Alcune tipologie richiedono una connessione di rete costante.

✔ Consente un backup centrale

✘ Elevate esigenze in termini di prestazioni del server, capacità di archiviazione e larghezza di banda della rete.

✔ I thin client permettono di risparmiare sia per quanto riguarda l’acquisto che per il funzionamento.

Virtualizzazione a livello del sistema operativo

I concetti di virtualizzazione a livello del sistema operativo poggiano su funzioni native del kernel dei sistemi operativi unixoid che consentono di eseguire in parallelo più istanze isolate dello spazio utente. A differenza della virtualizzazione hardware, in questo modo non si riproduce un sistema guest completo inclusivo del kernel, bensì le applicazioni si distribuiscono a livello del sistema operativo ai kernel del sistema host.

N.B.

I sistemi operativi moderni distinguono per motivi di sicurezza tra due ambiti di archiviazione virtuale: kernel space e user space. Mentre i processi che servono al funzionamento del kernel e degli altri componenti principali sono eseguiti nel kernel space, lo user space è a disposizione per le applicazioni riservate all’utente. Sui sistemi operativi unixoid è possibile eseguire in parallelo diverse istanze virtuali nello user space. Questa feature è la base della virtualizzazione a livello del sistema operativo.

Ogni istanza dello user space rappresenta un ambiente di runtime virtuale chiuso in se stesso, chiamato a seconda della tecnologia utilizzata container, partition, virtualization engine (abbreviato in VE) o jail. La virtualizzazione basata sul sistema operativo ha vissuto un revival con le piattaforme container come Docker. Nel frattempo l’utente ha a disposizione con rtk, OpenVZ/Virtuozzo e runC collaudate alternative al leader di mercato.

La virtualizzazione delle istanze nello user space avviene grazie a meccanismi chroot nativi, di cui dispongono tutti i sistemi operativi unixoid. Chroot (abbreviazione per “change root”) è una chiamata di sistema che permette di cambiare la directory root di un processo in corso. I processi che vengono trasferiti in una directory root virtuale, se correttamente implementati, possono accedere solo ai file all’interno di quella directory. Il chroot da solo, tuttavia, non incapsula i processi in modo adeguato. La chiamata di sistema in effetti consente le funzioni di virtualizzazione di base ma non è stata concepita per assicurare i processi. Le tecnologie container combinano perciò chroot con altre funzioni kernel native come Cgroups e Namespaces, per mettere a disposizione dei processi un ambiente di runtime isolato con accesso limitato alle risorse hardware. In questo caso si parla di processi di containerizzazione.

  • Cgroups: i Cgroups sono gruppi di controllo per il management delle risorse che consentono di limitare gli accessi dei processi alle risorse hardware.
  • Namespaces: i Namespaces sono spazi di nome per l’identificazione di sistema e di processo, per le comunicazioni interprocessuali e per le risorse della rete. Con Namespaces si può limitare un processo e tutte le sue ramificazioni alla sezione desiderata del sistema che sta alla base.

Un container di software contiene un’applicazione che comprende tutte le dipendenze come biblioteche, programmi di assistenza o file di configurazione. Le applicazioni si possono containerizzare senza ulteriori adattamenti e si possono spostare da un sistema a un altro. Pertanto il punto di forza di questo approccio container risiedono nella distribuzione di applicazioni nella rete (deployment).

Quando i container sono utilizzati nell’ambito delle architetture microservice, gli utenti possono inoltre approfittare di un’alta scalabilità. I microservice sono un approccio di sviluppo per la modularizzazione dei software. Nelle architetture microservice vengono realizzate applicazioni complesse grazie all’interazione di processi indipendenti, ad esempio in un container separato: si parla perciò di app multi container. Una tale architettura software ha diversi vantaggi: i microservice alleggeriscono il deployment delle applicazioni nei cluster dei server, poiché i processi containerizzati in base alle esigenze possono essere eseguiti sullo stesso sistema o distribuiti su sistemi diversi. Inoltre ogni microservice può essere scalato singolarmente. Per farlo gli utenti devono semplicemente iniziare un’ulteriore istanza del microservice desiderato in un nuovo container.

Nel cluster le architetture di microservice sono gestite tramite un cluster manager centralizzato e strumenti di orchestrazione. Il nostro articolo sugli ecosistemi Docker offre una panoramica sui container tool più popolari.

Paragonata alla virtualizzazione hardware, la tecnologia dei container si contraddistingue per una riduzione della virtualizzazione. Viene annullato l’overhead del software hypervisor. Mentre per ogni VM occorre virtualizzare un sistema operativo dedicato, la tecnologia dei container consente a migliaia di microservice di funzionare in un ambiente di runtime isolato utilizzando lo stesso sistema operativo.

Vantaggi e svantaggi della virtualizzazione a livello del sistema operativo:

Vantaggi

Svantaggi

✔ Non richiede un hypervisor e per questo è legata a un livello di virtualizzazione minima.

✘ È rivolta alle architetture di microservice. Se si utilizzano applicazioni strutturate in modo monolitico, la tecnologia dei container perde vantaggio (ad esempio in termini di scalabilità)

✔ Se si utilizzano i container per applicazioni che si basano sul collegamento di diversi microservice, l’utente può usufruire di un’alta scalabilità.

✘ A differenza delle VM, i container sono eseguiti nel kernel del sistema operativo host e questo pone dei precisi requisiti tecnici. Queste dipendenze limitano la portabilità dei container: ad esempio i container di Linux si possono eseguire sui sistemi Windows soltanto con l’emulazione.

✔ Si possono distribuire facilmente i container senza complicati processi di installazione.

✘ I container offrono un isolamento significativamente inferiore rispetto alle macchine virtuali. La virtualizzazione dei container non è perciò adatta all’implementazione delle istanze di sicurezza.

✔ Il software può essere rimosso senza lasciare residui.

✔ Online si possono trovare un gran numero di container già pronti all’uso per le principali piattaforme.

Virtualizzazione dello spazio di archiviazione

La virtualizzazione della memoria (virtualizzazione dello storage) è un concetto di virtualizzazione che mira a raffigurare virtualmente le diverse risorse di storage dell’azienda, come unità disco, memoria flash o unità nastro e distribuirle in un pool di archiviazione interdipendente. In questo modo la soluzione di virtualizzazione stabilisce un livello di astrazione tra i diversi mezzi di archiviazione fisici e il piano logico sul quale si possono amministrare centralmente le risorse di archiviazione.

Anche l’archivio virtuale si può suddividere in quote e assegnare alle applicazioni selezionate. Nonostante la virtualizzazione, gli utenti possono sempre accedere ai file memorizzati attraverso gli stessi percorsi, anche se la posizione fisica di archiviazione cambia, grazie a una tabella di mappatura gestita dal software di virtualizzazione. Si parla di un mapping dei supporti di archiviazione fisici su un’unità logica (chiamati anche volumes).

Le unità logiche non risentono dei limiti fisici di capacità dell’unico supporto di archiviazione che ne è alla base e in questo modo la virtualizzazione della memoria offre un grado di flessibilità molto più elevato nella suddivisione delle risorse di archiviazione. L’hardware a disposizione per la memorizzazione dei file si può sfruttare al massimo: questo per le aziende significa che si possono suddividere le capacità di memorizzazione nel data center ad un prezzo più moderato.

Normalmente in ambito aziendale la virtualizzazione dell’archiviazione è implementata basandosi sui block. Con la memorizzazione a blocchi i dati vengono suddivisi in blocks di dimensioni uguali. Ad ogni blocco di file viene assegnato un indirizzo univoco che viene salvato dal software di virtualizzazione nella tabella di mappatura centralizzata (mapping table). La tabella di mappatura contiene tutti i metadati necessari per trovare il luogo di archiviazione di un blocco di dati. Questa mappatura consente di amministrare i dati a livello virtuale indipendentemente dal rispettivo controller del supporto di archiviazione fisico e quindi anche di spostarli, copiarli o replicarli.

Nella pratica la virtualizzazione basata sui blocchi si può implementare secondo tre diversi approcci:

  • Basandosi sull’host
  • Basandosi sui dispositivi
  • Basandosi sulla rete

Virtualizzazione basata sull‘host

La virtualizzazione basata sull’host delle risorse di archiviazione è un approccio di virtualizzazione della memoria che di solito è utilizzato in combinazione con le macchine virtuali. In questo caso un sistema host presenta a uno o più sistemi guest (vedi virtualizzazione dell’hardware) delle unità virtuali a un livello di astrazione che non è realizzato né con un volume manager interno al sistema operativo, né con un software apposito (un cosiddetto storage hypervisor). L’accesso all’hardware (disco fisso e altri supporti di memorizzazione) avviene attraverso i driver di periferica del sistema host. Il volume manager o lo storage hypervisor vengono utilizzati come livello software sopra i driver di periferica e gestiscono input/output (I/O), tabelle di mapping e ricerca di metadati.

Le funzioni native che permettono di creare dischi virtuali sono disponibili in quasi tutti i sistemi operativi recenti.

  • Windows: Logical Disk Manager (LDM)
  • macOS: CoreStorage (da OS X Lion)
  • Linux: Logical Volume Manager (LVM)
  • Solaris e FreeBSD: zPools dello Z File System (ZFS)

La virtualizzazione basata sull’host non necessita di un hardware aggiuntivo, supporta qualsiasi dispositivo di archiviazione ed è facile da implementare. Inoltre questo approccio rispetto ad altri offre la migliore performance, dato che ogni dispositivo di archiviazione è indirizzato direttamente e quindi senza tempi di latenza. Tuttavia gli utenti devono tenere conto del fatto che la virtualizzazione della memoria, con la conseguente possibilità di ottimizzarne l’utilizzo, è limitata all’host di riferimento.

Virtualizzazione della memoria basata su dispositivi

Anche i disk array, ovvero i dispositivi di archiviazione di massa che possono essere utilizzati per distribuire i dischi sulla rete, offrono la possibilità di virtualizzare le risorse di archiviazione, utilizzando i cosiddetti RAID Schemata. Il RAID (abbreviazione per: Redundant Array of Independent Disks, la disposizione ridondante di dischi rigidi indipendenti) è una modalità di gestione dei dati nella quale diverse unità fisiche sono riunite in una piattaforma di archiviazione virtuale. Il fine della virtualizzazione della memoria è l’affidabilità ottenuta grazie alla ridondanza e per fare ciò i dati vengono replicati in un disk array e distribuiti su diversi dischi rigidi.

Consiglio

Potete trovare maggiori informazioni su disk array e RAID Schemata sul nostro articolo sul Network Attached Storage (NAS).

I disk array recenti offrono inoltre la possibilità di collegare altri dispositivi di archiviazione permettendo di raggruppare le risorse di archiviazione di più disk array a livello virtuale e di gestirle centralmente. Gli storage controller dei dispositivi di archiviazione collegati sono subordinati ad un controller principale, che gestisce l’amministrazione centrale della tabella di mapping e l’inoltro delle richieste di I/O.

Anche la virtualizzazione dell’archiviazione basata su dispositivi offre buone performance attraverso una minima latenza I/O. A parte i disk array da unire, non sono necessari componenti hardware aggiuntivi. Per poter collegare una memoria estranea, questi dispositivi devono tuttavia disporre di un’interfaccia adeguata. La migrazione di dati o la replicazione su diversi sistemi a volte fallisce, perché molti produttori si affidano a protocolli proprietari per i loro dispositivi di archiviazione. Inoltre bisogna tener presente che lo storage controller primario può trasformarsi in una strozzatura nel caso di carichi pesanti.

Virtualizzazione dell’archiviazione basata sulla rete

Una virtualizzazione della memoria di archiviazione basata sulla rete è particolarmente utile quando si raggruppano risorse di memoria da sistemi eterogenei in un pool di archiviazione virtuale. In un contesto aziendale viene solitamente implementata come parte di uno storage area network (SAN).

Componenti fondamentale della virtualizzazione della memoria basata sulla rete è un dispositivo centrale di rete (per esempio uno switch) che stabilisce un livello di astrazione tra il mezzo fisico di archiviazione del sistema collegato e il contingente di archiviazione virtuale, si occupa del mapping dei metadati e inoltra le richieste I/O. I dispositivi di virtualizzazione di questo tipo sono oggi implementati come parte del “processo in-band” direttamente nel percorso dati (virtualizzazione simmetrica). In questo caso tutte le richieste I/O passano attraverso il dispositivo di virtualizzazione. Non c’è un’interazione diretta tra l’host richiedente e il dispositivo di archiviazione fisico. Perciò non è necessario che siano disponibili driver speciali per l’hardware di archiviazione sull’host.

N.B.

Alla virtualizzazione simmetrica si contrappone la virtualizzazione asimmetrica delle risorse di archiviazione (anche out-of-band). In questo caso il dispositivo di virtualizzazione funge solamente da server di metadati, dando informazioni sulla posizione del blocco di dati richiesto. Infine vi è una richiesta I/O diretta al dispositivo di archiviazione.

Il grande vantaggio di questo approccio basato sulla rete è che si possono gestire risorse di archiviazione di sistemi eterogenei con una sola interfaccia centrale. Se la virtualizzazione della memoria di archiviazione è implementata con il procedimento out-of-band, occorre l’implementazione lato host di un software apposito per l’accesso ai dispositivi di archiviazione disponibili nel SAN. Il processo in-band non necessita di un software di questo tipo, ma è tuttavia più dispendioso nell’implementazione e normalmente ha tempi di latenza I/O maggiori.

EMC, HP, IBM, LSI e Oracle sono tra i più noti fornitori di soluzioni per la virtualizzazione della memoria.

Vantaggi e svantaggi della virtualizzazione della memoria:

Vantaggi

Svantaggi

✔ Le risorse di archiviazione fisiche sono sfruttate al meglio.

✘ Le tabelle per il mapping centrale costituiscono un Single Point of Failure.

✔ L’utilizzo di risorse di archiviazione non è legato alle limitazioni fisiche del supporto di archiviazione sottostante.

✘ La virtualizzazione della memoria è sempre legata a un overhead, dato che occorre generare ed elaborare i metadati.

✔ Si possono gestire centralmente risorse di archiviazione combinate in un’unità logica.

✘ L’elaborazione delle richieste I/O può portare a colli di bottiglia che rallentano l’intero sistema di archiviazione.

✔ Le risorse di archiviazione fisica si possono ampliare e ristrutturare indipendentemente dal pool di archiviazione virtuale.

Virtualizzazione dei dati

La virtualizzazione dei dati abbraccia diversi tipi di virtualizzazione nell’ambito dell’analisi di data warehouse che hanno lo scopo di fornire alle applicazioni un accesso ai dati astratto dalle circostanze fisiche. Per fare ciò viene creata la cosiddetta copia master, una riproduzione virtuale comprensiva dell’intero insieme dei dati.

La virtualizzazione dei dati è quindi un concetto di integrazione delle informazioni che si distingue dai metodi tradizionali come il processo ETL stabilendo un livello di astrazione tra le fonti fisiche dei dati e l’immagine virtuale dei dati.

Nell’ambito dell’integrazione dell’informazione si utilizza ETL (Extract, Transform, Load) per estrarre i dati da fonti diversamente strutturate e riunirli in un database di destinazione fornendo loro una struttura unitaria. Anche la virtualizzazione dei dati consente di leggere dati da diverse fonti e di manipolarli, tuttavia essi rimangono fisicamente nello stesso luogo, diversamente che con ETL. Le soluzioni software per la virtualizzazione dei dati integrano semplicemente i dati a livello virtuale e realizzano un accesso in tempo reale alla fonte fisica dei dati.

Con le tecnologie di virtualizzazione dei dati si possono aggregare efficacemente dati distribuiti su più data warehouse, data mart o data lakes, senza dover creare fisicamente una nuova piattaforma dati. In questo modo si riduce in primo luogo lo spazio di archiviazione necessario per analisi di grandi quantità di dati. Inoltre bisogna trasmettere meno dati sulla rete. La riproduzione virtuale dell’insieme dei dati può essere utilizzata da diverse applicazioni. Nell’ambito della business intelligence (BI) ci sono strumenti self service con i quali si possono generare report e analisi senza la necessità di doversi rivolgere a personale IT esperto.

I leader di mercato per le tecnologie menzionate sono: Denodo, TIBCO, IBM e Informatica.

Vantaggi e svantaggi della virtualizzazione di dati:

Vantaggi

Svantaggi

✔ Lo spazio di archiviazione necessario per copie fisiche dei dati è ridotto.

✘ Al contrario dell’approccio data warehouse, la virtualizzazione dei dati non è idonea per registrare e conservare snapshot cronologici di un set di dati.

✔ Viene eliminata l’estrazione dei dati, che richiede molto tempo (per esempio via ETL).

✔ Le nuove fonti di dati si possono collegare tramite strumenti self service di BI anche senza conoscenze tecniche preliminari.

✔ I dati virtualizzati si possono elaborare con numerosi tool di gestione dei dati.

Virtualizzazione della rete

La virtualizzazione della rete comprende diversi metodi che astraggono le risorse di rete a livello hardware e software dalla loro base fisica. Normalmente questo tipo di virtualizzazione viene utilizzato nell’ambito delle istanze di sicurezza, principalmente con due obiettivi:

  • Aggregare le risorse di rete fisiche in un’unica unità logica per mezzo della virtualizzazione
  • Suddividere le risorse di rete fisiche in diverse unità virtuali per mezzo della virtualizzazione

Un esempio evidente per la virtualizzazione della rete è il Virtual Private Network (VPN), una rete virtuale basata su una rete fisica. Nella pratica i VPN si utilizzano per realizzare connessioni sicure quando si stanno attraversando vie poco sicure: ad esempio quando un collaboratore esterno vuole raggiungere su Internet la rete privata della propria azienda.

Essendo una rete pubblica, Internet non consente alcuna connessione sicura tra due computer, perciò per garantire l’affidabilità dei dati durante la trasmissione si consiglia di prendere in considerazione la virtualizzazione. Diversi produttori di software offrono soluzioni di virtualizzazione con le quali si possono astrarre reti virtuali da quelle fisiche e metterle in sicurezza grazie a processi di crittografia e di autentificazione. La trasmissione di dati da un computer all’altro avviene in questo modo in una rete privata, che è anche chiamata tunnel.

Un altro esempio di virtualizzazione della rete sono i cosiddetti Virtual Local Area Network (VLAN), parti di rete virtuali basati su una rete fisica di computer. La VLAN è implementata attraverso componenti hardware come switch o router di virtualizzazione. I dispositivi connessi ad una VLAN possono comunicare soltanto con altri dispositivi nella stessa VLAN, non è possibile una connessione di dati in altre VLAN, nemmeno quando tutti i dispositivi si trovano sulla stessa rete fisica. La virtualizzazione della rete offre in questo modo la possibilità di distribuire, gestire e suddividere in modo flessibile le risorse di rete a livello virtuale indipendentemente dal supporto fisico.

Un approccio che permette di amministrare le risorse di rete virtuali in modo centrale, senza dover accedere manualmente ai componenti fisici della rete, è il Software-Defined Networking (SDN), che si basa sul disaccoppiamento del piano di controllo virtuale (control plane) dal livello di rete fisica, che è responsabile per l’inoltro dei pacchetti di dati (data plane).

Il componente fondamentale del control plane è un controller di rete che gestisce i componenti della rete del data plane, come router e switch, e l’inoltro dei pacchetti di dati. Il controller di rete è responsabile così sia della la gestione della rete che delle specifiche di instradamento, nonché dei diritti di accesso e dell’implementazione dei concetti di sicurezza.

I componenti di rete del data plane accettano le istruzioni dal controller di rete e sono responsabili del trasporto dei pacchetti di dati al dispositivo ricevente desiderato.

Vantaggi e svantaggi della virtualizzazione della rete:

Vantaggi

Svantaggi

✔ Risparmio sui costi grazie all’uso multiplo dell’infrastruttura di rete fisica.

✘ Il funzionamento di diverse sottoreti virtuali su una sola rete fisica richiede componenti hardware prestanti.

✔ A livello virtuale le risorse della rete si possono amministrare centralmente, scalare facilmente e suddividere in modo dinamico.

✘ Può rivelarsi necessaria un’infrastruttura di rete fisica ridondante per garantire l’affidabilità.

✔ La virtualizzazione di rete offre diversi approcci con i quali si possono implementare concetti di sicurezza a livello di rete lato software e quindi in modo più conveniente.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.