Nested Virtualization con Hyper-V: guida completa per ambienti on-premises e cloud

La virtualizzazione annidata (Nested Virtualization) è una funzionalità introdotta in Windows Server 2016 che consente di eseguire Hyper-V all’interno di una macchina virtuale.

In altre parole, una VM Hyper-V può diventare a sua volta un host di virtualizzazione, capace di creare e gestire altre macchine virtuali.

È una funzionalità nata per semplificare la vita ai sistemisti, permettendo di:

  • costruire laboratori di test o demo su un singolo host fisico;
  • simulare cluster Hyper-V o Storage Spaces Direct senza hardware dedicato;
  • creare ambienti sandbox per test di sicurezza;
  • utilizzare Hyper-V all’interno di VM in Azure, scenario molto utile per training o test.

Durante la scrittura delle mie guide l’ho utilizzata tantissime volte e quindi oggi voglio evidenziarne le potenzialità e l’efficacia.

Requisiti e compatibilità

Per poter utilizzare la virtualizzazione annidata (Nested Virtualization), è fondamentale che l’ambiente di esecuzione (sia esso un host fisico o una macchina virtuale su cloud) soddisfi alcuni requisiti hardware e software specifici.

Requisiti hardware

Per abilitare la Nested Virtualization, è necessario disporre di un processore con supporto alle estensioni di virtualizzazione, ovvero Intel VT-x (VMX) o AMD-V (SVM).

È inoltre indispensabile che la CPU supporti la funzionalità Second Level Address Translation (SLAT), richiesta da Hyper-V per la gestione efficiente della memoria virtuale.

Verificate anche che la virtualizzazione sia abilitata nel BIOS/UEFI del server o del sistema host, altrimenti Hyper-V non potrà essere eseguito né installato correttamente.

Un aspetto spesso sottovalutato riguarda la quantità di memoria RAM disponibile sull’host fisico. Poiché la virtualizzazione annidata richiede di eseguire più livelli di sistemi operativi e più istanze di Hyper-V contemporaneamente, il consumo di memoria può crescere rapidamente. Ogni macchina virtuale annidata eredita l’overhead del sistema guest e di Hyper-V stesso, oltre alla memoria assegnata alle VM interne. Per ottenere prestazioni accettabili, vi consiglio di utilizzare host fisici con almeno 16 GB di RAM per ambienti di test di base e 32 GB o più per laboratori complessi o con più macchine annidate.

Versioni di Windows supportate

La funzionalità di virtualizzazione annidata è stata introdotta con Windows Server 2016 (e con Windows 10 Anniversary Update) e da allora è stata costantemente migliorata nelle versioni successive.

  • Windows Server 2016: introduce la possibilità di eseguire Hyper-V all’interno di una VM (inizialmente solo su CPU Intel).
  • Windows Server 2019: aggiunge miglioramenti alle prestazioni e il supporto ai processori AMD, oltre a una gestione di rete più stabile.
  • Windows Server 2022: introduce il supporto a vTPM e Secure Boot annidato, ampliando le possibilità di test in ambienti sicuri.
  • Windows Server 2025: porta ulteriori ottimizzazioni di stabilità e prestazioni, oltre a un migliore supporto delle VM di seconda generazione (Gen 2).
  • Anche le macchine virtuali di Azure di seconda generazione (serie Dv3, Ev3, e successive) supportano completamente la Nested Virtualization, grazie all’opzione ExposeVirtualizationExtensions.

Limitazioni note

Prima di configurare un ambiente annidato, è importante conoscere alcune limitazioni tecniche:

  • La funzionalità non è supportata sulle VM di Generation 1, ma solo sulle Generation 2.
  • La memoria dinamica (Dynamic Memory)
    non può essere utilizzata nella VM che ospita Hyper-V.
  • Non è possibile accedere direttamente a dispositivi fisici come GPU, USB o schede PCI tramite pass-through.
  • È previsto un calo di prestazioni compreso tra 10% e 20% rispetto a un host Hyper-V fisico diretto.

Scenari possibili

Vediamo i due scenari principali in cui potete trarre il massimo vantaggio da questa tecnologia: on-premises e in cloud (Azure).

  1. Nested Virtualization on-premises

In questo scenario, l’ambiente annidato viene configurato su un host fisico locale che esegue Windows Server 2016 o versioni successive, con il ruolo Hyper-V installato e attivo. In alternativa potete anche utilizzare Hyper-V in Windows 10/11 (come nel mio caso).

