La virtualizzazione ha letteralmente rivoluzionato il mondo IT, rendendo possibile una incredibile quantità di applicazioni, supportando nuovi modelli di sviluppo e abilitando di fatto il provisioning di servizi in cloud. Tra le varie applicazioni virtualizzate un ruolo chiave è senza dubbio esercitato dalle macchine virtuali.

In questo servizio vedremo cosa sono le macchine virtuali (VM), le loro principali applicazioni, cercando di focalizzarci sui vantaggi e sulle criticità che bisogna inevitabilmente considerare quando si valuta di utilizzare questa tecnologia.

Cos’è una virtual machine

Le macchine virtuali sono delle applicazioni che creano ambienti virtuali in grado di emulare le caratteristiche e il comportamento di una macchina fisica, grazie all’assegnazione delle risorse hardware, di un sistema operativo e di eventuali applicazioni. In altri termini, attraverso un software di virtualizzazione è possibile creare, gestire ed utilizzare più macchine virtuali, senza la necessità di disporre necessariamente di altrettanti server.

La possibilità di creare più macchine virtuali sfruttando le risorse di un’unica macchina fisica è il concetto chiave su cui si basa la virtualizzazione dei server. Il software che consente di effettuare questa operazione è l’hypervisor (qui per scoprire nel dettaglio di cosa si tratta), o virtual machine monitor (VMM). Ne esistono di due tipi.

Hypervisor di tipo 1 (bare metal): software che agisce di fatto da sistema operativo host, comunicando direttamente con l’hardware della macchina fisica, ragion per cui costituiscono la soluzione ottimale per gli ambienti server nei data center on-premises e in cloud.
Tra i principali software di virtualizzazione di tipo 1 ritroviamo KVM, integrato nel kernel delle distribuzioni Linux a partire dal 2007, Xen, VMware (vSphere, ESX e ESXi), Oracle VR Server (nelle versioni SPARC e x86) e Microsoft Hyper-V.

Hypervisor di tipo 2: software applicativo installato su un sistema operativo host, che consente di eseguire più macchine virtuali anche su un semplice PC, purché sia dotato di risorse hardware sufficienti per eseguirle.
Tra i principali software di virtualizzazione di tipo 2 possiamo riscontrare VMWare Workstation, WMWare Player, Oracle VM Virtualbox e Parallels Desktop, da sempre utilizzato per installare Windows sui sistemi Mac, con la possibilità eseguirlo in alternativa a OSX.

In entrambi i casi, l’hypervisor è in grado di creare macchine virtuali, astraendo le risorse fisiche per configurare un sistema hardware virtuale cui vengono assegnate le risorse computazionali, di storage e di rete necessarie per eseguire un sistema operativo e le applicazioni necessarie.

Le due modalità appena descritte fanno parte della virtualizzazione nativa, ma vi sono molte altre tipologie di virtualizzazione, che differiscono soprattutto in merito alle differenti modalità di astrazione e disponibilità dell’hardware, dei sistemi operativi e delle applicazioni utilizzabili dagli utenti finali:

  • Emulazione: consente di emulare tutti gli aspetti della macchina virtuale, comprensivo di hardware, sistema operativo e applicazioni e consente di eseguire un sistema operativo guest non modificato su un’architettura host differente.
  • Paravirtualizzazione: non emula necessariamente la parte hardware, limitandosi a mettere a disposizione le API necessarie per estendere il sistema operativo guest.
  • Virtualizzazione a livello del sistema operativo: partiziona le risorse del sistema operativo host tra i vari sistemi operativi guest. Le risorse sono partizionate in container. Si tratta di una modalità molto snella e diffusa soprattutto nell’ambito dello sviluppo ma presenta il vincolo di poter utilizzare soltanto sistemi operativi guest identici al sistema operativo host.

