Che cos'è una macchina virtuale?

Ultimo aggiornamento: 26/06/2026

Una macchina virtuale (VM) è un computer basato su software che fornisce un ambiente isolato sull'hardware host. Le macchine virtuali possono eseguire programmi e sistemi operativi, archiviare dati, connettersi alle reti e svolgere altre funzioni di calcolo. Gran parte delle tecnologie da cui traiamo beneficio oggi, come il cloud computing e l'intelligenza artificiale, è radicata nel concetto di macchina virtuale, che consente a sistemi operativi e software di essere separati da una macchina fisica. Ad esempio, le VM nel cloud computing vengono utilizzate per virtualizzare le risorse dei server dei provider di servizi cloud, dando vita all'architettura cloud multi-tenant che consente ai clienti di condividere le risorse pur rimanendo isolati gli uni dagli altri.

Come funzionano le macchine virtuali?

Le macchine virtuali utilizzano la tecnologia di virtualizzazione per creare l'hardware virtuale, ovvero una versione virtuale di un computer su una macchina fisica. La macchina fisica su cui vengono eseguite le VM è detta macchina host, mentre le VM in esecuzione sull'host sono chiamate macchine guest.

Un livello software leggero chiamato hypervisor divide le risorse hardware fisiche della macchina host, come CPU, GPU, TPU, memoria (RAM), spazio di archiviazione e reti. L'hypervisor alloca quindi queste risorse a ogni VM guest. Ciò ti consente di eseguire più sistemi operativi "guest" contemporaneamente e in isolamento su una singola macchina "host". Ad esempio, Google Compute Engine utilizza un hypervisor basato su KVM per gestire e allocare in modo efficiente le risorse alle macchine virtuali create.

Ogni VM guest viene eseguita su una partizione isolata dell'host, completamente separata dalle altre. Puoi ospitare più VM su una singola macchina host, spesso un server. L'hypervisor migliora l'efficienza e la flessibilità complessive astraendo le risorse fisiche della macchina host in un pool. Queste risorse possono quindi essere sottoposte a provisioning e allocate dinamicamente alle VM guest in base ai loro requisiti specifici.

Due tipi principali di hypervisor

  • Tipo 1: hypervisor bare metal. Vengono eseguiti direttamente sull'hardware fisico dell'host. Sono di uso comune nei data center aziendali per le elevate prestazioni e l'efficienza. Ad esempio, Google Cloud utilizza un hypervisor basato su KVM per alimentare le macchine virtuali Compute Engine.
  • Tipo 2: hypervisor ospitati. Vengono eseguiti come applicazione sopra un sistema operativo esistente, il che li rende adatti all'uso desktop. Il caso d'uso più comune è quello sviluppo e test.

Tipi di macchine virtuali

In generale, ci sono due tipi di macchine virtuali: Process VM (VM di elaborazione) e system VM (VM di sistema).

Una VM di elaborazione, chiamata anche macchina virtuale dell'applicazione o managed runtime environment (MRE), crea l'ambiente virtuale di un sistema operativo mentre è in esecuzione un'app o un singolo processo e lo elimina non appena esci. Le VM di elaborazione consentono di creare un ambiente indipendente dalla piattaforma che permette di eseguire un'app o un processo allo stesso modo su qualsiasi piattaforma. Un esempio concreto ne è il server Node.js su Cloud Run. Cloud Run fornisce un ambiente completamente gestito in cui l'applicazione viene eseguita all'interno di un container, astratto dall'infrastruttura sottostante.

Una VM di sistema (a volte chiamata macchina virtuale hardware) simula un sistema operativo completo, consentendo la presenza di più ambienti del sistema operativo sulla stessa macchina. In genere, si tratta del tipo di VM a cui si riferiscono le persone quando parlano di "macchine virtuali". Le VM di sistema possono eseguire il proprio sistema operativo e le proprie applicazioni, mentre un hypervisor monitora e distribuisce le risorse della macchina host fisica tra le VM di sistema.

Macchine virtuali cloud

