Skip to main content

Reclaim Used Space with VMKFSTOOLS –Punchzero

I see vmkfstools -punchzero quite a bit as one of the search terms leading to my other posts about vmkfstools, so thought it would be worthwhile giving this useful feature its own post.
Thin provisioned disks allow you to assign storage to virtual machines, without actually using up that space on the datastore. For example, if you allocate a 20GB disk as Thin, then it’s size on the datastore will start at zero bytes, and will grow as files are written to the disk up to a maximum of 20 GB. So, if I copy a 5 GB file to the disk, then the thin provisioned disk will grow to ~5 GB. However, if I then delete the 5GB file, the virtual disk does not shrink, it remains at 5 GB. This is where vmkfstools -K or vmkfstools –punchzero comes in handy.
The best way to demonstrate this is with a real example. We’ll start with a VM with a single thin provisioned disk. Looking at its size on the datastore (remember to use ‘du’ rather than ‘ls’ to get the true size) we can see that it is currently using 1.9 GB of space on the datastore:
# du -ah vma-flat.vmdk
1.9G    vma-flat.vmdk
We’ll add some data to the thin provisioned disk. As this is a linux virtual machine I’ll use the following method to create a 500Mb file. The following command needs to be run within the guest OS:
dd if=/dev/zero of=test.file bs=500000000 count=1
Going back to the host, the virtual disk has now grown to 2.3GB as expected:
# du -ah vma-flat.vmdk
2.3G    vma-flat.vmdk
Following deletion of the file in the guest OS, the virtual disk remains at 2.3GB. In order to reclaim that 500Mb we can use vmkfstools -K or vmkfstools –punchzero. However, before we can run that command we need to shutdown the virtual machine to release the lock the host has on the .vmdk file.
Once the VM is shutdown we can run:
# vmkfstools --punchzero vma.vmdk
vmfsDisk: 1, rdmDisk: 0, blockSize: 1048576
Hole Punching: 19% done.
It will take a little while depending on the size of the virtual disk. Once complete, the virtual disk has returned to its original size:
# du -ah vma-flat.vmdk
1.9G    vma-flat.vmdk
And, confirmed in the datastore browser:
vmkfstools-punchzero
Bear in mind that you can also achieve a similar result by using svMotion to move a thin provisioned disk, however this remains useful if you prefer to leave the disk in its current location, albeit with the downside of having to shutdown the virtual machine in order to reclaim the space.

Comments

Popular posts from this blog

Quick Guide to VCF Automation for VCD Administrators

  Quick Guide to VCF Automation for VCD Administrators VMware Cloud Foundation 9 (VCF 9) has been  released  and with it comes brand new Cloud Management Platform –  VCF Automation (VCFA)  which supercedes both Aria Automation and VMware Cloud Director (VCD). This blog post is intended for those people that know VCD quite well and want to understand how is VCFA similar or different to help them quickly orient in the new direction. It should be emphasized that VCFA is a new solution and not just rebranding of an old one. However it reuses a lot of components from its predecessors. The provider part of VCFA called Tenenat Manager is based on VCD code and the UI and APIs will be familiar to VCD admins, while the tenant part inherist a lot from Aria Automation and especially for VCD end-users will look brand new. Deployment and Architecture VCFA is generaly deployed from VCF Operations Fleet Management (former Aria Suite LCM embeded in VCF Ops. Fleet Management...
  Issue with Aria Automation Custom form Multi Value Picker and Data Grid https://knowledge.broadcom.com/external/article?articleNumber=345960 Products VMware Aria Suite Issue/Introduction Symptoms: Getting  error " Expected Type String but was Object ", w hen trying to use Complex Types in MultiValue Picker on the Aria for Automation Custom Form. Environment VMware vRealize Automation 8.x Cause This issue has been identified where the problem appears when a single column Multi Value Picker or Data Grid is used. Resolution This is a known issue. There is a workaround.  Workaround: As a workaround, try adding one empty column in the Multivalue picker without filling the options. So we can add one more column without filling the value which will be hidden(there is a button in the designer page that will hide the column). This way the end user will receive the same view.  
  "Cloud zone insights not available yet, please check after some time" message on Aria Automation https://knowledge.broadcom.com/external/article?articleNumber=314894 Products VMware Aria Suite Issue/Introduction Symptoms: The certificate for Aria operations has been replaced since it was initially added to Aria Automation as an integration. When accessing the Insights pane under  Cloud Assembly  ->  Infrastructure  ->  Cloud Zone  ->  Insights  the following message is displayed:   "Cloud zone insights not available yet, please check after some time." The  /var/log/services-logs/prelude/hcmp-service-app/file-logs/hcmp-service-app.log  file contains ssl errors similar to:   2022-08-25T20:06:43.989Z ERROR hcmp-service [host='hcmp-service-app-xxxxxxx-xxxx' thread='Thread-56' user='' org='<org_id>' trace='<trace_id>' parent='<parent_id>' span='<span_id>'] c.v.a.h.a.common.AlertEnu...