VMware normally creates “growable” disks, which start small and grow over time as you add data. However, you can also create “preallocated” disks that start at their maximum size. If you want to compact a disk later, you’ll need to convert it from preallocated to growable. Or, you may want to convert a disk from growable to preallocated for maximum performance.
RELATED: Beginner Geek: How to Create and Use Virtual Machines
You can only do this in VMware Fusion or VMware Workstation. VMware Player does not include the necessary command. VMware Player always creates growable disks that expand over time, and there’s no way to convert to preallocated without using another VMware product.
VMware Fusion
This is very simple in VMware Fusion on a Mac. VMware Fusion always creates new virtual disks as growable disks. You can convert them to preallocated disks afterwards, or convert disks back to growable disks if you’ve previously converted them to preallocated disks.
To do this, first shut down the virtual machine. You can’t convert its disks if it’s powered on or suspended.
Select the virtual machine in the main VMware Fusion window and click Virtual Machine > Settings.
Click the “Hard Disk” option under Removable Devices in the Settings window.
RELATED: Stop Testing Software on Your PC: Use Virtual Machine Snapshots Instead
If you see a message saying you can’t make these changes while your virtual machine has a snapshot, you’ll first need to delete any snapshots you’ve created for your virtual machine. Of course, you won’t be able to restore your virtual machine to its previous state at those points in time later.
To delete snapshots, click Virtual Machine > Snapshots > Snapshots. Select each snapshot in the window and click the “Delete” button on the toolbar to delete each.
In the Hard Disk settings window, expand the “Advanced options” section. Check “Pre-allocate disk space” to convert the growable disk to a preallocated disk, or uncheck “Pre-allocate disk space” to convert a preallocated disk back to a growable disk. Click “Apply” to apply your changes afterwards.
VMware Workstation
The process is a bit more complicated in VMWare workstation, and you’ll need to use the Command Prompt—this option isn’t exposed in the graphical interface on VMware Workstation, so you’ll have to use the built-in vmware-vdiskmanager command.
Step One: Delete Any Snapshots
First, power the virtual machine down in VMware Workstation. Delete any snapshots associated with the virtual machine by clicking VM > Snapshot > Snapshot, right-clicking each snapshot, and selecting “Delete”. Of course, you won’t be able to restore your virtual machine to these previous points in time after deleting the snapshots.
Step Two: Find the vmware-vdiskmanagere.exe Command
Next, find the vmware-vdiskmanager.exe command. If you have VMware Workstation installed in the default directory on Windows, you’ll find it at C:\Program Files (x86)\VMware\VMware Workstation or C:\Program Files\VMware\VMware Workstation.
Open a Command Prompt window from the Start menu and change to the VMware directory. To do this, use the following command. Replace the folder path with the correct path to the VMware Workstation folder that contains the vmware-vdiskmanager.exe file if it’s different on your system.
NOTE: The instructions here assume you’re using Windows as your host operating system. On Linux, you can simply open a Terminal window and run the vmware-vdiskmanager command like you’d run any other command.
Step Three: Find Your Virtual Disk File
Locate the virtual machine’s folder on your disk and identify its .vmdk file, which is the virtual machine’s virtual disk. By default, VMware creates virtual machine folders inside the directory at C:\Users\NAME\Documents\Virtual Machines\ , where NAME is the name of your Windows user account.
You may see multiple .vmdk files. That’s normal. Look for the main .vmdk file, not any of the .vmdk files that ends with -f and then a number. In the screenshot below, it’s named Windows 7.vmdk.
If you’re not sure where it is, you can view a virtual machine’s folder path at the bottom of the VMware Workstation window.
Step Four: Convert the Virtual Disk
To convert a virtual machine from preallocated to a growable virtual disk split into 2 GB files, run the following command. It’s easiest to create the new, target .vmdk file in the same folder as the original virtual disk file.
For example, if the path to your original .vmdk file is C:\Users\chris\Documents\Virtual Machines\Windows 7\Windows 7.vmdk , you could run the following command:
To convert a virtual machine from growable to a preallocated disk split into 2 GB files, run the following command:
For example, if the path to your original .vmdk file is C:\Users\chris\Documents\Virtual Machines\Windows 7\Windows 7.vmdk , you could run the following command:
Step Five: Delete (or Move) the Original Disk Files
The above command just creates a new copy of the virtual disk at the target path. if you open your virtual machine’s folder, you’ll see that you have both the original disk and the new disk. In this example, we have both Windows 7[something].vmdk files and Windows 7-growable[something].vmdk files
You can now get rid of the original disk by deleting its files. In this example, we’d delete all the Windows 7[something].vmdk files including the main Windows 7.vmdk file. However, you should only delete or move files that end in .vmdk. Leave the other files here alone.
Instead of deleting these files, you may want to copy them to another folder. This will give you a backup copy you can restore in case something went wrong.
Step Six: Move the New Virtual Disk to the Original Disk’s Location
Rename the new main .vmdk file to have the same name as the original virtual disk. In this example, we’d rename Windows 7-growable.vmdk to Windows 7.vmdk and leave the Windows 7-growable-s001.vmdk, Windows 7-growable-s002.vmdk, and other files alone.
You can now boot the virtual machine normally. It will be automatically use the new growable or preallocated disk, as it’s at the same location as the previous disk it was using. That new main .vmdk disk file points to the smaller .vmdk files even though they have a different name, so everything will “just work”.