La macchina virtuale: un’introduzione

La macchina virtuale (VM) è un classico concetto dellavirtualizzazione hardware e normalmente si riferisce alla creazione di ambienti virtuali nell’ambito di test software. Numerose soluzioni software consentono il funzionamento di più sistemi guest su un sistema host comune. Ma come funzionano le macchine virtuali e quali vantaggi e svantaggi sono associati a questo concetto di virtualizzazione? Vi accompagniamo in questo viaggio attraverso i concetti fondamentali della virtualizzazione hardware basata su hypervisor e vi guidiamo passo per passo nella configurazione di un ambiente virtuale per Windows o Linux.

Che cos’è una macchina virtuale?

Per VM si intende un calcolatore virtuale con un proprio sistema operativo, che si appoggia sulle risorse hardware di un soggiacente sistema host. Nei confronti dell’utente un tale sistema guest si comporta come un PC indipendente con RAM, memoria su disco rigido e file system.

Ogni macchina virtuale si basa su un software hypervisor (anche Virtual Machine Monitor, VMM). L’hypervisor funziona come applicazione sul sistema operativo dell’host (hosted hypervisor) oppure si può appoggiare direttamente all’hardware della macchina fisica (bare metal hypervisor), gestendo le risorse hardware messe a disposizione dal sistema ospitante. Il software hypervisor costituisce un ulteriore livello di astrazione tra gli hardware fisici e le macchine virtuali. Ogni VM agisce isolata dal sistema ospitante e dagli altri sistemi guest in un proprio ambiente virtuale. In questo caso si parla di incapsulamento. I processi all’interno di una macchina virtuale non hanno influsso né sull’host né su altre VM dello stesso hardware.

Molti hypervisor combinano le tecnologie per la virtualizzazione hardware con funzioni di emulazione. I relativi prodotti di virtualizzazione non soltanto rappresentano un passo ulteriore di astrazione tra gli hardware fisici su cui sono preparati e il piano virtuale utilizzato, ma superano anche le incompatibilità tra le diverse architetture di sistema. Ciò permette agli utenti di emulare ambienti di runtime per diversi sistemi operativi su un sistema host. Gli utenti possono quindi gestire i sistemi guest anche su macchine virtuali la cui architettura di sistema non corrisponde a quella del sistema host.

Il seguente screenshot mostra il sistema operativo Windows 7 e Ubuntu 17.10 come sistema guest virtualizzato sullo stesso sistema ospitante. Ogni macchina virtuale viene eseguita in una propria finestra. Come software di virtualizzazione viene utilizzato Oracle VM VirtualBox.

Macchine virtuali in azione

Nell’ambito della virtualizzazione hardware si possono suddividere le risorse di un sistema fisico su diversi sistemi virtuali. In questo modo si divide ogni sistema guest, inclusi tutti i programmi che vi vengono eseguiti, dall’hardware soggiacente.

Di solito nella pratica le macchine virtuali entrano in campo per isolare precisi processi e applicazioni per motivi di sicurezza. Rispetto agli altri concetti di virtualizzazione, le VM offrono un forte incapsulamento e fungono perciò come base per prodotti hosting in cui si possono gestire più server client su una comune piattaforma hardware. La creazione di una macchina virtuale è la base per le offerte di shared hosting e VPS (Virtual Private Server). Poiché ogni sistema ospitante viene eseguito in un ambiente di runtime isolato, in una VM i processi incapsulati non influenzano né il sistema host né altri sistemi guest.

In un contesto aziendale si utilizzano le macchine virtuali per ridurre i costi di gestione e di manutenzione delle infrastrutture IT. Le imprese talvolta si dotano di estese infrastrutture IT che rimangono inutilizzate per la maggior parte della giornata. Con le macchine virtuali si riducono notevolmente questi momenti di inattività: anziché mettere a disposizione una corrispondente macchina fisica per ogni campo di applicazione dell’IT aziendale, sempre più aziende si stanno spostando su server di posta, database, file o applicazioni in ambienti virtuali isolati sulla stessa efficiente piattaforma hardware.

Questo concetto è implementato come parte del consolidamento dei server. Infatti tendenzialmente è più conveniente alimentare una singola grande piattaforma di elaborazione per diversi sistemi virtuali rispetto a gestire molti piccoli calcolatori. In particolare i processori sono ancora costosi da acquistare. Il tempo inutilizzato del processore è perciò un costo inutile che si può evitare optando per i sistemi virtuali.

Un ulteriore campo di applicazione degli ambienti virtuali è lo sviluppo software. I programmatori che sviluppano le applicazioni per diverse architetture di sistema spesso si appoggiano a macchine virtuali per i test dei software. Numerosi prodotti hypervisor permettono il funzionamento in parallelo di diversi sistemi operativi o versioni di sistema. Le macchine virtuali si possono creare, clonare ed eliminare dal disco fisso senza avanzi di dati semplicemente premendo un pulsante. Inoltre i processi difettosi all’interno di una macchina virtuale, a causa dell’incapsulamento, non hanno alcun effetto sul sistema soggiacente.

