Generation 2 VM support on Azure – and why should I care?
A couple of days ago Microsoft announced the public preview of Generation 2 virtual machines on Azure. Generation 2 virtual machines support a bunch of new technologies like increased memory, Intel Software Guard Extensions (SGX), and virtual persistent memory (vPMEM), which are not supported on generation 1 VMs. But more on that later.
What are Hyper-V Virtual Machine Generations
Windows Server 2012 R2 Hyper-V introduced the concept of virtual machine generations. Not to be confused with Hyper-V configuration versions. The generation of a virtual machine defines the virtual hardware of a virtual machine and adds some additional and modern functionality. In Hyper-V, there are two virtual machine generations, generation 1 and generation 2. Generation 2 virtual machines support Unified Extensible Firmware Interface (UEFI) firmware instead of BIOS-based firmware. The Hyper-V team also removed a lot of the legacy devices and replaced them with a simplified virtual machine model.
On Windows Server Hyper-V Generation 2 VMs support features and improvements like
- PXE boot by using a standard network adapter
- Boot from a SCSI virtual hard disk
- Boot from a SCSI virtual DVD
- Secure Boot (enabled by default)
- UEFI firmware support
- OS disk > 2 TB
- improved boot and installation times
However, an important note here, not all of these features are currently available on Azure Generation 2 virtual machines, and not all operating systems are supported in Generation 2 VMs. For example, in Windows7, Windows Server 2008 and Windows Server 2008 R2 and 32-bit Windows systems are not supported. You can find more information about Hyper-V Generation 2 VMs here.
Azure Generation 2 Virtual Machines Overview
Azure Generation 2 Virtual Machines are currently in public preview. To be honest, Generation 2 VMs in Azure aren’t that new, with the public preview of Azure Confidential Computing, we already used Generation 2 VMs. However, now we can start using it for other workloads as well. This means that you can now upload and use your local VHD (not VHDX) files based on Hyper-V Generation 2 virtual machines. Before you had to use Azure Site Recovery to replicate and convert your Hyper-V Generation 2 VMs to Azure Generation 1 VMs.
Azure Generation 1 vs. Generation 2 capabilities
Currently, Generation 2 VMs are in public preview, and that means next to not having a service level agreement (SLA), the features which are available can and are limited. If you look at features like ASR or Azure Backup, which are currently not supporting Generation 2 VMs.
|Capability||Generation 1||Generation 2|
|OS disk > 2 TB||❌||✔|
|Custom Disk/Image/Swap OS||✔||✔|
|Virtual machine scale set support||✔||✔|
|Shared Image Gallery||✔||✔|
|Azure Disk Encryption||✔||❌|
You can find more information about Azure Generation 2 virtual machines with an updated list of capabilities on Microsoft Docs.
Hyper-V vs. Azure Generation 2 VMs
There are also differences between Hyper-V Generation 2 VMs and Azure Generation 2 VMs. Not all of the features provided in Hyper-V are currently present in the public preview version on Azure.
|Virtualization-Based Security (VBS)||✔||❌|
Again, you can find an up-to-date list on Microsoft Docs.
You can get started using the Generation 2 VMs on the following VM Sizes on Azure Premium Storage and Ultra SSD:
In public preview, you can now also use the following Azure Marketplace images from the “windowsserver-gen2preview” offer.
- Windows Server 2019 Datacenter (2019-datacenter-gen2)
- Windows Server 2016 Datacenter (2016-datacenter-gen2)
- Windows Server 2012 R2 Datacenter (2012-r2-datacenter-gen2)
- Windows Server 2012 Datacenter (2012-datacenter-gen2)
Create a virtual machine
You can use the Azure Portal to create a new VM or the Azure CLI using the following commands:
az group create --name myGen2ResourceGroupVM --location eastus az vm create \ --resource-group myGen2ResourceGroupVM \ --name myVM \ --image MicrosoftWindowsServer:windowsserver-gen2preview:2019-datacenter-gen2:latest \ --admin-username thomas \ --admin-password myPassword12
I hope this gives you an overview of the benefits and how you can run Generation 2 VMs on Azure. If you have any questions please let me know in the comments.