Virtual disk programs must be able to cope with VMDK files up to version three (3).

Version 1 was the initial version of VMDK. All released builds of vixDiskLib can read and write this version.

Version 2 added disk encryption for hosted products (Workstation and Fusion), although encrypted disks were never implemented on ESXi. Version 2 VMDK files can be transferred to and appear on ESXi, where they are treated like version 1 VMDK files.

Version 3 added support for persistent changed block tracking (CBT), and is set when CBT is enabled for a virtual disk. CBT is supported on VMFS datastores. This version 3 first appeared in ESXi 4.0 and continues unchanged in recent vSphere releases. When CBT is enabled, the version number is incremented, and decremented when CBT is deactivated.

If you look at the .vmdk descriptor file for a version 3 virtual disk, you can see a pointer to its *-ctk.vmdk ancillary file. For example:

version=3
...
# Change Tracking File
changeTrackPath="Windows-2008R2x64-2-ctk.vmdk"

The changeTrackPath setting references a file that describes changed areas on the virtual disk.

If you want to back up the changed area information, then your software should copy the *-ctk.vmdk file and preserve the “Change Tracking File” line in the .vmdk descriptor file. If you do not want to back up the changed area information, then you can discard the ancillary file, remove the “Change Tracking File” line, read the VMDK file data as if it were version 1, and roll back the version number on restore.