Gli utenti privati normalmente fanno ricorso a hypervisor con funzioni di emulazione per eseguire applicazioni che sono state scritte per un’altra architettura di sistema. Su questo punto bisogna stare attenti al fatto che sia la virtualizzazione dell’hardware che l’emulazione sono sempre accompagnate da una perdita di prestazioni. Se per esempio si desidera eseguire un programma di Linux in una VM su un calcolatore Windows, bisogna attingere a risorse aggiuntive sia per l’hypervisor che per il sistema guest. Una simile applicazione incapsulata di Linux non ha quindi più a disposizione l’intera potenza di prestazioni dell’hardware soggiacente: in questi casi si parla di overhead.

N.B.

Con overhead si indicano in informatica le risorse IT come tempo di calcolo, memoria o larghezza di banda, che si rendono necessarie per l’esecuzione di un processo o che vanno perse senza contribuire direttamente al risultato del processo.

La virtualizzazione hardware rivela i propri limiti soprattutto quando si tratta di workload ad alta intensità di risorse. Se diverse macchine virtuali sono in esecuzione sullo stesso sistema host, la richiesta di risorse di una singola macchina durante i picchi di prestazione può influire sulle prestazioni delle altre macchine che si appoggiano allo stesso host. A questo si può rimediare assegnando ad ogni macchina virtuale un determinato contingente di risorse hardware. Fate però attenzione che il totale delle risorse virtuali richieste contemporaneamente non superi mai la potenza massima della macchina fisica.

Vantaggi e svantaggi delle macchine virtuali

La seguente tabella confronta i vantaggi e gli svantaggi principali delle macchine virtuali. Bisogna però osservare che l’eventuale peso di pregi e difetti dipende innanzitutto dal campo di applicazione per cui vorreste utilizzare la VM e quale fine perseguite con la virtualizzazione.

Vantaggi delle VM Svantaggi delle VM
Utilizzo in parallelo di diversi sistemi guest: La virtualizzazione basata su hypervisor consente l’utilizzo in parallelo di più sistemi operativi sullo stesso hardware. Molti hypervisor offrono funzioni di emulazione con le quali si possono superare le incompatibilità tra le diverse architetture di sistema. Overhead attraversp hypervisor (e sistema guest): Le macchine virtuali sono meno efficienti di quelle fisiche, perché una parte delle risorse disponibili è utilizzata per il funzionamento del software hypervisor.
Migliore utilizzo grazie al consolidamento hardware: Se si utilizzano più macchine virtuali su una singola macchina fisica, le risorse hardware sono sfruttate meglio. Un tale consolidamento sfrutta al massimo l’hardware, riduce i tempi morti e risparmia costi. Un hardware condiviso può portare a difficoltà durante i picchi di prestazione: Poiché tutte le macchine virtuali su un sistema host condividono le medesime risorse hardware, ciò può portare a impasse in caso di picchi di prestazione.
Forte incapsulamento del sistema guest e di tutti i processi che vi hanno luogo: Ogni sistema guest è eseguito isolatamente in un ambiente di runtime virtuale. Se una macchina virtuale si inceppa a causa di un processo difettoso o viene attaccata da hacker o malware, normalmente le altre VM che funzionano in parallelo e il sistema host soggiacente non risentono di alcuna conseguenza. Hypervisor come Single Point of Failure: Se si verificano attacchi da parte di hacker o malware direttamente contro il software di virtualizzazione, potrebbero risentirne tutti i sistemi guest gestiti dall’hypervisor.
Risparmio in manutenzione e amministrazione delle risorse IT: Le macchine virtuali offrono un grande potenziale di risparmio nell’implementazione di risorse IT. Una piattaforma hardware potente per diversi sistemi virtuali riduce soprattutto i costi per la manutenzione e l’amministrazione, dato che questi compiti vengono centralizzati. Situazione legale non chiara a riguardo alle licenze dei sistemi operativi virtuali: L’utilizzo di macchine virtuali pone nuove domande riguardo alle licenze dei sistemi operativi.
Implementazione flessibile e porting di server e PC virtuali: Le macchine virtuali sono indipendenti dall’hardware soggiacente e consentono un’implementazione flessibile delle risorse IT. I server o i personal computer virtualizzati possono essere facilmente creati, clonati e spostati su un’altra piattaforma di hosting.  

Tutorial: come si crea una macchina virtuale?

