I've 13 Hyper-V nodes in a Microsoft Failover Cluster. About 50% of our guests are Linux and work best with static MAC addresses. Our Windows guests work either way, but to keep things simpler we've been setting them to static mac addresses as well.

Our procedure has been: provision VM, before installing OS, turn VM on, turn it off, change the network adapter to Static, keeping the autogenerated mac address.

The issue is:

  1. Create guest on Node1. It gets a MAC inside Node1's MAC range.
  2. Move guest to Node2. No problem.
  3. Create new guest on Node1. It gets a MAC inside Node1's range. I thought for sure that Failover Cluster was would be smart enough to check that there was no conflict with ANY guest but it just picks a random one from THAT NODE's range that isn't used by any guests on THAT NODE, not elsewhere in the cluster.
  4. I was depressed to find that this has actually created MAC conflicts where it stumbles on the same address it's already assigned to a guest that has migrated to a different node.

The short term solution's easy, we just run a PowerShell command to xref the MAC addresses over the entire cluster, but what's the long-term solution here? Should we check each autogenerated MAC address across all of the VM's in our pool? If we give each Hyper-V node the same pool, will it check across the entire cluster, or will we have even more collisions? Would SCVMM help us here, or make things worse?


The solution is to use SCVMM with hyper-V Clusters. MS didn't intend to make mac address generation consistent across a cluster without it.


| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.