Software di virtualizzazione
I software di virtualizzazione dissociano il sistema operativo dall’hardware soggiacente.
Ciò consente la ripartizione di potenti risorse IT in unità più piccole.
Tra l’altro, i software di virtualizzazione possono essere utilizzati per gestire diverse virtual machine in un server fisico (VM).
In questo modo si ottengono panorami informatici scalabili.
Un software VM è un prerequisito per il cloud che offrono soluzioni di “Infrastructure as a Service” (IaaS).
Seguendo il modello fai da te, basta premere un pulsante e agli utenti vengono assegnate risorse virtualizzate.
I programmi VM, tuttavia, sono utili anche per i singoli utenti, perché le macchine virtuali fungono da ambienti di lavoro riproducibili e sicuri.
Cos’è la virtualizzazione?
La virtualizzazione è un concetto fondamentale in informatica.
A grandi linee, è la fornitura di un livello di astrazione tra l’hardware (la base fisica) e il sistema operativo o tra il sistema operativo e il programma applicativo.
L’astrazione delle risorse informatiche fisiche come hardware, software, memoria e componenti di rete, ha l’obiettivo di fornire risorse a livello virtuale e distribuirle ai diversi clienti in modo flessibile e in base alle esigenze.
Nel nostro articolo di approfondimento sul tema della virtualizzazione, menzioniamo vari tipi di virtualizzazione, di cui due sottocategorie specifiche sono di particolare interesse:
Virtualizzazione completa: caso speciale di virtualizzazione dell’hardware in cui a ogni istanza in esecuzione (macchina virtuale) viene assegnato il proprio hardware virtualizzato.
Virtualizzazione a livello di sistema operativo: caso speciale di virtualizzazione del software in cui ogni istanza in esecuzione (container) ha accesso a un sistema operativo virtualizzato con risorse limitate.
Come funziona un software di virtualizzazione?
A seconda del tipo di software di virtualizzazione utilizzato, vi sono meccanismi di fondo diversi.
Nel caso della virtualizzazione dell’hardware viene utilizzato un software denominato hypervisor. L’hypervisor funge da interfaccia tra l’hardware fisico e le macchine virtuali.
Solitamente un hypervisor viene eseguito su un sistema operativo specifico (“Operating System”, OS), ossia il sistema operativo ospitante (OS host), e fornisce un hardware virtualizzato per un sistema operativo ospite (OS guest).
Esistono due tipi di hypervisor.
Tipo di hypervisor | Denominazione | Descrizione | Esempio |
Hypervisor di tipo 1 | “native” o “bare-metal” | Un hypervisor di tipo 1 viene eseguito direttamente sull’hardware fisico (bare-metal) o viene integrato nel sistema operativo ospitante (nativo): Hardware → Hypervisor/OS host → OS guest | Hyper-V, KVM |
Hypervisor di tipo 2 | “hosted” | Un hypervisor di tipo 2 viene eseguito su un sistema operativo ospitante: Hardware → OS host → Hypervisor → OS guest |
|
Nel caso della virtualizzazione a livello di sistema operativo, viene impiegato un software speciale che genera ambienti di esecuzione isolati basati sul sistema operativo.
Docker, Kubernetes e OpenVZ sono esempi ben noti di programmi di virtualizzazione a livello di sistema operativo.
A cosa servono i software di virtualizzazione?
Il software di virtualizzazione viene usato per creare macchine virtuali a partire dall’hardware fisico. Questo processo, noto come “provisioning”, costituisce la base delle piattaforme cloud scalabili.
AWS e le alternative rendono quindi possibile l’“Infrastructure as a Service” (IaaS), vale a dire la fornitura automatica di un hardware virtualizzato premendo un pulsante.
A differenza dei sistemi operativi installati su un hardware fisico, le macchine virtuali (virtual machine, VM) offrono un altro vantaggio fondamentale.
Lo stato di una VM può essere salvato come cosiddetto “snapshot” (istantanea).
Se qualcosa va storto mentre si lavora con la VM, si può tornare rapidamente all’ultima istantanea.
Inoltre, è possibile creare una nuova immagine VM da una VM in esecuzione.
Questa riproducibilità dell’ambiente di lavoro è un requisito indispensabile per lo sviluppo di software e l’attività scientifica.
L’uso di macchine virtuali (VM) nello sviluppo di software è oggigiorno sostituito ampiamente dalla virtualizzazione dei container.
Dato che tutti i container in esecuzione su un host condividono un sistema operativo, questo tipo di virtualizzazione offre prestazioni notevolmente migliori ed è meno esigente in termini di risorse.
Tuttavia, vi sono ancora casi in cui è opportuno impostare una VM a scopo di test, ad esempio quando lo sviluppo di Linux deve essere eseguito dal desktop di Windows.
Un altro vantaggio dell’uso di alcuni programmi VM sta nel fatto che questi consentono l’accesso a sistemi remoti.
Con la “virtualizzazione del desktop”, un software VM viene eseguito localmente mentre la macchina virtuale viene eseguita su un host remoto.
Separare il sistema operativo in diversi sistemi isolati è conveniente anche in termini di sicurezza. Un esempio interessante è “Qubes OS”, che si basa sull’hypervisor Xen.
L’informatore della NSA Edward Snowden afferma quanto segue al riguardo:
I migliori software di virtualizzazione
Di seguito, esaminiamo in dettaglio i migliori software VM. Il confronto non include gli hypervisor bare-metal come ESXi e Xen, né gli strumenti per la pura virtualizzazione dei container, quali Docker, Kubernetes e OpenShift. Vi presentiamo i programmi VM per gli utenti, raggruppati per sistema operativo ospite. Occorre considerare che i costi delle controparti del software VM in esecuzione sul server possono essere più elevati di un ordine di grandezza.
I migliori programmi VM per Windows
In passato, Windows era piuttosto carente in termini di virtualizzazione; Linux, infatti, è sempre stato il “pezzo grosso” della virtualizzazione.
Nel frattempo, sono stati fatti considerevoli progressi.
Hyper-V di Microsoft, ad esempio, è parte integrante delle moderne versioni di Windows.
Questa tecnologia è anche alla base del sottositsma windows per linux WSL/WSL2.
L’esecuzione di varie distribuzioni Linux con Windows in macchine virtuali ad alte prestazioni si rivela molto utile, soprattutto per gli sviluppatori.
L’uso di software di virtualizzazione risulta utile specialmente con Windows.
Per decenni, infatti, questo onnipresente sistema operativo è stato tormentato da conflitti di driver, virus e trojan.
L’uso di macchine virtuali (VM) permette di lavorare in sicurezza in ambienti isolati.
Ad esempio, potete gestire il vostro online banking interamente in un ambiente Linux in cui l’assenza di virus è garantita.
Inoltre, le VM offrono la possibilità di creare istantanee che, in caso di danni al sistema, permettono di ritornare a uno stato iniziale sicuro in modo semplice.
Hyper-V manager di Microsoft è parte di Windows Server 2008 e delle versioni successive di Windows. Questo software di virtualizzazione consente la gestione di macchine virtuali (VM) sulle edizioni Enterprise, Pro ed Education di Windows 10 e può essere utilizzato gratuitamente, anche se potrebbero esserci dei costi associati alla licenza di Windows 10. Hyper-V Manager è utilizzato per la gestione degli host Hyper-V e delle macchine virtuali, che possono essere situati in locale o su macchine remote.
Un’interfaccia grafica permette di lavorare comodamente con ambienti virtuali da una piattaforma centrale.
Il software di virtualizzazione Workstation PRO del gigante della virtualizzazione VMware è rivolto ai professionisti IT, agli sviluppatori e alle aziende.
Questo programma VM consente la virtualizzazione della maggior parte dei sistemi operativi x86 su un normale computer fisso, come pure l’accesso a distanza ad ambienti vSphere remoti.
Ma non si limita solo a questo.
Workstation Pro agevola il processo di sviluppo test e le presentazioni software su una vasta gamma di dispositivi, piattaforme e cloud.
Il software di virtualizzazione permette la configurazione di reti virtuali e altre risorse virtualizzate. Inoltre, i container OCI (Open Container Initiative) locali e i cluster Kubernetes possono essere gestiti con l’isolamento delle VM.
In aggiunta all’interfaccia grafica, è disponibile lo strumento a riga di comando “vctl”. In questo modo, i flussi di lavoro possono essere automatizzati.
Come si verifica di consueto con i programmi VM, le istantanee delle macchine virtuali possono essere create e ripristinate in un secondo momento.
Inoltre, questo programma di virtualizzazione può essere utilizzato per gestire un secondo desktop, che risulta altamente sicuro grazie a impostazioni di privacy e di rete più rigide.
Il supporto delle tecnologie 3D DirectX 11 e OpenGL all’interno delle VM è particolarmente utile per videogiochi e applicazioni grafiche sofisticate.
Nonostante l’elevata gamma di funzionalità, questo software VM è piuttosto accessibile, avendo un prezzo inferiore a 200 €, e gli studenti attuali e futuri di college o università, i loro genitori, i docenti e il personale degli istituti di istruzione hanno diritto a uno sconto.
È inoltre disponibile una versione di prova, che può essere utilizzata gratuitamente per 60 giorni.
“VirtualBox” di Oracle è il prodotto di punta dei software di virtualizzazione .
Questo programma VM permette il facile utilizzo di macchine virtuali (VM) dal computer di casa e, anche se l’interfaccia utente sembra leggermente obsoleta per gli standard odierni, è sempre stato soddisfacente per via della sua facilità d’uso e dell’alto livello di comfort che offre.
Inoltre, VirtualBox è un “Free and Open Source Software” (FOSS), una caratteristica unica per i programmi VM dei fornitori commerciali.
VirtualBox funge da base per il funzionamento di macchine virtuali su un sistema host ed è spesso usato in combinazione con altri software specializzati.
Il popolare strumento “Vagrant”, ad esempio, automatizza la creazione di ambienti di sviluppo riproducibili. Funge da interfaccia tra i software di virtualizzazione, come VirtualBox, VMware, Hyper-V e Docker, e i software di provisioning, come Puppet, Chef e Ansible.
Il migliore software VM per Mac
In linea di principio, il software di virtualizzazione permette l’esecuzione di un sistema operativo ospite su un sistema operativo ospitante.
In questo modo è possibile avviare una distribuzione Linux dal desktop di Windows oppure gestire un’installazione di Windows da Linux.
Mac, tuttavia, presenta una caratteristica speciale: macOS, infatti, come sistema ospite, può essere utilizzato (legalmente) solo su un host macOS.
“Fusion Pro” del fornitore VMware rappresenta grosso modo la controparte Mac di VMware Workstation, già descritto. Questo programma VM è diventato molto popolare perché permetteva l’esecuzione di Windows su Mac. Quando il software di virtualizzazione venne lanciato nel 2007 era già sensazionale e oggi è in grado di offrire molto di più.
Grazie a Fusion Pro, le macchine virtuali (VM) possono essere gestite su Mac con macOS, Windows e Linux come sistemi operativi. Inoltre, questo software di virtualizzazione include funzionalità per la creazione, la gestione e l’esecuzione di container OCI e cluster Kubernetes. È in questo contesto che entrano in gioco l’elevata sicurezza e il forte isolamento delle macchine virtuali. Ciò permette di eseguire e testare uno stack cloud completo su un singolo Mac.
Con la funzionalità di snapshot integrata, è possibile ritornare a punti di archiviazione sicuri, se necessario. L’interfaccia grafica consente inoltre la connessione a server vSphere ed ESXi remoti. Le macchine virtuali (VM) e gli host fisici possono essere controllati e gestiti, le VM vengono semplicemente spostate tra gli host tramite la funzione drag-and-drop.
Il costo per l’acquisto di una licenza è attualmente pari a circa 230 € e l’aggiornamento di una licenza esistente è disponibile a circa la metà del prezzo. Come il suo “fratello maggiore”, Workstation Pro di VMware, anche Fusion Pro può essere testato gratuitamente per 60 giorni.
Oltre a VMware Fusion, “Parallels Desktop per Mac” è il classico programma VM per Mac. Gli sviluppatori e gli utenti possono così lavorare con diversi sistemi operativi su Mac senza dover impostare una configurazione dual boot. Usando questo software di virtualizzazione, i frequenti riavvii diventano superflui.
Parallels Desktop è fortemente incentrato sulla fornitura di un ambiente desktop Windows che funziona “in parallelo” con macOS. Questo programma di virtualizzazione permette lo spostamento e la condivisione di contenuti in modo continuo tra Mac e Windows. Grazie alla cosiddetta “Coherence Mode”, le applicazioni Windows possono essere utilizzate come applicazioni Mac.
Il prezzo per l’acquisto di una licenza è di circa 100 €, che rientra nella gamma più bassa dei programmi VM commerciali, e gli utenti privati e gli studenti hanno diritto a uno sconto; l’aggiornamento di una licenza esistente costa circa 50 €.
Oracle VirtualBox
In passato il programma VM VirtualBox, descritto sopra, era compatibile anche con macOS. In tal senso, vi erano alcune limitazioni: come sistema operativo ospite poteva essere utilizzato solo Mac OS X Server nelle versioni Leopard o Snow Leopard. Purtroppo, VirtualBox supporta Mac solo fino alla versione macOS 10.15 “Catalina”. I Mac moderni non sono affatto supportati da questo software di virtualizzazione. Ciò è dovuto al fatto che VirtualBox richiede un hardware x86 e quindi non è compatibile con i nuovi chip “Apple Silicon” basati su ARM.
Il migliore software VM per Linux
Il sistema operativo gratuito Linux è per così dire il “brodo primordiale” da cui è emersa la tecnologia della virtualizzazione. Oggigiorno, i blocchi di base per la virtualizzazione sono profondamente incorporati nel kernel del sistema operativo. Ciò si traduce nel più ampio spettro di programmi VM per gli utenti. Oltre a numerose soluzioni disponibili gratuitamente, vi sono anche alcune opzioni commerciali.
L’infrastruttura di virtualizzazione “Kernel-based Virtual Machine” (KVM) è ancorata nel kernel di Linux come tecnologia di virtualizzazione di base. Con l’ausilio di KVM, il kernel diventa un hypervisor su cui vengono eseguite macchine virtuali Linux e Windows. Oltre all’hardware x86, sono supportati anche i processori PowerPC e alcuni ARM. Se disponibile, viene utilizzato Intel VT-x oppure AMD-V per migliorare le prestazioni delle macchine virtuali a livello di processore.
KVM consente di gestire diverse macchine virtuali (VM) su un host Linux. A ogni VM viene assegnato il proprio hardware virtualizzato. Oltre ai core del processore e alla RAM, sono inclusi anche gli adattatori di rete e grafici e la memoria di massa. Le immagini delle macchine virtuali Linux e Windows non modificate sono utilizzate per configurare le macchine virtuali.
Vi sono molti altri programmi di virtualizzazione dell’universo Linux basati su KVM. Sono dunque disponibili svariate interfacce utente che permettono di gestire le macchine virtuali (VM). Sul desktop, come interfaccia grafica, è presente il “Virtual Machine Manager”. La KVM e le VM ospitate sono accessibili tramite il browser con “Kimchi” o “Foreman”. Vi sono anche interfacce a riga di comando che possono essere adoperate per automatizzare i flussi di lavoro usati con maggiore frequenza. La KVM è controllata in background tramite l’API libvirt.
“Quick Emulator” (QEMU) è un complesso software di virtualizzazione. Oltre alla virtualizzazione completa dell’hardware x86, QEMU è anche in grado di emulare altre architetture di processori. Ciò consente l’esecuzione di file binari che sono stati scritti per processori non fisicamente presenti nel sistema. È anche possibile tradurre ed eseguire singoli programmi in tempo reale.
Per impostazione predefinita, QEMU è integrato con altri programmi VM. Questo software di virtualizzazione può essere utilizzato con hypervisor come VirtualBox, KVM e Xen. Tramite l’impiego di “acceleratori” basati sull’hardware, si ottengono prestazioni quasi native durante l’esecuzione di macchine virtuali. Lo strumento è gratuito ed è disponibile con una licenza open source.
Con OpenVZ gli utenti Linux possono godere di un software di virtualizzazione molto interessante. Il progetto open source è emerso dallo sviluppo del software commerciale “Virtuozzo”. Il nome sta anche per “Open Virtuozzo”. Attualmente OpenVZ funge da componente di base open source del segmento commerciale.
Ciò che rende OpenVZ speciale è l’assenza di un hypervisor. La virtualizzazione avviene infatti a livello di sistema operativo. In altri termini, si utilizzano i container. Tuttavia, non viene eseguito nessun container di applicazioni, come avviene per Docker. Al contrario, OpenVZ virtualizza più sistemi operativi, reciprocamente isolati, basati su un singolo kernel Linux appositamente adattato. L’uso di OpenVZ è particolarmente utile per il consolidamento delle risorse del server.
VMware Workstation Pro
Il software di virtualizzazione Workstation Pro di VMware, già presentato, è disponibile anche per Linux. La funzionalità è paragonabile alla versione Windows del software. Tuttavia, vi sono alcune peculiarità specifiche di Linux. Anziché DirectX, che è disponibile solo con Windows, è supportato il motore di rendering “Vulkan”. È possibile eseguire una vasta gamma di distribuzioni Linux e Unix, quali Ubuntu, CentOS, Debian, Fedora, RHEL e SUSE, come sistema operativo ospite.
Oracle VirtualBox
VirtualBox è l’unico programma VM descritto in questo articolo che può essere eseguito anche su Linux, oltre che su Windows e macOS (ad eccezione dei Mac moderni). La funzionalità è simile alla versione per Windows.