Skip to main content

VMKFSTOOLS Examples – Working With Virtual Disks

VMFSTOOLS is something I perhaps don’t use as regularly as I’d like and as a result find myself having to refer to the documentation pretty much anytime I do anything with it. With that in mind I thought I’d document some examples of what vmkfstools can do here, so I’ll have something to refer back to.
Simply put, vmkfstools is a vSphere cli tool for managing VMFS volumes. It will allow you to perform operations against both the file system and the virtual disk files. Here I’ll be concentrating on looking at what we can do with virtual disks.

VMKFSTOOLS Virtual Disk Options

Running vmkfstools at the cli prompt will display the options available to us:
vmkfstools examples

Create a Virtual Disk with vmkfstools

To create a virtual disk we can run vmkfstools -c 2048m testdisk1.vmdk

As a result, we end up with 2 files – the virtual disk descriptor file, and the virtual disk itself:
By default this will create a thick disk using a Bus Logic virtual adapter. To create a thin provisioned virtual disk we need to use the diskformat option, vmkfstools -c 5G –diskformat thin testdisk2.vmdk.

Running ls -la can be misleading as it reports the new disks size as being its maximum possible size, in this case 5GB:

But we can confirm the files actual size on disk, and therefore confirm that it is thin provisioned by running du -ah.
This shows the filesize to be zero, which is what we were expecting from an, as yet unused, thin provisioned disk.

To convert, or inflate, the virtual disk file so that it is changed to the eagerzeroedthick format we can use the --inflatedisk option. This action preserves any existing data on the virtual disk. Depending on the size of the disk, this may take some time.

Once complete, running du -ah now shows the file to be using the 5GB that was originally configured as its maximum size:

Extending a Virtual Disk with vmkfstools

If the 5GB we specified isn’t enough, we can increase the size of the virtual disk by running vmkfstools -X 6GB test.vmdk. We can confirm the change by again running du -ah.

Clone a Virtual Disk with vmkfstools

We can also use vmdkfstools to clone a virtual disk. This is useful if we just need a copy, or in this case if we wish to convert the disk back to being thin provisioned. We can do this by running vmkfstools -i test2.vmdk test2clone.vmdk -d thin

The thin provisioned clone of the disk reverts to 5GB as this is the size we had previously set to being ‘eager zeroed’:

Delete a Virtual Disk using vmkfstools

Now we have the thin provisioned clone, we may want to delete the original virtual disk. This is done by running vmkfstools -U test2.vmdk.
When deleting virtual disks from the cli it is recommended to use vmkfstools rather than the linux rm command purely because vmkfstools deletes both the virtual disk file and it’s descriptor, without you having to list both files in your rm command.

Renaming a Virtual Disk using vmkfstools

Finally, and to complete this post, I will rename the cloned vmdk file so that it reflects the original name. We use vmkfstools -E to do this:

Again, like with deleting vmdk files, when renaming it is better to use vmkfstools rather than the mv command, as this renames both of the relevant .vmdk files.
There’s quite a bit more to this tool than what’s covered here, including working with RDMs and the VMFS filesystem itself, which I’ll be putting in a future post.

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...