Contents of this Article
Introduction
In the previous version of Hyper-V, whenever you upgraded your host to a new release, the moment Hyper-V sees your virtual machines, the VM configuration version will be upgraded automatically behind the scenes.
This has been changed in Windows Server 2016, Hyper-V will NOT automatically upgrade your virtual machines. This gives you the flexibility to move virtual machines back to earlier Hyper-V versions if we deem it necessary. Once you upgrade the VM configuration to the latest version, you cannot move it back to a downgrade level host. This what is called the “Point of no Return”.
The upgrade of a virtual machine version in Windows Server 2016 is a manual operation that is separate from upgrading the host.
As a reference, version 5.0 is the configuration version of Windows Server 2012 R2. Version 2.1a was for Windows Server 2008 R2 SP1. The configuration version was always there for internal usage based on the functionality and not based on the release, and it was not displayed to the users. In Windows Server 2016 Hyper-V the version is 8.0.
The process to upgrade a virtual machine configuration version requires to shutdown the VM, and do a manual upgrade. This is a one-way process so you can either do this through PowerShell or through the Hyper-V Manager console.
As you can see in the UI we have got this Upgrade Configuration Version.
Upgrade The VM Configuration in a Hyper-V Cluster
I recently deployed a 4-Nodes Storage Spaces Direct (S2D) cluster and I moved all my virtual machines from Windows Server 2012 R2 to 2016.
I don’t have anymore Windows Server 2012 R2 host in my environment, and I decided to upgrade all the virtual machines configuration in order to get the benefit of the latest and greatest features.
Check out my blog post about What’s new in Windows Server 2016 Hyper-V to get an overview about all the new features!
I moved dozens of VMs to this new shiny S2D cluster.
In order to get all virtual machines in the cluster, you can run the following command:
Get-ClusterGroup –Cluster <Cluster NAME> | ? {$_.GroupType –eq 'VirtualMachine' } | Get-VM
In order to upgrade the VM configuration version for all virtual machines, you can do this with the following commands:
$Cluster = “Cluster Name” Get-ClusterGroup -Cluster $Cluster | ? {$_.GroupType –eq 'VirtualMachine' } | Get-VM | Stop-VM –Force Get-ClusterGroup –Cluster $Cluster | ? {$_.GroupType –eq 'VirtualMachine' } | % {Update-VMVersion -Name $_.Name -ComputerName $_.OwnerNode -Confirm:$false } Get-ClusterGroup -Cluster $Cluster | ? {$_.GroupType –eq 'VirtualMachine' } | Get-VM | Start-VM
Note: Please make sure to schedule a maintenance window before doing so.
Let’s check now if all VMs are upgraded successfully to version 8.0!
Enjoy!
Cheers,
[email protected]