Recreating a missing virtual disk (VMDK) descriptor file for delta disks
search cancel

Recreating a missing virtual disk (VMDK) descriptor file for delta disks

book

Article ID: 327862

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

This article provides steps to recreate a delta virtual disk's descriptor file, based on the vmfsSparse disk format. This disk format is often facilitated by virtual machine snapshot functionality, live virtual machine clone operations, and Storage vMotion.
THE CONTENT OF THIS ARTICLE IS PROVIDED "AS-IS," AND TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, VMWARE DISCLAIMS ALL OTHER REPRESENTATIONS AND WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS CONTENT, INCLUDING THEIR FITNESS FOR A PARTICULAR PURPOSE, THEIR MERCHANTABILITY, OR THEIR NONINFRINGEMENT. VMWARE SHALL NOT BE LIABLE FOR ANY DAMAGES ARISING OUT OF OR IN CONNECTION WITH THE USE OF THIS CONTENT, INCLUDING DIRECT, INDIRECT, CONSEQUENTIAL DAMAGES, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF VMWARE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.


Environment

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

Resolution

A disk file of this type consists of a virtual disk descriptor file and paired delta extent file. These data files are based on the vmfsSparse format, intended to store delta content or "change data" for a period of time, otherwise known as a snapshot.

Notes:


To recreate a missing virtual disk (VMDK) descriptor file for delta disks:

  1. Confirm if the virtual machine directory contains either another delta disk descriptor file, or a base disk's descriptor, for use as a basis or template. For example, you will see some or all of these files in the virtual machine directory:

    drwxr-xr-x 1 root root 1400 Aug 16 09:39 .
    drwxr-xr-t 1 root root 2520 Aug 16 09:32 ..
    -rw------- 1 root root 32768 Aug 17 19:11 examplevm-000002-delta.vmdk
    -rw------- 1 root root 32768 Aug 17 19:11 examplevm-000002.vmdk
    -rw------- 1 root root 32768 Aug 16 14:39 examplevm-000001-delta.vmdk
    -rw------- 1 root root 32768 Aug 16 14:39 examplevm-000001.vmdk
    -rw------- 1 root root 16106127360 Aug 16 09:32 examplevm-flat.vmdk
    -rw------- 1 root root 469 Aug 16 09:32 examplevm.vmdk
    -rw------- 1 root root 18396 Aug 16 14:39 examplevm-Snapshot1.vmsn
    -rw------- 1 root root 18396 Aug 17 19:11 examplevm-Snapshot2.vmsn
    -rw------- 1 root root 397 Aug 16 09:39 examplevm.vmsn
    -rwxr-xr-x 1 root root 1626 Aug 16 09:39 examplevm.vmx
    -rw------- 1 root root 259 Aug 16 09:36 examplevm.vmxf


    Notes:
    • Items highlighted in red are descriptor files which are ideally used as a template or base, if they are present.
    • If you are missing the base disk's descriptor file (or examplevm.vmdk), see Recreating a missing virtual machine disk (VMDK) descriptor file (1002511).

      If you have additional delta files with intact descriptor files, you may copy one of them for use as a template. Alternatively, copy the base disk descriptor file, or use the right-most example in the table below and customize the copied content.

      Warning: Ensure that character encoding for any files modified outside of an ESXi/ESX host console or SSH session conform to UTF-8. For more information, see the Preferred Editors section in Editing configuration files in VMware ESXi and ESX (1017022). Unsupported encoding results in failure to start the virtual machine.

    • For ESXi 5.0 and later, virtual machines have their delta files in the same directory as the disk they relate to. For more information on this change, see Changing the location of snapshot delta files for virtual machines in ESXi 5.0 (2007563)

      For example, a virtual machine with two disks each on different datastores:

      • The first disk (disk.vmdk) is located on datastore1
      • The second disk (disk_1.vmdk) is located on datastore2

      After taking a snapshot, the delta file for the first disk (disk-000001.vmdk) will be stored on datastore1, and the delta file for the second disk (disk_1-000001.vmdk) will be stored on datastore2.

  2. Assume that the descriptor file for the delta disk examplevm-000001.vmdk is missing and that there are no issues with its associated delta file examplevm-000001-delta.vmdk.

    To recreate the delta descriptor file, copy the current base disk descriptor file examplevm.vmdk with the name of the missing descriptor file examplevm-000001.vmdk:

    # cp examplevm.vmdk examplevm-000001.vmdk

    We can simply edit this new snapshot delta descriptor file to change its format from a base disk descriptor to a snapshot delta disk descriptor.

    Modify the new examplevm-000001.vmdk delta descriptor file to contain this information:

    Base disk descriptor file examplevm.vmdk Recreated delta descriptor examplevm-000001.vmdk (originally copied from examplevm.vmdk)
    # Disk DescriptorFile
    version=1
    encoding="UTF-8"
    CID=1974####
    parentCID=ffffffff
    createType="vmfs"

    # Extent description
    RW 31457280 VMFS "examplevm-flat.vmdk"

    # The Disk Data Base
    #DDB

    ddb.virtualHWVersion = "7"
    ddb.longContentID = "5fd#############5be
    ##########90"
    ddb.uuid = "60 ## ## ## ## ## ## ##-## ## ## ## ## ## ## 61"
    ddb.geometry.cylinders = "1958"
    ddb.geometry.heads = "255"
    ddb.geometry.sectors = "63"
    ddb.adapterType = "lsilogic"
    # Disk DescriptorFile
    version=1
    encoding="UTF-8"
    CID=7f3a1e17
    parentCID=19741890
    createType="vmfsSparse"
    parentFileNameHint="examplevm.vmdk"

    # Extent description
    RW 31457280 VMFSSPARSE "examplevm-000001-delta.vmdk"

    # The Disk Data Base
    #DDB

    ddb.longContentID = "5fd#############5be
    ##########90"

    Notes:
    • If you are creating the snapshot descriptor file from the the base disk description make sure that you change the entry from VMFS to VMFSSPARSE.
    • If the base disk is greater than 2 TB (2 TB+ only supported in ESXi 5.5) in size, these changes are required:

      • createType="vmfsSparse" replaced with createType="seSparse"
      • VMFSSPARSE under Extent Description replaced with SESPARSE
      • examplevm-000001-delta.vmdk replaced with examplevm-000001-sesparse.vmdk
    • CID and parentCID values are Content Identifiers (CID). For more information on the CID and how to correct CID mismatch errors, see Resolving the CID mismatch error: The parent virtual disk has been modified since the child was created (1007969).

      The recreated file requires use of the CID value from its parent. Update CID value with a random value. In the example above, examplevm.vmdk was the parent. Thus, the CID from examplevm.vmdk (the parent) matches the parentCID value from examplevm-000001.vmdk (the child).

      If there are other child delta disks present, such as examplevm-000002.vmdk (not shown in the example above), review the parentCID for the child and ensure it matches the CID parameter of your recreated descriptor file.

    • Delta disks are in the vmfsSparse format; specify this for the createType parameter.

      • Set the parentFileNameHint to the parent virtual disk file. This contains a virtual machine base disk or a delta descriptor's file name.

        Determining this may not be an immediately clear or simple process, depending on the information available.

        Refer to the relevant vmware.log file(s) for the virtual machine when it last successfully started to determine the opening sequence of individual disk files:

        vmx| DISK: OPEN scsi0:0 '/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003.vmdk' persistent R[]
        vmx| DISKLIB-VMFS : "/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003-delta.vmdk" : open successful (10) size = 32768, hd = 65613. Type 8
        vmx| DISKLIB-DSCPTR: Opened [0]: "examplevm-000003-delta.vmdk" (0xa)
        vmx| DISKLIB-LINK : Opened '/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003.vmdk' (0xa): vmfsSparse, 31457280 sectors / 15 GB.
        vmx| DISKLIB-VMFS : "/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000002-delta.vmdk" : open successful (14) size = 32768, hd = 65614. Type 8
        vmx| DISKLIB-DSCPTR: Opened [0]: "examplevm-000002-delta.vmdk" (0xe)
        vmx| DISKLIB-LINK : Opened '/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000002.vmdk' (0xe): vmfsSparse, 31457280 sectors / 15 GB.
        vmx| DISKLIB-VMFS : "/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000001-delta.vmdk" : open successful (14) size = 32768, hd = 65615. Type 8
        vmx| DISKLIB-DSCPTR: Opened [0]: "examplevm-000001-delta.vmdk" (0xe)
        vmx| DISKLIB-LINK : Opened '/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000001.vmdk' (0xe): vmfsSparse, 31457280 sectors / 15 GB.
        vmx| DISKLIB-VMFS : "/vmfs/volumes/########-########-####-##########/examplevm/examplevm-flat.vmdk" : open successful (14) size = 16106127360, hd = 65616. Type 3
        vmx| DISKLIB-DSCPTR: Opened [0]: "examplevm.vmdk" (0xe)
        vmx| DISKLIB-LINK : Opened '/vmfs/volumes/########-########-####-##########/examplevm/examplevm.vmdk' (0xe): vmfs, 31457280 sectors / 15 GB.
        vmx| DISKLIB-CHAINESX : ChainESXOpenSubChain: numLinks = 4, numSubChains = 1
        vmx| DISKLIB-LIB : Opened "/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003.vmdk" (flags 0xa).
        vmx| DISK: OPEN '/vmfs/volumes/########-########-####-##########/examplevm/examplevm-000003.vmdk' Geo (1958/255/63) BIOS Geo (0/0/0)


        The parts highlighted in blue are the fundamental configuration parameters used in the virtual machine's virtual disk descriptor files. The layout of a virtual disk tree can be determined using the same log file, based on the sequence and timeline of files opened. In this example:

        • One disk for the virtual machine, SCSI 0:0, was opened. The file specified was examplevm-000003.vmdk.
        • This disk had a parent, and referenced examplevm-000002.vmdk. This also had a parent and referenced examplevm-000001.vmdk.
        • An intermediary disk file itself, it referenced examplevm.vmdk as its parent. This was the base disk for the virtual machine.
      • If there are no log files available, the creation or modification dates for the files in the directory may be considered when establishing delta disk ordering.
      • Reviewing the descriptor files for each of the remaining virtual machine delta disks will also shed light on the virtual machine's existing layout.

        Warning: These files are not always ordered numerically. Incorrectly ordering the disk files can cause severe file system corruption in the guest operating system and/or trigger CID mismatch conditions when the virtual machine is powered on. If in doubt, stop and contact VMware Technical Support to file a support request. For more information, see Filing a Support Request in Customer Connect (2006985).

    • The Extent description specifies the corresponding data file containing the virtual machine disk's data:

      RW 31457280 VMFS "examplevm-flat.vmdk"

      The RW number is the number of 512-Byte sectors (or "sector count") for the extent or disk file. A base disk's RW value is used throughout the chain of delta disks attached to it; no child virtual disk files should deviate from the defined number and will contain the same value.

    • The DDB section, unlike base disk descriptor files, does not contain geometry information. Only a long content ID is used (which pertains to ESX 4.x virtual machines and newer):

      ddb.longContentID = "5f#############################90"

      This value also matches the parent disks (and base) associated to the delta virtual disk. Do not include geometry information for the delta disk descriptor files.



Additional Information