All’interno dell’host potrete creare una macchina virtuale principale (ad esempio “HOST-VM“) sulla quale abiliterete nuovamente il ruolo di Hyper-V.

Questa VM fungerà da mini-host virtuale, in grado di eseguire altre macchine virtuali di test (“VM annidate“).

  1. Nested Virtualization in Azure

Lo scenario in Microsoft Azure rappresenta un’evoluzione naturale di questa tecnologia, consentendovi di eseguire Hyper-V all’interno di una macchina virtuale cloud.

Questo approccio è particolarmente utile per chi deve allestire ambienti di test remoti o laboratori temporanei, eliminando completamente la necessità di hardware fisico locale.

Potete creare una VM di Azure compatibile (ad esempio delle serie Dv3, Ev3, Fsv2, o Bv2) e abilitare la funzionalità di nested virtualization grazie al parametro ExposeVirtualizationExtensions che è abilitato di default per questo tipo di famiglie di Azure VM.

Una volta installato Hyper-V all’interno della VM, avrete a disposizione un ambiente di virtualizzazione completo accessibile via RDP, nel quale potrete creare, gestire e testare altre VM.

Questo scenario è perfetto per ambienti di formazione e training remoti, dove ogni utente può disporre del proprio laboratorio Hyper-V isolato nel cloud. Grazie all’infrastruttura di Azure, potete scalare facilmente risorse CPU, RAM e storage, creando veri e propri ambienti enterprise di test in pochi minuti e con costi controllati.

Configurazione passo-passo on-premises

In questo scenario creeremo una macchina virtuale annidata all’interno di un host Hyper-V fisico (come ad esempio il vostro portatile).

  1. Creare la macchina virtuale che ospiterà Hyper-V

Sul vostro host Hyper-V fisico, create una nuova macchina virtuale che fungerà da “host virtuale” per le VM annidate.

Eseguite il seguente comando PowerShell:

In questo esempio viene creata una macchina virtuale di seconda generazione (Generation 2) con 12 GB di RAM e 4 vCPU, connessa a un vSwitch già configurato sull’host.

Suggerimento: disabilitate la memoria dinamica sulla VM che ospiterà Hyper-V, poiché la funzionalità Dynamic Memory non è supportata nella virtualizzazione annidata.

  1. Abilitare la virtualizzazione annidata

Una volta creata la VM abilitate l’esposizione delle estensioni di virtualizzazione alla CPU virtuale. Questo passaggio è essenziale per permettere al sistema operativo guest di installare e utilizzare Hyper-V.

Questo comando consente al sistema operativo guest di accedere direttamente alle estensioni hardware di virtualizzazione (Intel VT-x / AMD-V). Senza di esso, l’installazione di Hyper-V all’interno della VM fallirà e il servizio di virtualizzazione non potrà avviarsi.

  1. Configurare la rete per le VM annidate

Per consentire alle macchine virtuali create all’interno della “HOST-VM” di comunicare con la rete esterna, è necessario abilitare il MAC Address Spoofing sull’adattatore di rete della VM.

In alternativa, se preferite un ambiente di laboratorio isolato, potete creare uno switch interno o NAT, a seconda delle vostre esigenze di connettività.

  1. Installare il ruolo Hyper-V nel sistema guest

Dopo aver installato il sistema operativo (ad esempio Windows Server 2016 o successivo) all’interno della “HOST-VM”, procedete con l’installazione del ruolo Hyper-V. Eseguite:

Al termine dell’installazione, il sistema guest verrà riavviato e il ruolo Hyper-V sarà attivo. A questo punto, potrete utilizzare la console Hyper-V Manager o PowerShell per creare e gestire altre macchine virtuali annidate.

NOTA: Ho notato che in Windows Server 2025 al monento di installare il ruooo Hyper-V mi veniva restituito l’errore “HyperV cannot be installed because virtualization support is not enabled in the BIOS”. Ho risolto eseguendo il comando PowerShell bcdedit /set hypervisorlaunchtype auto. Ho riavviato la VM e il ruolo si è installato correttamente.

  1. Creare una macchina virtuale annidata

Dalla “HOST-VM”, ora configurata come un vero e proprio host Hyper-V virtuale, potete creare la vostra prima macchina virtuale annidata:

