When rearranging storage locations, I had to move a few VMs to different data stores.
So I removed them from the inventory, moved them to another datastore, then re-added them as a set.
Besides getting new VM IDs (which I expected), ESXi 6.5 U1 also managed to change the below fields (which I did not expect) without a warning like “did you move or copy” which you get when moving VMs around on VMware Fusion (Mac OS X) and VMware Workstation/Player (Windows).
The bold values were changed from:
uuid.location = "56 4d 6f 23 aa 92 bf 2b-16 d9 9a 4b 95 4d e7 8e"
uuid.bios = "56 4d 02 3c ea 9e dc 12-18 4f a4 64 c1 f7 f0 fe"
ethernet0.generatedAddress = "00:0c:29:f7:f0:fe"
To:
uuid.location = "56 4d 4c e8 a3 81 c6 db-d6 f2 7f 32 0d fe 2e 29"
uuid.bios = "56 4d 4c e8 a3 81 c6 db-d6 f2 7f 32 0d fe 2e 29"
ethernet0.generatedAddress = "00:0c:29:fe:2e:29"
The bold-italic values correspond to the changed MAC address.
This caused the VMs (which were suspended before the move) to loose their MAC bound static DHCP addresses after the lease time expired: since the new MAC addresses were not statically bound, they got fresh ones causing all sorts of connection problems.
Trying to assign back the original MAC address in the Web UI by hand gets you this error when the virtual machine starts (not when you save the MAC address):
Invalid MAC address specified.
xx:xx:xx:xx:xx:xx is not a valid static Ethernet address. It conflicts with VMware reserved MACs for other usage.
What I did was
- suspend the machines.
- bring ESXi into maintenance mode,
- changed the values back,
- moved ESXI out of maintenance mode,
- then unsuspended the VMs one by one
now I did get the “I moved it” versus “I copied it” question
For this particular machine, the uuid.location
was still changed, but now uuid.bios
and ethernet0.generatedAddress
were now left in tact:
uuid.location = "56 4d 4c e8 a3 81 c6 db-d6 f2 7f 32 0d fe 2e 29"
uuid.bios = "56 4d 02 3c ea 9e dc 12-18 4f a4 64 c1 f7 f0 fe"
ethernet0.generatedAddress = "00:0c:29:f7:f0:fe"
On another VM that I moved between data stores, after confirming the “I Moved It”, the migration went OK, so I am not sure about the cause. In that case the before/after situation were these (only the bold values were changed):
uuid.location = "56 4d d5 e2 79 b4 a6 76-aa 13 3d 18 e5 4d c0 00"
uuid.bios = "56 4d 38 d7 9c a0 98 24-3c e4 79 00 54 5d 35 ef"
vc.uuid = "52 91 00 37 03 ed 87 34-ec 06 ba 28 f6 85 b4 29"
uuid.location = "56 4d 88 e6 a0 17 bb 01-cb 8c e3 ce fa e8 05 61"
uuid.bios = "56 4d 38 d7 9c a0 98 24-3c e4 79 00 54 5d 35 ef"
vc.uuid = "52 91 00 37 03 ed 87 34-ec 06 ba 28 f6 85 b4 29"
Conclusion
The uuid.bios
directly affects the generatedAddress
of the network adapters. Initially it is related to the uuid.location
, but does not need to be.
When migrating, keep the old data for comparison: compare the .vmx
files after starting the migrated machine, and correct the uuid.bios
and various ethernet#.generatedAddress
values when needed.
Besides the well known 00:50:56:XX:YY:ZZ
MAC address range there is also 00:0c:29:XX:YY:ZZ
.
Background reading
- [WayBack] Setting the UUID for a Virtual Machine that Is Being Moved
- [WayBack] Can I change or generate the uuid.location and uuid.bios by vCLI command? Or I have to use the VMware API function?… |VMware Communities
- [WayBack fails] KB Article Detail: Changing the MAC address of a hosted virtual machine (507)
- [WayBack] MAC error after upgrading from vSphere 5.0 to 5.1 |VMware Communities
- [WayBack fails] Unable to manually change MAC address for virtual machine (2007042)
- [WayBack] Attempt to Power On a Virtual Machine Fails Due to a MAC Address Conflict
- [WayBack fails] Powering on a virtual machine after migrating to VMware vCenter Server 5.x fails with error: Invalid MAC address specified (2035707)
- [WayBack] Move VMware ESXi VM to new datastore – preserve thin-provisioning – Server Fault
–jeroen