A couple of weeks ago, I released a blog post about Hyper-V VM Configuration versions to give an overview about the version history of Hyper-V virtual machines. After that I had the chance to work with John Marlin (Microsoft Senior Program Manager High Availability and Storage) on a similar list of Windows Server Cluster Functional Levels.
Why Cluster Functional Levels are important
With Windows Server 2016, Microsoft introduced a new feature called Cluster OS Rolling Upgrade or Cluster Rolling Upgrade. This feature allows you to upgrade the operating system of the cluster nodes to a new version, without stopping the cluster. With mixed-OS mode, you can have for example 2012 R2 and 2016 nodes in the same cluster. Keep in mind that this should only be temporary, while you are upgrading the cluster. You can basically upgrade node by node, and after all nodes are upgraded, you then upgrade the Cluster functional Level to the latest version.
List of Windows Server Cluster Functional Levels
Since the feature Cluster OS Rolling Upgrade was first introduced with Windows Server 2016, you never really knew about Cluster Functional Levels before. However, it already existed since Windows Server NT4.
|Windows Server Version||Cluster Functional Level|
|Windows Server 2019||11|
|Windows Server RS4||10.3|
|Windows Server RS3||10.2|
|Windows Server 2016||9|
|Windows Server 2012 R2||8|
|Windows Server 2012||7|
|Windows Server 2008 R2||6|
|Windows Server 2008||5|
|Windows Server 2003 R2||4|
|Windows Server 2003||3|
|Windows Server 2000||2|
|Windows Server NT4||1|
Tips and PowerShell
If you want to know more about Cluster OS Rolling Upgrade, you can check out the Microsoft Docs. Together with John, I created a quick list of some tips for you, and some of the important PowerShell cmdlets.
To check which Cluster Functional Levels your cluster is running on, you can use the following PowerShell cmdlet:
Get-Cluster | Select ClusterFunctionalLevel
If you have upgraded all nodes in the cluster, you can use the Update-ClusterFunctionalLevel to update the Cluster Functional Level. Also make sure that you upgrade the workloads running in that cluster, for example upgrade the Hyper-V Configuration Version or in a Storage Spaces Direct Cluster, the Storage Pool version (Update-StoragePool).
In Windows Server 2019 the Clustering team introduced a new PowerShell cmdlet to check how many nodes of the cluster are running on which level. Get-ClusterNodeSupportedVersion helps you to identify the Cluster Functional Level and the Cluster Upgrade Version.
This means that the functional level is 11 (Windows 2019). The Upgrade version column is what you can upgrade to/with, meaning 11.1 or Windows 2019 only.
This means your Cluster Functional Level is 10. Meaning you can add basically anything 10.x (2016, RS3, RS4) and 11 (2019) to it.
If you are running System Center Virtual Machine Manager, the Cluster OS rolling upgrade, can be fully automated as well. Check out the Microsoft Docs for Perform a rolling upgrade of a Hyper-V host cluster to Windows Server 2016 in VMM.
To find out more about information Cluster operating system rolling upgrade, like how-to, requirements and limitations, check out the Microsoft Windows Server Docs page.