Per facilitare i processi di virtualizzazione, le CPU dei server host dotati architettura x86 dispongono ad esmepio di specifiche istruzioni, sia nel caso di Intel che di AMD. Tali tecnologie sono state implementate negli anni Novanta, generando un vero e proprio boom nell’ambito della virtualizzazione, che oltre ai server oggi è in grado di astrarre anche i sistemi i storage, le applicazioni e le risorse di rete.

Per cosa vengono utilizzate le macchine virtuali

Le macchine virtuali costituiscono di fatto dei pc a tutti gli effetti e possono essere utilizzati per gli utilizzi più vari. Di seguito vi presentiamo un elenco delle principali applicazioni per cui trovano luogo le VM.

Consolidamento dei server

Rappresenta in buona sostanza il motivo principale per cui si ricorre alla virtualizzazione, ossia sfruttare al massimo le risorse dell’hardware fisico, evitando che rimangano sottoutilizzate.  La possibilità di creare più macchine virtuali su una macchina fisica consente infatti di sfruttarla potenzialmente al massimo, ottimizzando pertanto l’investimento nell’infrastruttura.

Il consolidamento delle risorse è pertanto fondamentale sia in un contesto i data center on-premises, dove la singola azienda ha tutto il vantaggio di sfruttare al massimo il proprio hardware, sia nei data center in cloud, dove i CSP (Cloud Service Provider) possono astrarre le risorse da mettere a disposizione come IaaS (Infrastructure as a Service), PaaS (Platform as a Service) e per tutti i servizi gestiti.

Il consolidamento delle risorse ottenuto grazie alla virtualizzazione dei server ha quale limite il fatto che le macchine virtuali non possono richiedere più risorse rispetto a quelle disponibili sull’hardware fisico che viene astratto dall’hypervisor. Tale aspetto comporta la necessità di monitorare e bilanciare i carichi di lavoro delle varie macchine virtuali, in modo da evitare che i picchi di una VM comportino il rallentamento delle altre eseguite sullo stesso server host. Per ovviare a questo problema, i sistemi di monitoraggio dei software di virtualizzazione consentono di rilevare questo genere di criticità, spostando ad esempio una VM particolarmente esosa di risorse su un server host più scarico.

Test dei sistemi hardware e software in fase di sviluppo

La virtualizzazione ha consentito di accelerare a dismisura le fasi di test e di sviluppo sia dell’hardware che del software, in quanto consente di duplicare facilmente come istanze le varie macchine virtuali ed implementare tutte le modifiche, le integrazioni e i test necessari ad assicurare l’efficienza e la stabilità dei sistemi, senza doverli configurare fisicamente da zero. Nel caso dei software la velocità con cui si possono creare gli ambienti di esecuzione su una VM è decisamente superiore rispetto a dover svolgere l’analoga operazione su una macchina fisica.

Se la creazione della macchina virtuale può richiedere un tempo analogo rispetto alla configurazione iniziale di un server vero, la sua immagine può essere in seguito eseguita un numero infinito di volte per ripristinare la configurazione iniziale in tempi decisamente inferiori rispetto al reinstallare e riconfigurare tutto su una macchina fisica.

Le macchine virtuali si dimostrano inoltre estremamente comode grazie alla loro portabilità. Installando lo stesso software di virtualizzazione su più sistemi, i file immagine delle VM possono essere spostati ed essere eseguiti in condizioni del tutto analoghe, a prescindere dal sistema host.

Operazioni di disaster recovery

Una macchina virtuale può essere creata quale immagine di un’altra VM grazie all’esecuzione di uno snapshot. I software di virtualizzazione dispongono di varie modalità per creare uno storico di backup che può essere utilizzato nel caso di incidenti e in qualsiasi situazione si renda opportuno il ripristino di un sistema in un determinato momento. L’esecuzione di sistemi virtualizzati consente quindi di ottenere infrastrutture più semplici da mantenere dal punto di vista della resilienza complessiva dei sistemi IT.

Emulazione di più sistemi operativi su un’unica macchina

