I tend to run a pretty tight shop with my VMware infrastructure. I always make sure that everything is up to date and running the latest versions. That usually includes the VM Hardware versions. Until recently this never posed an issue. I’m currently in the progress of migrating a vSphere 5.1 environment to a vCloud Director 1.5 environment (with an ESXi 4.x back end). The maximum H/W version supported is 7 while my environment is version 8 / 9.
The OVF upload process in vCD 1.5 does a few sanity checks before starting an upload. If it finds your H/W versin isn’t supported it won’t let you proceed.
VMware have three supported ways of downgrading.
1. Revert to a previous snapshot while on H/W version 7.
2. Use VMware Converter and perform a V2V to H/W version 7.
3. Create a new VM on H/W version 7 and attach the disks from the original VM.
All very safe ways but there is a fourth, and totally unsupported, quicker way to downgrade by hacking the VMX config file.
The process is relatively simple. Inside the VMX file for the VM there are a few critical lines that tell vSphere / ESXi what hardware version the VM is. By editing this file we can make it think it’s a Version 7 VM rather than 8. In essence fooling it into think it’s an older version and basically making it just skip the new config values.
To start Power Down the VM. Then obtain shell access to the ESXi server that has visibility to the VM’s Datastore. Then use VI to edit the VMX file of the VM. If you haven’t used VI it’s pretty straight forward. I to Insert, X to Delete (you’ll figure it out).
Below is the first 19 lines of the VMX file of my VM running on hardware version 8 on a ESXi 5.1 host. The critical line to change is the virtualHW.version = “8”. By changing the 8 to a 7 that’s technically all that’s needed. I’ve taken it one step further and replaced all the 8’s with 7’s with the exception of the first line.
.encoding = "UTF-8"
config.version = "8"
virtualHW.version = "8"
pciBridge0.present = "true"
pciBridge4.present = "true"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "8"
pciBridge5.present = "true"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "8"
pciBridge6.present = "true"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "8"
pciBridge7.present = "true"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "8"
vmci0.present = "true"
nvram = "MYSERVERNAME.nvram"
virtualHW.productCompatibility = "hosted"
My updated VMX config below.
.encoding = "UTF-8"
config.version = "7"
virtualHW.version = "7"
pciBridge0.present = "true"
pciBridge4.present = "true"
pciBridge4.virtualDev = "pcieRootPort"
pciBridge4.functions = "7"
pciBridge5.present = "true"
pciBridge5.virtualDev = "pcieRootPort"
pciBridge5.functions = "7"
pciBridge6.present = "true"
pciBridge6.virtualDev = "pcieRootPort"
pciBridge6.functions = "7"
pciBridge7.present = "true"
pciBridge7.virtualDev = "pcieRootPort"
pciBridge7.functions = "7"
vmci0.present = "true"
nvram = "MYSERVERNAME.nvram"
virtualHW.productCompatibility = "hosted"
Now exit VI and save the changes. Back in vSphere select the VM and select the option “Remove from Inventory” (don’t Delete from Disk). Then open the Datastore that has the VM and select the VMX file of the VM and add back into Inventory. Basically the same way you normally add a VM into the Inventory from a datastore. If all has gone well when the VM is added back in inside vSphere it will now say VM Version: 7.
You can now happily migrate the VM between ESXi 5 and 4. In my case create an OVF of the VM and upload it into vCD 1.5. I’ve performed this quite a lot of times without issue. Probably not recommended for production but in a TEST / DEV environment less of an issue.
Appendix
Supported Vmware KB article to Downgrade
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1028019
I was importing servers to our environment and the consultant had put the hardware version too high. I saw the hardware version and suspected that downgrading the number would fix it. I read your post and it confirmed my suspicion to fix it. I know it’s not recommended but sometimes you need a “sledge hammer” to fix a “tire”.
Don’t forget to do the VMTools too