This is an expected behavior.
To work around this issue, Storage vMotion the virtual machine or VMDK to a datastore that has a different block size. This reclaims the zeroed out disk space.
To shrink a thin provisioned disk (VMDK):
- Use a third-party tool within the guest operating system to zero-out disk blocks that may have previously been written with data, but have subsequently been deleted.
- Storage vMotion the virtual machine or VMDK to a datastore formatted with a different block size.
For example, if the VMDK is on a datastore formatted with 2 MB blocks, format the target VMFS datastore with a 1 MB, 4 MB, or 8 MB block size.
To reclaim the unused space of a virtual disk in ESXi/ESX 4.1 or later:
Note: Where vmkfstools supports the -K option (--punchzero), you can reclaim the zeroed blocks of thin-provisioned virtual disks without the need to clone to another VMFS datastore with a different block size.
- Ensure that the disk has no Snapshots.
- In a Windows virtual machine, run the
SDelete
command (or a tool with similar functionality) to zero out all unused space. The syntax for the SDelete command is SDelete -z driveletter. If you use SDelete
, ensure that you use version 1.6 or later.
Note: Zeroing all unused blocks inflates the disk to its full size as if it was an eagerzeroed disk. Ensure that there is sufficient space on the datastore to allow the disk to grow to its full size. For more information, see Determining if a VMDK is zeroedthick or eagerzeroedthick (1011170).
- Shut down the virtual machine or temporarily remove the virtual disk from the virtual machine to ensure that it is not in use.
- Erase all unused blocks by running the command:
vmkfstools -K /path/to/disk-name.vmdk
Note: The punchzero (vmkfstools -K) command is not compatible with NFS datastores. This command is also not supported for thick provisioned disks on VMFS6
This option de-allocates all zeroed out blocks and leaves only those blocks that were allocated previously and contain valid data. The resulting virtual disk is in thin format. For more information on the vmkfstools
command, see Removing Zeroed Blocks in the ESX Configuration Guide.