Più di recente, potresti aver anche sentito parlare di macchine virtuali nel cloud o VM cloud. Le macchine virtuali cloud sono semplicemente macchine virtuali che vengono eseguite su server virtuali nel cloud. Molti provider di servizi cloud consentono di creare ed eseguire macchine virtuali cloud sulla loro infrastruttura, permettendo di utilizzare i loro potenti server come macchine host e sfruttare altri servizi software-defined come memoria e archiviazione di rete. Queste VM cloud sono generalmente classificate in base all'ottimizzazione delle risorse:

  • Le VM per uso generico sono adatte a un'ampia varietà di attività e workload
  • Le VM ottimizzate per il calcolo sono progettate per il computing ad alte prestazioni (HPC) e le applicazioni ad alta intensità di calcolo
  • Le VM ottimizzate per la memoria sono ideali per database aziendali su larga scala e carichi di lavoro che richiedono enormi quantità di memoria
  • Le VM specializzate sono configurate con risorse di fascia alta specifiche, come le GPU, per l'AI/ML e il computing scientifico avanzato
  • Le Confidential VM sono un tipo sicuro che protegge i dati anche durante l'elaborazione in memoria

Domande frequenti

Una macchina virtuale è un'emulazione software di un computer fisico, mentre un desktop virtuale è un'interfaccia utente che consente l'accesso a un ambiente desktop ospitato su un server remoto. La differenza principale tra le due è che una macchina virtuale emula un intero computer, mentre un desktop virtuale fornisce l'accesso remoto a un ambiente desktop.

Le macchine virtuali sono generalmente sicure perché garantiscono il proprio isolamento dal sistema host, il che riduce il rischio di diffusione del malware. Tuttavia, la loro sicurezza dipende da una configurazione corretta, da aggiornamenti regolari e da pratiche di sicurezza adeguate. Se non vengono gestite correttamente, le macchine virtuali possono comunque essere vulnerabili agli attacchi, rendendo essenziale seguire le best practice di sicurezza.

Sì, una macchina virtuale occupa spazio di archiviazione sul sistema host. La quantità di spazio utilizzato dipende dalle dimensioni dell'hard disk virtuale, dal sistema operativo e da eventuali applicazioni installate. Inoltre, le macchine virtuali possono essere configurate per allocare lo spazio dinamicamente secondo necessità o per utilizzare una quantità fissa di spazio di archiviazione.

VM e container

Sebbene sia le VM che i container vengano utilizzati per isolare le applicazioni, lo fanno in modi fondamentalmente diversi. Una macchina virtuale virtualizza l'intero stack hardware fisico, incluso il sistema operativo. In questo modo, ogni VM è un ambiente autonomo e isolato, ma comporta anche che le VM tendano a essere più grandi e a occupare più risorse.

Al contrario, i container sono più leggeri perché virtualizzano solo il livello del sistema operativo. Invece di includere un sistema operativo completo in ogni applicazione, condividono il kernel dell'host. In questo modo utilizzano meno risorse rispetto alle VM e si avviano più velocemente, pur rimanendo isolati. Ciò li rende interessanti per lo sviluppo di nuove applicazioni. Poiché molte delle applicazioni sviluppate negli ultimi 10 anni sono state scritte per i container, diversi workload, tra cui e-commerce, back-office e AI, sono "nativi del container".

Come vengono utilizzate le macchine virtuali?

Le VM sono i componenti di base delle risorse di computing virtualizzate e svolgono un ruolo principale nella creazione di qualsiasi applicazione, strumento o ambiente, sia nel cloud che on-premise.

Ecco alcuni dei modi più comuni in cui le aziende utilizzano le macchine virtuali:

Più macchine fisiche possono essere riconfigurate come VM ed eseguite su un host insieme ad altre VM, in modo che le organizzazioni possano ridurre la proliferazione. Nel corso del tempo, le VM hanno dimostrato di essere in grado di eseguire anche le applicazioni più sensibili alle prestazioni.

Un'organizzazione IT centrale può eseguire il provisioning e gestire le VM per ogni unità aziendale e area funzionale, accelerando l'accesso alle risorse e migliorando la visibilità aziendale.

Le VM possono fungere da ambienti isolati per i test e lo sviluppo che includono funzionalità complete, ma non hanno alcun impatto sull'infrastruttura circostante.

Le VM possono essere facilmente disattivate o attivate, migrate e adattate, offrendo la massima flessibilità per lo sviluppo e il deployment.

La flessibilità e la portabilità offerte dalle VM sono essenziali per aumentare la velocità delle iniziative di migrazione.

