È uscito il Corso Java Completo
Torna al blog

Cos'è una macchina virtuale e quando usarla

Come funziona una macchina virtuale, la differenza tra hypervisor di tipo 1 e 2, a cosa serve davvero e come si differenzia dai container.

Edoardo Midali

Edoardo Midali

Developer · Content Creator

5 min di lettura

Una macchina virtuale è un computer che esiste solo come software: ha un suo sistema operativo, un suo disco, una sua rete, e gira dentro un altro computer. È la tecnologia su cui si regge quasi tutto il cloud, e allo stesso tempo lo strumento più semplice per provare qualcosa senza rischiare nulla. In questo articolo trovi come funziona e quando conviene rispetto a un container.

Cos'è

Una macchina virtuale è la simulazione completa di un computer — processore, memoria, disco, rete — su cui gira un sistema operativo indipendente da quello dell'host.

Il componente che rende possibile tutto questo si chiama hypervisor: distribuisce le risorse fisiche reali tra le macchine virtuali e le tiene isolate l'una dall'altra.

Il punto chiave è l'isolamento: la macchina virtuale non sa di essere virtuale, e quello che succede al suo interno resta lì.

I due tipi di hypervisor

Una distinzione che spiega perché alcune soluzioni sono più veloci di altre.

Tipo 2 — gira dentro un sistema operativo. VirtualBox, VMware Workstation, UTM. Li installi come un normale programma, avvii la macchina virtuale in una finestra.

È quello che usi sul tuo computer: comodo, con un po' di sovraccarico perché c'è un sistema operativo di mezzo.

Tipo 1 — gira direttamente sull'hardware. Proxmox, VMware ESXi, Hyper-V. Non c'è un sistema operativo sotto: l'hypervisor è il sistema.

È quello che usano i provider cloud, perché è molto più efficiente. Quando compri un VPS, stai comprando una macchina virtuale su un hypervisor di tipo 1.

A cosa serve

I casi concreti:

Provare un sistema operativo senza toccare il tuo. È il motivo più comune, e il modo giusto per avvicinarsi a Linux se non vuoi complicazioni.

Ambienti isolati. Provare software di cui non ti fidi, analizzare file sospetti, fare esperimenti distruttivi. Se rompi tutto, elimini la macchina.

Simulare un server. Riprodurre l'ambiente di produzione in locale, provare una configurazione prima di applicarla alla macchina vera.

Eseguire software di un altro sistema. Un programma solo per Windows su un Mac, o viceversa.

Consolidare hardware. Un server fisico che ne ospita dieci virtuali: è il motivo per cui la virtualizzazione ha trasformato i datacenter.

Le istantanee. La funzione più sottovalutata: salvi lo stato esatto della macchina prima di un esperimento, e ci torni in pochi secondi se qualcosa va storto. Nessun'altra tecnologia lo rende così semplice.

Macchine virtuali e container

È il confronto che conta davvero, perché risolvono problemi in parte sovrapposti.

Una macchina virtuale virtualizza l'hardware: ogni macchina ha il suo sistema operativo completo.

Un container virtualizza il sistema operativo: i container condividono il kernel dell'host e isolano solo i processi e il file system.

Macchina virtualeContainer
ContieneSistema operativo completoSolo l'applicazione
DimensioneGigabyteMegabyte
AvvioMinutiSecondi
IsolamentoCompletoDel processo
Sistemi diversiStesso kernel
Densità per macchinaDecineCentinaia

Quando serve la macchina virtuale: sistema operativo diverso, isolamento forte per ragioni di sicurezza, simulazione di un ambiente completo, software che richiede accesso a basso livello.

Quando serve il container: distribuire applicazioni, ambienti di sviluppo riproducibili, microservizi, qualunque cosa debba avviarsi in fretta e in molte copie.

E spesso convivono: i container girano dentro macchine virtuali, nella maggior parte delle infrastrutture cloud. Il dettaglio è in virtualizzazione vs container.

Come si crea una macchina virtuale

In pratica, con un hypervisor di tipo 2:

  1. Scarica l'immagine ISO del sistema che vuoi installare
  2. Crea una nuova macchina virtuale nell'hypervisor
  3. Assegna le risorse — CPU, memoria, disco
  4. Avvia dall'immagine e installa normalmente
  5. Installa gli strumenti aggiuntivi dell'hypervisor (migliorano schermo, cartelle condivise, appunti)

Sulle risorse, due accortezze pratiche:

Non assegnare tutta la memoria disponibile. La macchina host ne ha bisogno per sé: se le togli tutto, rallenta tutto.

Verifica che la virtualizzazione hardware sia attiva nel BIOS. Se le macchine virtuali sono lentissime o non partono, è quasi sempre quello — il supporto del processore disattivato.

Il disco dinamico cresce man mano invece di occupare subito lo spazio massimo: comodo, leggermente più lento.

I limiti

Il sovraccarico è reale. Ogni macchina virtuale porta un intero sistema operativo: memoria, disco, tempo di avvio.

Le prestazioni grafiche sono limitate. Per lavori con grafica intensiva o videogiochi, la virtualizzazione non è la strada.

L'accesso all'hardware è mediato. Alcuni dispositivi non funzionano o richiedono configurazioni specifiche.

Su Windows, WSL è spesso meglio per il solo sviluppo: più leggero e più integrato — vedi cos'è WSL.

Dove si incontra senza saperlo

Vale la pena notarlo, perché chiarisce quanto sia diffusa:

Ogni istanza cloud è una macchina virtuale. VPS, istanze di calcolo, quasi tutto quello che affitti.

I sistemi di sviluppo riproducibili basati su configurazioni versionate creano macchine virtuali.

Docker Desktop su Windows e macOS esegue una macchina virtuale Linux sotto, perché i container hanno bisogno di un kernel Linux.

Gli emulatori mobili per lo sviluppo di app.

In sintesi

Una macchina virtuale è un computer completo che esiste come software, con il proprio sistema operativo, gestito da un hypervisor. Quelli di tipo 2 girano dentro il tuo sistema e servono per provare e sviluppare; quelli di tipo 1 girano sull'hardware e sono ciò che sta sotto il cloud.

Serve per provare sistemi, isolare esperimenti, simulare server ed eseguire software di altri sistemi — e la funzione che la rende insostituibile per imparare sono le istantanee: salvi lo stato, rompi tutto, torni indietro in pochi secondi.

Rispetto ai container: più pesante, più lenta, ma con isolamento completo e la possibilità di eseguire sistemi diversi. Non sono alternative, convivono — i container girano dentro macchine virtuali in quasi tutte le infrastrutture cloud.

E il problema pratico più frequente: se le macchine virtuali sono lentissime, controlla che la virtualizzazione hardware sia attiva nel BIOS.