tl;dr – As of August 9, 2022, you need to configure Simultaneous Live Migration settings from Get-Cluster and not local to each Hyper-V host.
Read more about it here:
Deep Dive
If you are running Server 2022 or HCI 21H2 and you recently updated to a KB released after August 9, 2022, you may notice that your Hyper-V hosts are no longer “keeping” the Simultaneous Live Migration settings after node reboot:
This oddity was first reported in a Reddit Thread earlier this month (September 2022) with a few folks confirming they were able to repro with no explanation. After opening up a support ticket with Microsoft, I have confirmed the cause is not a bug, but in fact an “enhancement” managed by Failover Clustering:
There is a new cluster-wide property that was introduced to manage this setting. By setting at the cluster level, and the default of 1, we ensure consistency across the cluster and provide the default setting that offers the greatest reliability based on internal testing.
You can centrally manage node values by running (Get-Cluster).MaximumParallelMigrations = X , where X is the number of Live Migrations you want to allow at once.
I confirmed this on my HCI 21H2 cluster:
And by changing this value, it instantly updates it across all the nodes in my cluster:
You’re probably wondering why I didn’t just run (Get-Cluster -Name XXXX).MaximumParallelMigrations = 6
remotely from a jumpbox and instead opted to use Invoke-Command
. This is because my jumpbox is running an older build of Server 2022 and as a result, the Failover Cluster Powershell module has no clue about that new property. This means that you will run into some problems if you are attempting to manage an 2022 or 21H2 cluster from an older OS or CU.
Additional Thoughts
Apparently this has not been “backported” to earlier OS’s like 2019 or 2016. Additionally, as of this writing, there is no official documentation or blog announcing this change. (Update Jan 2023 – looks like theres finally a blog post! Click here to read.)
There is also no word if the SCVMM Team was informed about this change. That means if you use SCVMM to configure Live Migration settings, it most likely is still using the “old” way and proxying the call down to Hyper-V cmdlets instead of Failover Clustering. That means if you reboot your cluster nodes, the values will default back to 1 if you don’t change with FCM.
Oh, and if you’re curious about Windows Admin Center, as of Cluster Manager Extension build 2.120.0, the property appears to be exposed, but I have not had success actually getting WAC to push the value down (that’s a story for another blog):
To be frank, this is a good change that was executed poorly. If Microsoft wants to implement something that has multiple regressions along all management experiences (PowerShell, WAC, SCVMM), they need to communicate it better.