How to recover missing .vmx and .vmdk (descriptor file)?

By | December 24, 2014

This week, I've done an upgrade vSphere from 5.0 to 5.5 U2 with latest patch. After upgrading one of ESXi host and rebooting it, I realized that one VM's .vmx, .vmdk files dissapeared and VM was shown as "inacessible" in the vCenter inventory.  Fortunately after investigating datastore, we could find "VM-flat.vmdk" file. It has not been my first time to see such problem (e.g. few times I have come up against this problem after restoring VM from backup)  so I decided to describe how to solve it.

To recreate .vmx file, bios etc, the easiest way is to create a new VM with the same hardware settings as the original one (of course, if you remember it...). So just "New Virtual Machine --> Typical" and so on.

To recover a .vmdk descriptor file you should follow below steps:

  1. Identify the size of the flat file in bytes. Create a new blank virtual disk that is the same size as the original. This serves as a baseline example that is modified in later steps.vmdk_missing
    As on above screenshot, use the vmkfstools command to create a new virtual disk: vmkfstool -c size -a lsilogic -d thin name where:
  • -c size - This is the size of virtual disk
  • -a virtual_controller (BusLogic, LSILogic,Paravirtual, or IDE)
  • -d thin  - This creates the disk in thin-provisioned format (also zeroedthick , eagerzeroedthick options available)
  1. Rename the descriptor file (also referred to as a header file) of the newly-created disk to match the name of the original virtual disk.rename_vm
  2. Modify (using vi) the contents of the renamed descriptor file to reference the flat file.
  • run vi name_of_vmdk. In my case vi recreated_vmdk.vmdk . You will see similar file with name of -flat.vmdk file:vmdk_file_view
  • change the colored name to a new one. (on vi editor, please type "i" to edit file). In my case: vmdk_recreated
  • save file by typing :wq!
  1. Now you can add a disk to VM:edit_vm
  2. Remove the leftover temporary flat file of the newly-created disk, as it is not required.