When you copy or move the data store location of an existing VM running on VMware vSphere you will be presented with a message box (as seen below) in the vCenter Client asking if your VM has either been ‘moved’ or ‘copied’. As you can see the message box also mentions “msg.uuid.altered: This virtual machine may have been moved or copied”, but what does this actually mean?
Figure 1. Has the VM been moved or copied?
What is a VM’s UUID?
Firstly, it is important to have an understanding of what a ‘UUID’ (universally unique identifier) is. As the name suggests the UUID is a ‘identifier’ (128 bit integer) which is ‘unique’ to that VM, and effectively gives it a digital fingerprint to differentiate it from other VMs.
The UUID is automatically generated when a VM is first powered on or moved, with the UUID value being based on the physical host’s identifier and also the path to the VM’s configuration (vmx) file. Within this configuration file the UUID value is stored in two places:
- uuid.bios
- uuid.location (hash based on the current path of the VM)
For example: uuid.bios = “56 4d 5e 58 66 f5 2d 04-03 31 0a bd 6f a7 19 88”
The UUID is also stored in the SMBIOS system information (ie: the BIOS of the VM) descriptor. When the VM is started or moved the location UUID (ie: uuid.location) which is hashed from the VM’s data store path is compared to the UUID location hash which already exists in the configuration file. At this point if the new and existing location UUID value differs then ESX knows that the VM is now running from a different data store location and will present the ‘Virtual Machine Message’ in figure 1 above.
But why do we care if the VM has the same or a new UUID?
We saw in the message above provided by ESX informing that the UUID has in someway been altered but why does this really matter? The answer to this you’ll be pleased to know is quite simple. A VM’s unique UUID is used to generate other unique values used by the VM such as the unique MAC (media access control) address of the network card(s). For example if you had multiple copies of the same VM/Guest OS running in your vSphere environment all with the same (ie: non-unique) network MAC address you will likely receive duplicate MAC address error messages within the guest OS which can cause a number of issues.
Another potential point to be mindful of is that some software licensing can be linked to a MAC address of a guest OS’s network card. This includes software such as Microsoft Windows where changing the MAC address and some other key hardware components (eg: moving from an Intel based ESX host to a AMD based ESX host) can mean you have to re-activate the software again. The changing of a VM’s MAC address will occur when you select “I copied it”, the next couple of sections will go into more detail on what exactly is altered.
Should I Select “I Moved It” or “I Copied It”?
So what is the difference between selecting “I_moved it” or “I_copied it”? The easiest way to demonstrate the differences is by viewing the configuration file (vmx) for the VM before and after the two different options have been selected.
“I Moved It”
By indicating that you had moved the VM (instead of copying it) the only UUID change that is made to the configuration file is to the ‘uuid.location’ setting, which as you’d expect indicates a change of location for the VM. The ‘uuid.bios’ and the existing generated network MAC address remains that same.
You will also notice that the CPUID settings have also changed which is also the case for when you indicate that the VM was copied.
The “I Moved It” option should be used when ‘moving’ the location of where a VM resides and a copy of the VM has not been made.
“I Copied It”
When you select that the VM has been copied then there a few more changes that are made to the VM’s configuration file when compared to just moving it. These changes are to the ‘uuid.bios’, ‘uuid.location’ and as a result of these changes a newly generated network MAC address (ethernet.generatedaddress).
The “I Copied It” option should be used when you’ve made, and intend to run, more than one copy of the VM in your vSphere environment.
To summarise, here is a table which outlines the changes that are made when either the “I Moved It” or “I Copied It” are selected
“I Moved It” (change?) | “I Copied It” (change?) | |
uuid.bios | ||
uuid.location | ||
ethernet.generatedaddress | ||
guestCPUID.x | ||
hostCPUID.x | ||
userCPUID.x |
As you can see it is worth spending the time to understand the changes which will be made when presented with the “I moved it” or “I copied it” options as it can impact (eg: software re-activation) the guest OS of the VMware vSphere VM.
I hope this helps clarify this small aspect of VMware vSphere administration which can sometimes be an area of confusion.