Menu Home

Nested Virtualization in Azure con Hyper-V

L’idea di utilizzare la virtualizzazione annidata in un contesto come quello di Azure può sembrare useless ma, in scenari di laboratorio, può risultare una soluzione interessante.
Questo approccio ha diverse limitazioni e solo alcune famiglie di VM offrono supporto per la nested, il consiglio è quello di verificare sempre in documentazione Microsoft quale istanza utilizzare.
Fatte queste premesse iniziamo con la preparazione dell’host, i prossimi passaggi riguardano la creazione della macchina virtuale con Windows Server 2022 tramite Azure Portal:

Per quanto riguarda i dischi, ho scelto una istanza Windows [smalldisk] il che vuol dire che la dimensione del disco del sistema operativo sarà di 30 GB. Relativamente a quello in cui andremo a posizionare i file delle nostre VM, in questo esempio sarà da 1 TB, ma la scelta sul dimensionamento andrà fatta in base alle esigenze del caso.

Sto dando per scontato che tutti i passaggi sopra siano chiari, ma se avete dubbi sulle procedure utilizzate nelle prossime puntate di HomeLab tratterò anche la creazione di un Tenant e di tutte le risorse necessarie per partire con una infrastruttura su Microsoft Azure.

Una volta collegati al nostro host, potremo passare alla configurazione del ruolo Hyper-V:

Se non ci fossero dei problemi non avrebbe senso il nostro lavoro 🙂

L’errore è conosciuto ed è facilmente risolvibile tramite questo comando PowerShell:

bcdedit /set hypervisorlaunchtype auto
Restart-Computer -Force

Dopo il reboot del nodo la procedura andrà a buon fine e potremo continuare con la configurazione:

Andiamo a preprare i dischi come segue e a impostare i Default Store per il posizionamento dei file delle macchine virtuali:

Adesso sarà necessario preprare il Virtual Switch dedicato alle VM, impostando anche l’indirizzo IP dell’interfaccia di rete (in questo esempio 192.168.200.1/24);

PS C:\Windows\system32> Get-NetAdapter

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Ethernet 3                Microsoft Hyper-V Network Adapter #2         14 Up           7C-1E-52-32-3C-EF        50 Gbps
Ethernet 5                Mellanox ConnectX-4 Lx Virtual Eth...#3      11 Up           7C-1E-52-32-3C-EF        50 Gbps
vEthernet (VM-Internal)   Hyper-V Virtual Ethernet Adapter #2           2 Up           00-15-5D-01-06-09        10 Gbps
PS C:\Windows\system32> New-NetIPAddress -IPAddress 192.168.200.1 -PrefixLength 24 -InterfaceIndex 2

IPAddress         : 192.168.200.1
InterfaceIndex    : 2
InterfaceAlias    : vEthernet (VM-Internal)
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 24
PrefixOrigin      : Manual
SuffixOrigin      : Manual
AddressState      : Tentative
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore

IPAddress         : 192.168.200.1
InterfaceIndex    : 2
InterfaceAlias    : vEthernet (VM-Internal)
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 24
PrefixOrigin      : Manual
SuffixOrigin      : Manual
AddressState      : Invalid
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : PersistentStore

Per il laboratorio ho scelto di utilizzare una Ubuntu Server 22.04. Dopo aver creato la macchina virtuale impostando un indirizzo IP (in questo esempio 192.168.200.2/24) potremo raggiungerla direttamente dall’host Hyper-V:

Come abbiamo visto, tutto sommato, gli step sono piuttosto semplici. Tenete comunque conto che, in questo modo, avremo dei sistemi che potranno dialogare solo internamente all’host Hyper-V. Potremmo, però, configurare dei servizi di routing e rendere anche questa parte di infrastruttura raggiungibile dall’esterno o da altre macchine in Azure.

Categories: All