La replica dei sistemi negli ambienti cloud che utilizzano le VM può offrire un ulteriore livello di sicurezza e certezza. Anche gli ambienti cloud possono essere aggiornati continuamente.

Le VM forniscono la base per creare un ambiente cloud insieme a un ambiente on-premise, comportando flessibilità senza la necessità di abbandonare i sistemi legacy.

Le VM ti consentono di eseguire sistemi operativi diversi su una singola macchina fisica. Ad esempio, puoi eseguire una VM Windows Server su Compute Engine di Google Cloud, anche se il tuo ambiente di sviluppo principale utilizza Linux. Google Cloud fornisce una varietà di immagini sistema operativo per supportare diverse esigenze.

La replica dei sistemi negli ambienti cloud che utilizzano le VM può offrire un ulteriore livello di sicurezza e certezza. Anche gli ambienti cloud possono essere aggiornati continuamente.

Vantaggi delle macchine virtuali

Le macchine virtuali offrono molti vantaggi, in particolare se si sceglie una VM cloud, tra cui: 

Scalabilità

Le VM basate su cloud semplificano la scalabilità delle applicazioni, aumentando la disponibilità e le prestazioni. Puoi aumentare la capacità in base alla domanda senza dover investire in server fisici di proprietà. 

Portabilità 

Una macchina virtuale è un singolo pacchetto software con risorse hardware, un sistema operativo e tutte le sue applicazioni. Puoi spostare facilmente le VM da un server all'altro o persino dall'hardware on-premise agli ambienti cloud. 

Ingombro e costi ridotti

Le VM consentono di eseguire più ambienti virtuali da una singola macchina, contribuendo a ridurre l'impronta dell'infrastruttura fisica, la bolletta dell'elettricità e i costi di manutenzione e gestione. 

Provisioning più rapido 

Le VM possono essere facilmente duplicate, consentendo alle aziende di creare nuovi ambienti identici senza doverli configurare da zero.

Affidabilità

Le macchine virtuali e i loro componenti esistono virtualmente e rimangono isolati dalle altre VM guest. Se la VM si arresta in modo anomalo, le altre VM guest rimarranno operative e la macchina host fisica non sarà interessata. 

Maggiore sicurezza

Le macchine virtuali ti consentono di eseguire più sistemi operativi senza influire sul sistema operativo host. Le VM ti permettono di creare ambienti virtuali sicuri per testare le app o persino studiare le vulnerabilità della sicurezza senza rischi elevati per la macchina host. Le moderne offerte di VM, come le Confidential VM di Google Cloud, forniscono la crittografia in uso per i dati elaborati in memoria utilizzando un Trusted Execution Environment (TEE) basato su hardware.

Potenziali criticità delle macchine virtuali

Tuttavia, ci sono alcune considerazioni da tenere a mente quando si eseguono le VM. Una delle maggiori sfide potenziali delle macchine virtuali è che l'esecuzione di più sistemi operativi e di un livello hypervisor può comportare un costo in termini di prestazioni se la macchina host non è sufficientemente robusta. Inoltre, l'hardware virtuale potrebbe non essere efficiente come l'hardware fisico di una macchina fisica. Infine, la maggior parte dei fornitori di servizi cloud offre macchine virtuali con CPU e memoria fisse, il che porta a un utilizzo inefficiente delle risorse.

Molte di queste preoccupazioni possono essere superate scegliendo di utilizzare le VM offerte da un provider di servizi cloud. Le VM cloud offrono molti vantaggi rispetto alle VM tradizionali, poiché consentono alle organizzazioni di accedere alla potenza di calcolo di un intero data center di computer, anziché di una singola macchina. Inoltre, le dimensioni delle macchine virtuali di Google Compute Engine offrono tipi di macchine personalizzate. Invece di scegliere tra tipi di macchine predefiniti che potrebbero includere capacità in eccesso, puoi personalizzare il rapporto CPU-memoria in base ai tuoi carichi di lavoro, in modo da pagare solo le risorse che utilizzi effettivamente. Questo approccio mirato riduce al minimo gli sprechi e può ridurre significativamente la spesa cloud, soprattutto quando si esegue la migrazione da on-premise a Google Cloud o da altri provider cloud. Compute Engine offre anche tipi di macchine virtuali ottimizzati per esigenze specifiche dei clienti per carichi di lavoro aziendali, configurazioni di memoria elevata o carichi di lavoro impegnativi come machine learning o computing ad alte prestazioni.

