To resolve this issue, upgrade to VMware VDDK 6.7 or later version.
Note: The backup software is able to filter out those unallocated blocks if it uses VDDK 6.7 or later. It can get all allocated area of a virtual disk by calling the VDDK API
VixDiskLib_QueryAllocatedBlocks(), then taking the intersection with changed blocks reported by CBT. The result is the changes on the allocated blocks.
Storage system may allocate more space than needed by the guest OS. For example, VMFS file block size is 1MB and guest OS has a typical block size of 4KB. When 4KB data is requested to be written on the disk, 1 MB will be allocated and only 64KB will be recorded changed in CBT.
VixDiskLib_QueryAllocatedBlocks()may report pre-allocated blocks on which nothing is yet written. It is expected that some allocated blocks may not be recorded in changed blocks.
Workaround:
To work around the issue, use one of these options:
- Disable unmap in guest VM.
- If you have VDDK 6.7 or later libraries, take the intersection of VixDiskLib_QueryAllocatedBlocks() and queryChangedDiskAreas(changeId) to calculate the accurate changed blocks.