Sunday, February 19, 2012

Insane SCVMM: Duplicating all BIOS identifiers on vm clone

Welcome to the second past in my 'insane scvmm' series. This one is about another insane thing that scvmm does in the context of SMBIOS UUIDs. Identity is a key foundation in any software area. Network adapters are identified by MACs. Machines are identified by an IP address within a single network. The whole web is based on URLs which are essentially identities to content on the web.

To identify computers uniquely, there is a standard called http://dmtf.org/standards/smbios. Of course not all vendors embrace and follow this but most do and all the Intel-based computer architectures and hence Windows OS based machines definitely do. The SMBIOS unique identifier is a UUID (aka GUID). Normally computer manufacturers assign this for physical machines. For virtual machines, hypervisors are responsible to assign the same.

In virtualization (v12n), 'clone vm' is a popular operation as it can be used to quickly provision an identical server including the os, apps, config etc. What we learnt to our utter surprise is cloning vms using scvmm results in the same SMBIOS UUID (and many other BIOS identifiers like serial number) assigned to the cloned vm, as that of the source vm. Totally insane. I raised this question at http://social.technet.microsoft.com/Forums/en-US/virtualmachinemanager/thread/b8cb5945-5b00-4145-b5ae-dc94fb5b68dc but received no credible response. One may wonder why do we care about unique UUID? The bad consequences are boundless - basically any (sane) software that relies on SMBIOS UUID to uniquely identify x86 based computers will be affected in strange ways.

Hyper-V by itself doesn't have a first-class clone operation. So SCVMM must be doing this somehow using available Hyper-V operations, so this is likely an issue in how scvmm and hyperv are working together. Wait a min, they never work together - isn't that the whole problem?

Insanity continues...

5 comments:

joice said...

Hi!
If you use the -GenerateNewId option in import-vm isn't this problem solved? I am talking of Windows Server 8 beta Datacenter.

CH said...

Here we are, almost two years later, and they've *still* not fixed this issue... ARGH!

GIR said...
This comment has been removed by the author.
GIR said...

Hi!

I've sysprepped and "exported" a base VM to use when deploying virtual machine on off-site hyper visors. I make a copy of the exported vm-folder and put it on the hyper visor that I ship to the site. Once there I run a script that automatically imports the VM with the -GenerateNewId option as well as -Copy to make sure that it becomes unique. But I just found out that by doing so I now have 600 virtual Machines that all share the same smBIOS UUID!
We haven't had any issues until just recently when we deployed a software performing software inventory Scans/reports and it didn't report even though the software was running.

Oh, also we're running server 2012 as the hyper visor and server 2008r2 as the VM.

Best,
Patrik

Unknown said...

Did you find a solution to your problem? I am trying to rectify this problem in our environment where we have 68 VM's with the same UUID.

I did find this but it is specific to vmWare: http://www.derekseaman.com/2010/10/making-your-vmware-vm-uuids-unique.html