Recreating a missing VMware virtual machine disk descriptor file (.vmdk)
search cancel

Recreating a missing VMware virtual machine disk descriptor file (.vmdk)

book

Article ID: 321422

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

This article provides steps to recreate a lost virtual disk descriptor file (.vmdk). You may need to recreate missing header/descriptor files if:
  • The virtual machine disk file listed in the Datastore Browser is your virtual machine's flat file, and does not have an icon.
  • When powering on a virtual machine, you see a File not found error.
  • The flat file exists when viewing the virtual machine's directory.
  • The disk descriptor file for the virtual machine's disk does not exist or is corrupted.


Environment

VMware vSphere ESXi 6.x
VMware vSphere ESXi 7.x
VMware vSphere ESXi 8.x
VMware vSphere ESXi 6.5
VMware vSphere ESXi 6.7

Resolution

How to Recreate a lost/missing virtual disk descriptor file (.vmdk):

Video tutorial to recreate a missing virtual disk descriptor file (.vmdk):

Note: From the video, the vmkfstools -a option is used. From ESXi 6.5 version and later, this option is deprecated and it will be ignored with following message: "--adaptertype is deprecated and hence will be ignored".

Important Note:

  • VMware recommends a regular Full Image Backup of the critical virtual machines for an easy restore in such situations. 
  • VMware also recommends to attempt to restore the missing descriptor file from the backup. This method cannot be used to recreate an encrypted disk descriptor file.
  • If the impacted virtual machine does not have a full backup, ensure you copy or backup the Flat file to a separate location.
  • This article availability is only focused on recreating the descriptor file for the virtual machine, Do not edit or change the content of the Flat File as this may end up in data loss.
Note: This procedure will not work on virtual disks configured with a Para-virtualized SCSI controller in the virtual machine as the virtual machine may not boot.

However, if the Para-virtualized SCSI controller is used, the new descriptor file can also be updated with ddb.adapterType = pvscsi replacing ddb.adapterType = lsilogic in the file.

Steps to create a virtual machine disk descriptor file:

  1. Connect to the ESXi host as root through SSH or DCUI.
  2. Navigate to the directory that contains the virtual machine disk with the missing descriptor file using the command:

    cd /vmfs/volumes/DATASTORE_NAME/VM_NAME
     
  3. Identify the type of SCSI controller the virtual disk is using by examining the virtual machine configuration file (.vmx ). The controller is identified by the line scsi#.virtualDev , where # is the controller number.

    This example uses lsilogic :

    scsi0.present = "true"
    scsi0.sharedBus = "none"
    scsi1.present = "true"
    scsi1.sharedBus = "virtual"
    scsi1.virtualDev = "lsilogic"

     
  4. Identify and record the exact size of the -flat file using this command:

    ls -l vmdisk0-flat.vmdk

    -rw------- 1 root root 4294967296 Oct 11 12:30 vmdisk0-flat.vmdk

     
  5. Use the vmkfstools command to create a new temp virtual disk:

    # vmkfstools -c 4294967296 -d thin temp.vmdk

    The command uses these flags:
    • -c size
      This is the size of the virtual disk.
    • -d thin
      This creates the disk in thin-provisioned format.
The temp.vmdk and temp-flat.vmdk files are created as a result.

Note: To save disk space, we create the disk in thin-provisioned format using the type thin. The only consequence, however, is that the descriptor file contains an extra line that must be manually removed in a later step if the original disk is not Thin provisioned.
  1. Delete temp-flat.vmdk, as it is not needed. Run this command:

    rm -i temp-flat.vmdk
     
  2. Rename temp.vmdk to the name that is required to match the orphaned -flat file (or vmdisk0.vmdk , in this example):

    mv -i temp.vmdk vmdisk0.vmdk
     
  3. Edit the descriptor file using "vi" text editor ( vi vmdisk0.vmdk, in this example)
     
    1. Under the Extent Description section,
      • Use command "Insert" to allow modifications on the descriptor file.
      • Locate and change the name of the -flat file to match the orphaned -flat. Once completed - hit "Esc" to exit this mode.
    2. Find and remove the line ddb.thinProvisioned = "1" if the original .vmdk was not a thin disk. If it was, retain this line. Use command ":wq!" to save and exit "vi" editor.

      Example

      # Disk DescriptorFile
      version=1
      CID=fb183c20
      parentCID=ffffffff
      createType="vmfs"

      # Extent description
      RW 8388608 VMFS "vmdisk0-flat.vmdk"

      # The Disk Data Base
      #DDB

      ddb.virtualHWVersion = "4"
      ddb.geometry.cylinders = "522"
      ddb.geometry.heads = "255"
      ddb.geometry.sectors = "63"
      ddb.adapterType = "lsilogic"
      ddb.thinProvisioned = "1"


      The virtual machine is now ready to power on. Verify your changes and ensure the Disk chain is consistent before starting the virtual machine.
       
  4. To check the disk chain for consistency, run this command against the disk descriptor file:

    vmkfstools -e filename.vmdk

    For a complete chain, you see output similar to:
    Disk chain is consistent.

    For a broken chain, you see a summary of the snapshot chain and then an output similar to:
    Disk chain is not consistent : The parent virtual disk has been modified since the child was created. The content ID of the parent virtual disk does not match the corresponding parent content ID in the child (18).

    Additional Information

    Additional Information

    Each disk drive for a virtual machine consists of a pair of .vmdk files. One is a text file containing descriptive data about the virtual hard disk, and the second is the actual content of that disk. For example, a virtual machine named examplevm has one 10GB disk attached to it. This disk is comprised of a examplevm.vmdk descriptor file of under 1 KB, and a 10 GB examplevm-flat.vmdk flat file which contains virtual machine content.


    See Also