VMFS Recovery

Recovers data from ESX server

How to recover missed VMDK descriptor file


Structure of VMDK files

There are two formats of VMDK files used by VMWare: an ESX type and a local type. The latter is used by VMWare Player, Fusion, and Workstation. These types are distinguished mostly by small text description that is either included into a binary file or is inside a separate text file at the same folder. VMWare uses these text settings to describe the parameters of the physical drive. Basically, they correspond to parameters that are used on HDDs and determine cylinders, heads sector size, and their count. There are also links to snapshots, software ESX\ESXi RAID linkage, and other stuff.

The difference between these two: an ESX type VMDK file always has another VMDK file with the same name but without “-flat” or “-delta” endings. It contains text data in INI-like format that describes disk parameters.

Please see a sample below:

# Disk DescriptorFile

# Extent description
RW 83886080 VMFS "VM-flat.vmdk"

# The Disk Data Base

ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "5221"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "7ed9bde6bd0e9d3c78369865fffffffe"
ddb.thinProvisioned = "1"
ddb.uuid = "60 00 C2 99 d3 f5 dc ad-9e 25 3e 89 48 2c 3f de"
ddb.virtualHWVersion = "11"

VMDK that is used on a local machine has this information included in its header.


VMDK with descriptor block highlighted

Re-creating a VMDK descriptor file

If VMDK descriptor is missed, there is a simple way to recreate it:

  • 1. You need to create a virtual disk of the same size as the one with a missing descriptor. It’s required to obtain the correct values for disk cylinders, sectors, and heads. Use standard Vsphere features and make sure you have set it as thick provisioned.

  • 2. Open descriptor VMDK in a text editor and edit string with a path to -flat.vmdk. In the sample above it is called

    # Extent description
    RW 83886080 VMFS "VM-flat.vmdk"

  • Type a name of VMDK with a lost descriptor here(value marked red). You need both files in the same directory. It is possible to enter a full path into this value to separate -FLAT.VMDK and its descriptor. However, I doubt it may have any sense, as descriptor occupies only a couple of kilobytes of disk space.

  • 3. Copy new vmdk descriptor file to the -flat.VMDK and rename it to match -flat.VMDK. Do not forget to remove “-flat” or “-delta” from the name of the descriptor.


Do not forget to use a 3-rd party SSH client as a file browser. Remember that vSphere doesn’t display vmdk with descriptors.

Return to contents