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

  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.  

57 Tips Every Admin Should Know

Active Directory 1. To quickly list all the groups in your domain, with members, run this command: dsquery group -limit 0 | dsget group -members –expand 2. To find all users whose accounts are set to have a non-expiring password, run this command: dsquery * domainroot -filter “(&(objectcategory=person)(objectclass=user)(lockoutTime=*))” -limit 0 3. To list all the FSMO role holders in your forest, run this command: netdom query fsmo 4. To refresh group policy settings, run this command: gpupdate 5. To check Active Directory replication on a domain controller, run this command: repadmin /replsummary 6. To force replication from a domain controller without having to go through to Active Directory Sites and Services, run this command: repadmin /syncall 7. To see what server authenticated you (or if you logged on with cached credentials) you can run either of these commands: set l echo %logonserver% 8. To see what account you are logged on as, run this command: ...
  The Guardrails of Automation VMware Cloud Foundation (VCF) 9.0 has redefined private cloud automation. With full-stack automation powered by Ansible and orchestrated through vRealize Orchestrator (vRO), and version-controlled deployments driven by GitOps and CI/CD pipelines, teams can build infrastructure faster than ever. But automation without guardrails is a recipe for risk Enter RBAC and policy enforcement. This third and final installment in our automation series focuses on how to secure and govern multi-tenant environments in VCF 9.0 with role-based access control (RBAC) and layered identity management. VCF’s IAM Foundation VCF 9.x integrates tightly with enterprise identity providers, enabling organizations to define and assign roles using existing Active Directory (AD) groups. With its persona-based access model, administrators can enforce strict boundaries across compute, storage, and networking resources: Personas : Global Admin, Tenant Admin, Contributor, Viewer Projec...