Da questo momento, la VM “Nested-VM01” funzionerà come una normale macchina virtuale, completamente gestita dal vostro Hyper-V annidato.

Figura 1: Nested virtualization in una macchina locale

Configurazione passo-passo Azure VM

La Nested Virtualization in Microsoft Azure consente di creare un ambiente di laboratorio o test completamente virtualizzato nel cloud, senza la necessità di disporre di server fisici in sede. Tanta roba!

Questa configurazione, come ho già scritto prima, è particolarmente utile per laboratori remoti, ambienti di formazione o test di infrastrutture Hyper-V e cluster in scenari ibridi.

  1. Creare una macchina virtuale compatibile su Azure

Non tutte le macchine virtuali di Azure supportano la virtualizzazione annidata. Per poter abilitare Hyper-V all’interno di una VM Azure, dovete scegliere una serie di macchine virtuali basate su processori Intel con supporto VT-x, come le serie Dv3, Ev3, Fsv2 o Bv2 (di seconda generazione – Generation 2).

Suggerimento: scegliete sempre un’immagine Datacenter – Generation 2 per garantire il supporto alle estensioni di virtualizzazione necessarie a Hyper-V.

  1. Abilitare la virtualizzazione all’interno della VM di Azure

Una volta creata la macchina virtuale, connettetevi tramite Remote Desktop (RDP) e procedete all’installazione del ruolo Hyper-V. Eseguite il comando:

  1. Creare uno switch di rete interno o NAT

Poiché le VM annidate non possono accedere direttamente alle schede di rete fisiche dell’host Azure, è necessario creare un vSwitch interno o un vSwitch NAT per consentire la connettività alle macchine virtuali annidate.

Esempio di configurazione NAT:

Con questa configurazione, tutte le VM annidate comunicheranno attraverso il NAT creato, utilizzando l’indirizzo IP dell’host “Azure-HyperV” come gateway per uscire verso Internet.

  1. Creare una macchina virtuale annidata all’interno della VM di Azure

Dopo aver configurato la rete, potete creare una nuova VM all’interno del vostro ambiente Hyper-V annidato su Azure.

A questo punto, la VM “AzureNested01” è una macchina virtuale annidata che gira interamente nel cloud, e può essere gestita come qualsiasi altra VM Hyper-V locale.

  1. Opzioni avanzate: vTPM e Secure Boot annidato

A partire da Windows Server 2022, potete utilizzare funzionalità avanzate come il Trusted Platform Module virtuale (vTPM) e il Secure Boot annidato anche all’interno di una VM in Azure.

Questo consente di testare scenari di sicurezza avanzata o di configurare VM compatibili con BitLocker anche in ambienti annidati.

  1. Ottimizzare le prestazioni in Azure

Per migliorare la reattività dell’ambiente annidato su Azure, vi consigliamo di:

  • Utilizzare dischi Premium SSD per ridurre la latenza I/O.
  • Abilitare l’accelerazione di rete (Accelerated Networking) sull’host, se disponibile nella serie scelta.
  • Limitare il numero di VM annidate per mantenere buone prestazioni complessive.
  • Evitare di utilizzare la funzionalità Dynamic Memory nella VM principale che ospita Hyper-V.

Figura 2: Nested virtualization in una macchina virtuale Azure

Conclusioni

La virtualizzazione annidata in Hyper-V è una tecnologia estremamente utile per chi desidera creare ambienti di test o di laboratorio completi, senza dover disporre di molte risorse fisiche. Permette di eseguire Hyper-V all’interno di una macchina virtuale, offrendo la possibilità di simulare scenari complessi come Cluster, Storage Spaces Direct o Replica Hyper-V in modo isolato e sicuro.

Sia in un’infrastruttura on-premises sia in un ambiente cloud come Microsoft Azure, la nested virtualization consente di sperimentare, formare e validare configurazioni reali con la massima flessibilità. È però fondamentale configurarla correttamente, rispettando i requisiti hardware e software e tenendo conto delle limitazioni legate alle prestazioni e alla gestione della memoria.

Se utilizzata con attenzione, questa funzionalità diventa uno strumento potente per la formazione, la ricerca e la sperimentazione in ambito IT, offrendo ai sistemisti la libertà di ricreare ambienti reali in totale sicurezza e con costi ridotti.

Maggiori informazioni sono disponibili alla pagina Run Hyper-V in a Virtual Machine with Nested Virtualization | Microsoft Learn