La virtualizzazione è il processo di creazione di una versione virtuale di qualcosa come l'hardware del computer. IT prevede l'utilizzo di un software specializzato per creare una versione virtuale o creata dal software di una risorsa informatica piuttosto che la versione reale della stessa risorsa.
Gli avvisi personalizzati e la visualizzazione dei dati consentono di identificare e prevenire rapidamente i problemi di salute e di prestazioni della rete.
Ad esempio, un computer virtuale è un sistema informatico che esiste solo all'interno del software di un altro sistema piuttosto che come un vero e proprio computer con processore e memoria propri. Spesso è possibile creare e utilizzare diverse risorse virtuali all'interno di una singola risorsa non virtuale.
Immaginate un simulatore di volo. Uno è abbastanza buono da ingannare un vero pilota. Il simulatore dovrebbe imitare non solo i comandi, ma anche i suoni, le sensazioni e persino gli odori di una vera cabina di pilotaggio. IT dovrebbe reagire non solo a qualsiasi input proveniente da joystick, manopole e leve, ma dovrebbe anche restituire la risposta attesa a ciascuno di questi elementi, come ad esempio essere più difficile da girare o generare il suono del carrello di atterraggio che si ritrae o si estende.
In questo caso, un pilota piloterebbe l'aereo come un normale aereo, senza sapere che non si tratta di un vero aereo. Un server virtuale funziona allo stesso modo. Per il sistema operativo, i programmi installati e persino l'utente, il server virtualizzato riceve tutti gli input e genera tutte le risposte esattamente come un sistema fisico, anche se è solo simulato.
Indipendentemente dal tipo di virtualizzazione, questo effetto si ottiene con l'installazione di un programma specializzato che imita l'esatta natura del sistema virtualizzato. Nel caso di una virtualizzazione bare metal, la virtualizzazione simula l'hardware reale, prendendo input e restituendo dati dal sistema operativo proprio come se si trattasse di un server reale. Questa simulazione arriva fino al rapporto sullo stato della batteria o sulla temperatura della CPU, anche se esiste solo una CPU virtuale.
La macchina host è l'hardware fisico su cui avviene la virtualizzazione. Questa macchina esegue il software di virtualizzazione che permette alle virtual machine di esistere. I suoi componenti fisici, come la memoria, lo storage e il processore, gestiscono in ultima analisi le esigenze delle virtual machine. Queste risorse sono in genere nascoste o mascherate alle macchine guest.
Per produrre questo effetto, un software di virtualizzazione, come un hypervisor, viene installato sull'hardware fisico effettivo.
Lo scopo della macchina host è quello di fornire la potenza di calcolo fisica alle virtual machine sotto forma di CPU, memoria, storage e connessione di rete.
La macchina solo software viene eseguita sulla macchina host all'interno dell'ambiente virtuale creato. Possono esserci più virtual machine in esecuzione su un singolo host. Una virtual machine non deve necessariamente essere un computer. È possibile virtualizzare anche vari tipi di storage, database e altri sistemi.
Una virtual machine esegue il proprio ambiente. IT emula, o simula, un singolo pezzo di hardware fisico, come un computer desktop o un server. Tuttavia, tutto passa attraverso l'hypervisor, che effettua le richieste all'hardware reale. L'hardware restituisce qualsiasi dato o feedback all'hypervisor, che lo passa alla virtual machine.
Ogni macchina virtuale funziona separatamente da tutte le altre macchine virtuali. Di fatto, ogni virtual machine crede di essere l'unico sistema in esecuzione sull'hardware.
È possibile emulare anche hardware alternativo. Ad esempio, è possibile creare una virtual machine che emuli un array di storage su un hardware server standard. L'array di storage virtuale si comporterà come se si trattasse di 20 dischi rigidi collegati alla rete, perché l'hypervisor agirà come se fosse vero.
Lo scopo della macchina ospite è quello di eseguire le applicazioni e l'ambiente utente per ogni sistema virtuale.
Talvolta chiamato gestore di virtual machine, l'hypervisor è il software che esiste per eseguire, creare e gestire le macchine virtuali. L'hypervisor è ciò che rende possibile la virtualizzazione e crea un ambiente virtuale in cui vengono eseguite le virtual machine. Per la macchina guest, la virtual machine dell'hypervisor è l'unica esistente, anche se esistono numerose macchine virtuali in esecuzione sullo stesso hardware fisico.
Gli hypervisor di tipo 1, o bare-metal, sono installati direttamente sull'hardware fisico. Come tali, devono contenere i propri sistemi operativi per l'avvio, il funzionamento dell'hardware e la connessione alla rete. Gli hypervisor di tipo 1 più diffusi sono Hyper-V di Microsoft ed ESXi di VMware.
Gli hypervisor di tipo 2, o hosted, funzionano con un sistema operativo installato direttamente sull'hardware. In questo caso, è necessario installare una copia di Windows o un sistema basato su Unix per avviare il sistema e accedere all'hardware. Una volta che il sistema operativo è in esecuzione, è possibile avviare l'hypervisor ospitato. Gli hypervisor di tipo 2 sono spesso utilizzati per eseguire più sistemi operativi su una singola macchina, piuttosto che per emulare numerosi sistemi in esecuzione sull'hardware.
Gli hypervisor di tipo 2 più diffusi sono VMware Workstation, VirtualBox e Parallels, che emula un sistema operativo Windows in esecuzione su un computer MAC.
Lo scopo dell'hypervisor è quello di gestire ogni virtual machine e di fornirle le risorse di cui ha bisogno per funzionare.
Notifiche in tempo reale significano una risoluzione più rapida dei problemi, in modo da poter intervenire prima che si verifichino problemi più gravi.
Il tipo più comune di virtualizzazione è la virtualizzazione dell'hardware. Con la virtualizzazione hardware, un programma software astrae l'hardware fisico come hardware virtuale. L'hypervisor funge da intermediario tra le virtual machine e l'hardware fisico.
La virtualizzazione hardware crea una versione virtuale, solo software, di una macchina fisica, come un computer, un router o un array di storage. La forma più elementare di virtualizzazione hardware è la creazione di un computer o server virtuale. In questo caso, il computer virtuale imita una macchina fisica vera e propria, completa di processore, memoria indirizzabile e spazio su disco. Quando la virtual machine interagisce con il processore o la memoria, in realtà sta interagendo con l'hypervisor, che passa l'accesso. Allo stesso modo, l'hypervisor riceve qualsiasi dato dall'hardware fisico e lo passa alla virtual machine come se provenisse dall'hardware virtuale.
Tutto ciò che si può fare su una macchina reale può essere duplicato all'interno della macchina virtuale, compresa l'installazione di sistemi operativi diversi. Un singolo server virtualizzato può eseguire diverse virtual machine, ciascuna con il proprio sistema operativo, i programmi installati, i servizi in esecuzione, i livelli di patch e così via. Ciascuna di esse viene configurata, eseguita e installata in base al suo utilizzo, in modo completamente separato dalle altre virtual machine.
Poiché la virtual machine non sa di essere virtualizzata, il software e i servizi in esecuzione all'interno non devono essere installati o configurati in modo speciale per essere virtualizzati.
In genere, a ogni virtual machine viene assegnata la capacità di utilizzare un sottoinsieme della potenza completa della macchina host. Una macchina guest potrebbe essere configurata con 20 GB di RAM, ad esempio, anche se la macchina host reale ha 512 GB di RAM.
Per la macchina guest esistono solo le risorse esposte dall'hypervisor. Nell'esempio precedente, la virtual machine non sarebbe mai in grado di accedere a più di 20 GB di RAM, indipendentemente dalle necessità. Per la virtual machine esiste solo questa quantità.
Le risorse totali esposte a tutte le macchine guest combinate non devono necessariamente essere limitate alle risorse totali della macchina host. L'hypervisor può offrire 20 GB di RAM a 50 virtual machine diverse su un sistema con soli 512 GB di RAM. Poiché la maggior parte dei sistemi non utilizza sempre le risorse massime disponibili, l'hypervisor può allocare dinamicamente la memoria host sottostante a ciascun sistema in base alle necessità. Questa operazione è nota come oversubscription.
Inoltre, poiché l'hypervisor presenta l'illusione di macchine fisiche singole e completamente accessibili, nessuna virtual machine può vedere un'altra virtual machine. Questo permette a numerose virtual machine di funzionare senza interagire. Di conseguenza, sulla stessa macchina host possono esistere non solo virtual machine di dimensioni diverse, ma anche con sistemi operativi diversi.
La virtualizzazione è la chiave del cloud computing. I fornitori offrono la possibilità di creare, mantenere e amministrare una virtual machine su un hardware non in sede. Poiché ogni virtual machine esiste come sistema separato, non è necessario segregare i client per motivi di sicurezza o stabilità. Anche se un utente corrompe l'intero sistema, il danno non ha effetto al di fuori di quella singola virtual machine.
Prima della virtualizzazione, l'archiviazione e l'esecuzione dei server fuori sede, sulla rete di un altro fornitore, veniva effettuata come hosting remoto. Per fare questo, il fornitore di cloud doveva fornire un server fisico per ogni macchina richiesta. IT richiedeva molto lavoro ed era molto costoso mantenere questo rapporto di uno a uno tra server fisico e server funzionale del cliente.
Con l'avvento del cloud computing, il fornitore non ha bisogno di abbinare l'hardware fisico a ogni richiesta di una nuova macchina. Si può invece creare una virtual machine.
I principali fornitori di cloud installano e gestiscono hardware di server enormemente potenti, spesso virtualizzati da una serie di hardware. Per ognuno di questi server più grandi, il fornitore cloud ritaglia delle virtual machine in base alle richieste del cliente.
Ad esempio, un cliente può richiedere un nuovo server con una certa quantità di potenza di elaborazione, memoria e spazio su disco. Il cloud vendor "avvia", ovvero avvia una nuova virtual machine con queste specifiche su una delle sue macchine host esistenti, senza installare nuovo hardware fisico. Poiché ogni virtual machine non ha accesso diretto all'hardware fisico alla base dell'hypervisor, non vi è alcun rischio per i dati o la stabilità del sistema.
Esistono diverse aziende che offrono un hypervisor o un prodotto per la gestione delle virtual machine che consente la virtualizzazione totale dell'hardware. Le più importanti sono VMware e la sua linea vSphere, e Microsoft con Hyper-V. Altri includono XenServer e KVM di Citrix.
Il punto di forza della virtualizzazione è che ogni sistema virtualizzato non è in grado di dire se è virtuale o se gira direttamente sull'hardware. Questo rende possibile la creazione di una virtual machine all'interno di una virtual machine, un processo noto come virtualizzazione annidata. Una virtual machine creata da un'azienda su Amazon AWS potrebbe essere a sua volta all'interno di una virtual machine creata da Amazon, ad esempio.
Per certi versi, si tratta di una versione informatica di Blade Runner. I server non sanno se sono server reali o server creati virtualmente, anche se ognuno di loro crede in ogni momento di essere "reale".
Non c'è limite a questa nidificazione. Amazon può quindi installare un enorme sistema bare metal in un centro dati. IT installa un hypervisor bare metal su quel sistema per creare un sistema da utilizzare dalla sua divisione cloud computing. La divisione cloud computing, a sua volta, installa un hypervisor che divide ogni sistema per regione. Quando un cliente ordina una nuova virtual machine, la divisione cloud computing di Amazon crea un'altra virtual machine. Infine, il cliente crea due virtual machine, una per la produzione e l'altra per un ambiente di prova. Ogni macchina funziona esattamente come un pezzo di hardware fisico.
Questo nesting è fondamentale per fornire un ambiente in cui non è richiesta o utile alcuna conoscenza del sistema precedente.
Invece di creare una virtual machine fisica, è possibile creare un sistema operativo o un desktop virtuale. In questo caso, l'ambiente utente, tutto ciò che è al di sopra del sistema operativo, è incapsulato in un singolo desktop virtuale. È possibile installare più desktop virtuali sullo stesso computer. Ogni set di applicazioni e personalizzazioni è bloccato all'interno del desktop virtuale e non influisce sugli altri desktop virtuali.
Un desktop virtuale può essere spostato da una macchina fisica a un'altra. Quando i desktop virtuali sono archiviati su un server in rete, l'utente può spostarsi da un computer all'altro mantenendo sempre il proprio ambiente desktop. A differenza della virtualizzazione hardware, che utilizza un hypervisor per controllare le virtual machine al di sotto del sistema operativo, un desktop virtuale può essere utilizzato solo su un sistema operativo correttamente installato e configurato. Inoltre, uno spazio di lavoro virtuale può vedere l'hardware fisico in esecuzione sulla macchina host.
È possibile virtualizzare un'applicazione. A differenza della virtualizzazione fisica, in cui l'hypervisor imita una configurazione hardware completa, la virtualizzazione delle applicazioni richiede che l'applicazione possa essere virtualizzata. A differenza della virtualizzazione del desktop, la virtualizzazione delle applicazioni non consente ad altre applicazioni di interagire con l'applicazione virtualizzata.
La virtualizzazione delle applicazioni viene utilizzata principalmente per consentire l'esecuzione di un'applicazione su un sistema senza doverla installare. Piuttosto, un'applicazione virtuale contiene il proprio ambiente virtuale in cui girare.
Proprio come la virtualizzazione fisica richiede un hypervisor per creare e gestire le virtual machine, la virtualizzazione delle applicazioni richiede un gestore di applicazioni come Microsoft App-V o Citrix ZenApp.
PRTG Network Monitor è un software di monitoraggio di rete completo e tiene traccia dell'intera infrastruttura IT.
I numerosi vantaggi della virtualizzazione ne determinano la crescita. La comprensione di questi vantaggi spesso risponde anche alla domanda sul perché virtualizzare.
Uno dei principali vantaggi della virtualizzazione è il consolidamento dei server. Tradizionalmente, la decisione aziendale di acquistare e installare un server era guidata da fattori quali la necessità di risorse, la stabilità e la sicurezza. L'uso di server diversi garantiva il bilanciamento del carico, fornendo risorse in abbondanza a ogni servizio e applicazione critici. Inoltre, la presenza di server diversi significava che se un server veniva compromesso, l'altro poteva continuare a funzionare. Con la virtualizzazione, gli stessi vantaggi possono essere realizzati su un unico pezzo di hardware. I server sono ancora completamente isolati dalle virtual machine e non devono più essere sovradimensionati.
Ogni nuovo server consuma più energia per far funzionare il processore e gli altri componenti hardware. Inoltre, ognuno di questi componenti genera calore, che deve essere allontanato, di solito tramite ventole e aria condizionata. L'aggiunta di virtual machine non comporta l'aggiunta di hardware, né di energia o raffreddamento.
Le virtual machine sono facilmente duplicabili. Questo facilita sia la creazione di nuove copie dello stesso sistema, sia il miglioramento della disponibilità. Invece di programmare tempi di inattività nel fine settimana per installare patch o aggiornare un sistema, gli amministratori possono installare le patch o gli aggiornamenti su una copia della macchina virtuale in esecuzione e poi scambiare la vecchia virtual machine con quella appena aggiornata.
Le istantanee delle virtual machine offrono un modo per creare o riportare un sistema al suo esatto stato senza dover tornare allo stesso hardware. Di conseguenza, le istantanee rappresentano un'ottima forma di disaster recovery. Se dovesse accadere qualcosa a un intero data center, l'intera operazione potrebbe teoricamente essere ripristinata rapidamente facendo girare nuove virtual machine in una nuova posizione utilizzando le snapshot dei sistemi originali.
Sebbene la virtualizzazione offra molti vantaggi, introduce un'ulteriore complessità nell'ambiente informatico.
Per le aziende che installano e gestiscono la virtualizzazione nei propri data center, l'hypervisor rappresenta un ulteriore livello che deve essere installato, gestito, concesso in licenza e aggiornato. Ciò può richiedere personale o formazione aggiuntivi.
Poiché la virtualizzazione dipende da risorse sufficientemente potenti per eseguire più virtual machine contemporaneamente, può richiedere un maggiore investimento in hardware, soprattutto in fase iniziale. Sebbene un server molto più potente possa sostituire decine di server meno potenti attraverso la virtualizzazione e ridurre i costi a lungo termine, in alcuni ambienti potrebbero essere necessari diversi anni per recuperare l'investimento iniziale.
Con un numero così elevato di possibili macchine virtuali mission-critical in esecuzione su un singolo pezzo di hardware fisico, il ripristino d'emergenza e la tolleranza ai guasti sono ancora più importanti, il che potrebbe comportare costi aggiuntivi e complessità.
La completa separazione delle virtual machine garantisce una grande sicurezza tra i sistemi. Qualsiasi violazione della sicurezza, intenzionale o accidentale, richiede la possibilità di accedere alle risorse del sistema vulnerabile. Con la virtualizzazione, ogni sistema funziona in modo indipendente e non è nemmeno a conoscenza dell'esistenza di altre virtual machine. Non c'è quindi modo di sferrare alcun tipo di attacco alla sicurezza "attraverso" il muro della virtualizzazione.
In teoria, si teme che un hypervisor, per definizione, abbia una qualche forma di accesso a ogni virtual machine su un dato sistema fisico. Se si riuscisse a compromettere in qualche modo l'hypervisor stesso, ci sarebbe la possibilità di un attacco del tipo "man in the middle", in cui i dati che passano dentro e fuori l'hypervisor potrebbero essere intercettati e quindi letti o modificati. Sebbene al momento non siano noti attacchi di questo tipo, ciò non significa che non possano mai verificarsi. Il concetto di attacco all'hypervisor è chiamato hyperjacking.