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.
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.
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.
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:
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.
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".
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.
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.
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.
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:
È necessario un progetto Google Cloud con la fatturazione abilitata. I nuovi utenti possono registrarsi per una prova senza costi.
Questa API è necessaria per creare e gestire le VM. Puoi abilitarla nella console Google Cloud o utilizzando gcloud CLI.
Puoi creare istanze VM utilizzando la console Google Cloud o gcloud CLI.
SSH (VM Linux): connettiti in modo sicuro alle tue istanze Linux utilizzando SSH.
Utilizzo di gcloud CLI: il comando gcloud compute ssh fornisce un modo pratico per connettersi dal terminale locale
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.

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