In questa guida passo per passo vi spieghiamo come potete creare una macchina virtuale su un host Windows ed eseguirla come sistema guest su Linux Ubuntu. Per il tutorial utilizziamo Windows 7 e come software hypervisor Oracle VM VirtualBox.

N.B.

Per seguire le istruzioni sul proprio sistema, avete bisogno solamente di un PC Windows con accesso a Internet. I software utilizzati nel tutorial si possono scaricare gratuitamente su Internet.

Primo passaggio: scegliere un software hypervisor

Per l’implementazione di sistemi operativi virtuali avete a disposizione diverse soluzioni software. I leader sul mercato sono i prodotti di Oracle, VMware e Parallels.

La seguente tabella mostra i prodotti hypervisor più amati per Windows, Linux e macOS nonché i possibili sistemi guest.

Software di virtualizzazione

Sistemi host

Sistemi guest

Oracle VM VirtualBox

 
  • Windows
  • Linux
  • Mac OS X
  • macOS
  • Solaris
 
 
  • Windows
  • Linux
  • Solaris
  • FreeBSD
 

VMware Workstation Player

 
  • Windows
  • Linux
 
 
  • Windows
  • Linux
  • NetWare
  • Solaris
  • FreeBSD
 

VMware Fusion

 
  • Mac OS X
  • macOS
 
 
  • Windows
  • Linux
  • NetWare
  • Solaris
  • FreeBSD
  • macOS
  • Mac OS X
 

Parallels Desktop for Mac

 
  • Mac OS X
  • macOS
 
 
  • Windows
  • Linux
  • macOS
  • Mac OS X
  • Solaris
  • FreeBSD
  • Android OS
  • Chrome OS
 

Per il seguente tutorial abbiamo utilizzato l’hypervisor VM VirtualBox di Oracle. Il software è disponibile gratuitamente sotto licenza GNU General Public License (GNU GPLv2). Consigliamo di eseguire il download dal sito del fornitore. Ecco i passi da seguire:

  1. Accedete all’URL http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html
  2. Selezionate il pacchetto corrente per il vostro sistema operativo (nel nostro caso Windows)
  3. Salvate il file .exe con i dati binari in una directory a piacere sul vostro computer
N.B.

In aggiunta al software di base, Oracle fornisce gratuitamente Oracle VM VirtualBox Extension Pack, un modulo di espansione proprietario per il software di virtualizzazione open source. Per questo tutorial tuttavia l’Extension Pack non è necessario.

Secondo passaggio: installare Oracle VM VirtualBox

Terminato il download, eseguite il pacchetto di dati binari con un doppio clic sul file .exe. Seguite le istruzioni dell’Install Wizard per installare Oracle VM VirtualBox localmente sul vostro sistema.

Alla fine del processo di installazione il software avvia Oracle VM VirtualBox Manager. Qui potete creare e gestire le vostre macchine virtuali.

Terzo passaggio: download dell’image del sistema operativo

Per poter eseguire un sistema guest in una macchina virtuale, avete bisogno di un’image. Si tratta di un’immagine di memoria che può essere interpretata dal software hypervisor come disco rigido di sistema. Tale image può essere nel formato aperto .iso. Le soluzioni di virtualizzazione comuni funzionano anche con formati proprietari di contenitori per file di immagine come .vmdk (VMware), .vhd (Xen e Microsoft Hyper-V) e .vdi (Oracle VM VirtualBox).

Per questo tutorial utilizziamo il sistema operativo open source Ubuntu 17.10.1, che si può scaricare come file .iso dal sito ufficiale del progetto Ubuntu. Seguite i seguenti passi:

  1. Caricate l’URL https://www.ubuntu.com/download/desktop
  2. Selezionate la versione corrente del sistema operativo e cliccate su “download”
  3. Salvate il file .iso localmente sul vostro sistema
Consiglio

Se si desidera utilizzare un PC Windows virtuale come sistema guest, ci sono diversi file image per soluzioni hypervisor di VMware, Hyper-V, VirtualBox e Parallels sul sito ufficiale dello sviluppatore Microsoft| Altri pacchetti completi per macchine virtuali sono resi disponibili da Microsoft per essere testati.

Quarto passaggio: creare nuove macchine virtuali

Cliccate sul tasto “New” per inserire una nuova macchina virtuale a Oracle VM VirtualBox Manager.

Quinto passaggio: scegliere un sistema operativo e nominare la VM

Date un nome alla nuova macchina virtuale e scegliete quale sistema operativo volete eseguire nella VM.

Confermate la vostra scelta cliccando su “Next”.

Sesto passaggio: ripartire le risorse hardware – memoria di elaborazione

Assegnate alla nuova macchina virtuale una parte della memoria di elaborazione messa a disposizione dal sistema host.

Confermate la vostra scelta cliccando su “Next”.

Settimo passaggio: ripartire le risorse hardware – spazio su disco rigido