Si tratta dell’applicazione probabilmente più diffusa nell’ambito della virtualizzazione sui sistemi personali, in quanto consente di avviare varie macchine virtuali su un unico computer fisico, per provare più sistemi operativi con varie configurazioni e applicazioni installate.
Il già citato caso di Windows virtualizzato su un Mac costituisce uno dei casi più diffusi, ma è ad esempio molto frequente ritrovare Linux in VM eseguite su un sistema host con Windows. Al di là di esigenze specifiche, tale opportunità consente di testare eventualmente varie distro Linux in maniera molto più rapida, non dovendo necessariamente disporre di molte macchine fisiche.

Vantaggi e svantaggi delle virtual machine per le aziende

La straordinaria diffusione delle macchine virtuali si è rivelata provvidenziale nel contesto della trasformazione digitale, in quanto consente di ottenere una disponibilità di sistemi informatici altrimenti impensabile, con una serie di vantaggi molto ampia per quanto riguarda il loro provisioning agli utenti finali.

Vediamo pertanto quali sono i vantaggi generici che l’utilizzo delle macchine virtuali consente di raggiungere, a fronte di alcune possibili criticità che i sistemisti devono saper in qualche modo prevedere o assecondare in maniera coerente con le esigenze dei business per cui operano. Nella maggioranza dei casi i vantaggi superano in maniera anche molto significativa gli svantaggi relativi all’utilizzo delle macchine virtuali per implementare i processi aziendali.

Vantaggi

Tra i principali vantaggi relativi all’impiego delle macchine virtuali vanno evidenziati:

  • Consistenti risparmi di natura economica che possono derivare dal consolidamento dei server disponibili nei data center, che equivale all’acquisto di meno risorse hardware. Un risultato di natura analoga può essere raggiunto con i sistemi VDI (Virtual Desktop Infrastructure) che consentono di accedere di fatto ad una macchina virtuale completa di sistema operativo ed applicazioni attraverso un servizio in cloud, senza dover acquistare una misura analoga di macchine fisiche. La virtualizzazione è dunque l’alleato fondamentale per i modelli a servizi in cloud, e le macchine virtuali costituiscono una delle principali ragioni del loro straordinario successo;
  • Il consolidamento delle risorse consente di ridurre l’hardware necessario per svolgere determinati carichi di lavoro. Ciò non si traduce soltanto in un evidente vantaggio di natura economica, ma consente di rendere molto più sostenibili le infrastrutture IT dal punto di vista dei consumi energetici, a tutto vantaggio del portafoglio delle aziende e dell’ambiente in cui viviamo;
  • Le macchine virtuali sono sicure per design, in quanto la loro esecuzione risulta isolata rispetto ai sistemi host, quindi nel caso di un incidente sulla VM, la condizione penalizzante che ne deriva rimane circoscritta alla sua esecuzione, senza propagarsi direttamente sui sistemi fisici. Sarà dunque sufficiente eliminarla in toto ed eseguire un’immagine analoga, piuttosto che la versione di backup più funzionale al ripristino di quel sistema;
  • L’utilizzo delle macchine virtuali consente di ridurre l’impegno del reparto IT, che si ritrova a dover configurare ed inizializzare meno macchine fisiche, ricavando una maggior quantità di tempo da dedicare ad altre attività, potenzialmente più strategiche per l’azienda. In termini di provisioning, le VM risultano molto più flessibili non soltanto nella creazione e configurazione iniziale, quando tale procedura è prevista in situazioni di routine, ma anche per quanto concerne la loro manutenzione e la loro amministrazione.
  • La portabilità delle macchine virtuali consente di crearle, duplicarle e spostarle su vari sistemi host, in quanto la loro immagine contiene tutte le informazioni necessarie alla loro esecuzione. Tale aspetto garantisce una elevata flessibilità, in quanto posso ad esempio decidere di eseguire la stessa configurazione di macchina virtuale in decine di istanze collocate ed eseguite sui server contenuti all’interno di data center in diverse sedi fisiche.
  • Le macchine virtuali consentono un generale vantaggio nell’innovazione, in quanto la possibilità di implementare in maniera estremamente rapida gli ambienti di lavoro ci permette di svolgere un numero di test molto più elevato rispetto a quanto avverrebbe con le medesime richieste se dovessimo utilizzare un approccio tradizionale, basato sull’esclusivo utilizzo di macchine fisiche.