Google Cloud offre anche macchine virtuali schermate per una maggiore sicurezza e un'integrità verificabile delle tue istanze VM. Le macchine virtuali schermate di Google Cloud sfruttano funzionalità e controlli di sicurezza della piattaforma avanzati che proteggono i carichi di lavoro aziendali da minacce come attacchi remoti, escalation dei privilegi e utenti malintenzionati interni. 

Per alcune applicazioni, gli sviluppatori possono scegliere di bypassare completamente le VM tradizionali. I modelli di deployment moderni come l'orchestrazione dei container (Google Kubernetes Engine - GKE) e il computing serverless (Cloud Run) sono valide alternative per casi d'uso specifici, che consentono ai team di bypassare la gestione del sistema operativo VM, migliorando la velocità di deployment e spesso ottenendo un maggiore risparmio sui costi.

Introduzione alle macchine virtuali su Google Compute Engine

Se sei pronto per iniziare a utilizzare le macchine virtuali, Google Cloud le offre tramite Compute Engine. Compute Engine fornisce istanze VM flessibili e autogestite, ospitate sull'infrastruttura di Google. Ecco una panoramica generale su come creare e connetterti a una VM su Compute Engine:

Configurare il progetto Google Cloud.

È necessario un progetto Google Cloud con la fatturazione abilitata. I nuovi utenti possono registrarsi per una prova senza costi.

Abilita l'API Compute Engine

Questa API è necessaria per creare e gestire le VM. Puoi abilitarla nella console Google Cloud o utilizzando gcloud CLI.

Crea un'istanza VM:

Puoi creare istanze VM utilizzando la console Google Cloud o gcloud CLI.

  • Utilizzo della console: nella console Google Cloud, vai a "Compute Engine" e fai clic su "Crea istanza". Puoi quindi configurare il nome, la regione, la zona, il tipo di macchina (ad esempio, e2-medium), l'immagine del disco di avvio (ad esempio Debian, Ubuntu, Windows Server) e altre impostazioni della VM.
  • Utilizzo di gcloud CLI: per gli utenti della riga di comando, viene utilizzato il comando gcloud compute instances create.

Connettiti alla tua macchina virtuale

SSH (VM Linux): connettiti in modo sicuro alle tue istanze Linux utilizzando SSH.

  • Utilizzo della console Google Cloud: il metodo più semplice è spesso quello di utilizzare il pulsante "SSH" disponibile accanto all'istanza nella sezione Compute Engine della console. Si aprirà una sessione del terminale basata su browser.

Utilizzo di gcloud CLI: il comando gcloud compute ssh fornisce un modo pratico per connettersi dal terminale locale

  • Gestione delle chiavi SSH: per impostazione predefinita, quando utilizzi gcloud compute ssh per la prima volta con una VM, gcloud genera una coppia di chiavi SSH. Quindi aggiunge la chiave pubblica ai metadati della VM o a quelli del progetto. L'agente guest di Google in esecuzione sulla VM configura automaticamente sshd per consentire l'accesso utilizzando questa chiave.

Utilizzo di OS Login (consigliato): per una maggiore sicurezza e una gestione semplificata delle chiavi SSH, soprattutto su più VM o team, valuta la possibilità di abilitare OS Login. OS Login integra il controllo dell'accesso SSH con Google Cloud IAM. Con OS Login abilitato, le chiavi SSH sono collegate alla tua identità Google e l'accesso viene gestito utilizzando le autorizzazioni IAM anziché distribuendo le chiavi ai metadati dell'istanza.

Per abilitare OS Login, imposta la chiave dei metadati enable-oslogin su TRUE nel tuo progetto o nelle singole istanze.

  •  A questo punto, puoi connetterti utilizzando gcloud compute ssh come di consueto. Scopri di più nella documentazione Configura OS Login

Risolvi le tue sfide aziendali con Google Cloud

I nuovi clienti ricevono 300 $ di crediti senza costi da spendere su Google Cloud.
Parla con un esperto del team di vendita di Google Cloud per discutere della tua sfida unica in modo più dettagliato.

Fai il prossimo passo

Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.

Google Cloud