Nel prossimo passo occorre decidere se creare un nuovo disco fisso virtuale oppure assegnare alla macchina virtuale un disco fisso virtuale già presente.

In questo tutorial optiamo per creare un nuovo disco rigido virtuale, sul quale infine installiamo il sistema guest a partire da zero.

Scegliete l’opzione “Create a virtual hard disk now” e confermate la vostra scelta cliccando su “Create”.

Consiglio

Molti fornitori mettono già a disposizione dell’utente delle macchine virtuali completamente configurate come immagine di memoria. Se considerate un’offerta di questo genere, scaricate la macchina virtuale in uno dei formati container supportati e selezionatelo con l’opzione “Use an existing virtual hard disk file”. Oracle VM VirtualBox supporta oltre al formato di file proprio VirtualBox Disk Image (.vdi), anche immagini di memoria nei formati Virtual Hard Disk (.vhd) e Virtual Machine Disk (.vmdk).

Scegliete ora il container format che VirtualBox deve usare per il nuovo disco rigido virtuale. Se non intendete eseguire la nuova VM attraverso un’altra soluzione di virtualizzazione, consigliamo il format preimpostato VDI.

Confermate la scelta cliccando su “Next”.

Il prossimo passo consiste nello scegliere se assegnare alla macchina virtuale una quantità fissa di spazio disponibile su disco. In alternativa potete allocare uno spazio di memoria dinamico sul disco fisico. In questo caso la VM non utilizza un contingente fisso, ma le risorse di memoria consumate sul disco fisso si adegueranno automaticamente ai requisiti della VM.

N.B.

Se si assegna un contingente dinamico di spazio su disco, esso cresce all’aumentare delle esigenze di memoria della macchina virtuale. Ma attenzione: lo spazio di memoria non si riduce automaticamente quando si libera la memoria all’interno della VM eliminando i file.

Per questo tutorial sceglieremo un contingente definito di memoria.

Il target di archiviazione e la dimensione del disco rigido virtuale verranno definiti nel prossimo passaggio.

Cliccate su “Create” per completare il processo di configurazione e per comunicare a VM VirtualBox di creare la nuova VM.

La neonata VM appare con il nome da voi scelto nella lista delle macchine virtuali a disposizione.

Per ogni macchina virtuale, VM VirtualBox crea automaticamente una cartella di file nel target di memoria da voi scelto, e contiene oltre al file VDI per il disco virtuale un log file e una definizione della VM.

Ottavo passaggio: installare un sistema guest

Avviate la nuova macchina virtuale, scegliendola con il mouse e cliccando nel menu su “Start”.

Subito dopo l’avvio, il programma chiede con quale file image debba eseguire la macchina virtuale.

Scegliete l’image del sistema operativo che avete scaricato nel terzo passaggio. Confermate la vostra scelta cliccando su “Start”.

Noi scegliamo il file .iso con l’immagine di memoria di Ubuntu 17.10.1.

N.B.

Siccome i file .iso contengono l’immagine di un sistema operativo completo, si tratta solitamente di file molto grandi. Nel nostro caso l’image del sistema operativo per Ubuntu 17.10.1 si aggira intorno a 1,4 Gigabyte.

Dopo aver scelto l’image desiderata, VM VirtualBox avvia il sistema operativo memorizzato nel file in un ambiente virtuale isolato. Inoltre ogni macchina virtuale viene eseguita in una finestra separata. Poiché abbiamo deciso di installare Ubuntu da zero, la finestra della macchina virtuale mostra la schermata iniziale del sistema operativo.

Cliccate su “Install Ubuntu” e il wizard vi guiderà attraverso l’installazione del sistema guest.

Completato il processo di installazione, il sistema operativo si può utilizzare come qualsiasi altro sistema installato su un hardware fisico.

Se lo desiderate, potete aggiungere ulteriori macchine virtuali.

Tutti i cambiamenti che apportate nella vostra VM vengono scritti automaticamente nel file VDI che avete creato durante la configurazione come disco virtuale. Se volete eseguire il sistema guest su un altro calcolatore, vi basta copiare la cartella di file della vostra macchina virtuale (incluso il file VDI, il log file e la definizione) sul dispositivo che intendete utilizzare. Attenzione, però: ogni calcolatore sul quale volete eseguire la vostra VM deve disporre di un software di virtualizzazione compatibile.

Consiglio

Un’alternativa per l’approntamento di un sistema guest in macchine virtuali è la tecnologia container. Nel nostro tutorial per principianti sulla piattaforma di container Docker.


Abbiamo una proposta per te:
Web hosting a partire da 1 €/mese!

Dominio gratis
Certificato SSL Wildcard incluso
Assistenza clienti 24/7
A partire da 1 €/mese IVA escl. per un anno,
poi 8 €/ mese IVA escl.