Svantaggi

Le tecniche e le metodologie di virtualizzazione, oltre alla loro consistenza tecnologica, comportano anche alcuni svantaggi nell’impiego delle macchine virtuali, soprattutto quando le soluzioni non risultano funzionali rispetto alle esigenze operative ed organizzative delle aziende, ragion per cui sarebbe sempre consigliato avvalersi di consulenze molto esperte sul tema, che dispongono di un know-how che deriva da una casistica molto ampia e dal contatto quotidiano con questo genere di situazioni. Tra i principali svantaggi relativi all’utilizzo delle macchine virtuali possiamo pertanto annoverare:

  • Le macchine virtuali sono mediamente meno performarti rispetto alle controparti fisiche per via dell’oggettivo overhead dovuto al fatto che determinate risorse vanno allocate per eseguire l’hypervisor e i sistemi operativi guest. I software di virtualizzazione richiedono infatti un certo quantitativo di risorse CPU, RAM, Storage e Rete per poter essere eseguite e garantire il regolare funzionamento;
  • Le macchine virtuali sono sicure grazie al loro isolamento, ma nulla vieta ad un hacker di propagare un attacco in grado di infettare direttamente l’hypervisor che le esegue. Se tale minaccia si concretizzasse, la separazione tra VM e hypervisor potrebbe risultare vana, ed addirittura potrebbero venire compromesse tutte le VM in host su un determinato sistema fisico. È dunque necessario adottare opportune precauzioni, con una strategia di sicurezza che sappia implementare sistemi dedicati nello specifico alla protezione degli ambienti virtualizzati, anche a basso livello.
  • Il consolidamento dei server, come abbiamo esaminato nei precedenti paragrafi, è tanto più efficace quanto le risorse dell’hardware host viene sfruttato in prossimità del 100% della sua disponibilità di risorse. Se si supera tale limite, le VM vengono penalizzate in termini di prestazione. La gestione ed il monitoraggio dei carichi di lavoro delle varie macchine virtuali comporta dunque un onere addizionale in termini di IT governance;
  • Esistenza di barriere culturali nel caso di utilizzo di sistemi virtualizzati in cloud, dovuti all’abitudine all’impiego di macchine fisiche e da una carenza diffusa in termini di formazione, su cui le aziende dovrebbero investire ancor prima di avvalersi di sistemi VDI piuttosto che di altre tecnologie in grado di garantire il provisioning delle macchine virtuali.
    In molti casi, se la formazione non precede e non rientra comunque nel contesto di una logica di apprendimento continuo e miglioramento delle competenze dei dipendenti, gli investimenti sui sistemi virtualizzati rischiano di rivelarsi inconcludenti, se non addirittura penalizzanti, traducendosi in varie situazioni che produrrebbero soltanto un evidente sperpero di denaro, che potrebbe essere investito con maggior razionalità in per garantire una maggior educazione culturale nell’impiego delle macchine virtuali. Per fortuna, sia in locale che in cloud, i software di virtualizzazione tendono ad automatizzare moltissimo le procedure necessarie all’esecuzione e all’utilizzo delle VM, anche per quanto concerne la gestione dei file e il rispetto delle policy stabilite dall’azienda.

 

Virtual Machine: Cosa Sono e a Cosa Servono le Macchine Virtuali ultima modifica: 2021-10-29T11:05:11+00:00 da Francesco La Trofa

LEAVE A REPLY

Please enter your comment!
Please enter your name here