VMWare Fusion Reclaim Free Space of OS X Guest
Jump to navigation
Jump to search
After installing OS X in a VMWare Fusion v6, I noticed that the disk images are continously growing. And VMWare Fusion won't let me reclaim the free space.
The Problem
As pointed out here and here, the OS X guest does not actually delete files, it just won't remember where the file is stored on the disk. So all the file's data is still stored on the disk. We need to permanently delete the file's data, and then the freed space can be reclaimed.
The Solution (more like a Workaround)
- Startup your guest os
- Log in as administrator
- Get your root-device (the /):
Mac-OS-X-108-Mountain-Lion-VM:~ appleadmin$ mount /dev/disk0s2 on / (hfs, local, journaled) devfs on /dev (devfs, local, nobrowse) map -hosts on /net (autofs, nosuid, automounted, nobrowse) map auto_home on /home (autofs, automounted, nobrowse) .host:/VMware Shared Folders on /Volumes/VMware Shared Folders (vmhgfs) Mac-OS-X-108-Mountain-Lion-VM:~ appleadmin$
- Erase the free space:
Mac-OS-X-108-Mountain-Lion-VM:~ appleadmin$ sudo diskutil secureErase freespace 0 /dev/disk0s2 Started erase on disk0s2 Macintosh HD Creating a temporary file Securely erasing a file Creating a secondary temporary file Mounting disk Finished erase on disk0s2 Macintosh HD Mac-OS-X-108-Mountain-Lion-VM:~ appleadmin$
- Shutdown your VM
- Remove all Snapshots (think of the consequences!)
- Now, reclaim the free space:
File:VMWareFusion6ReclaimSpace01.png
The Solution
Thanks to Marco, there is another way[1]:
sudo /Library/Application\ Support/VMware\ Tools/vmware-tools-cli disk shrinkonly
And one more method…
They claim[2] this might work:
Erase formerly used space on your guest OS' disk:
diskutil secureErase freespace 0 Macintosh\ HD sudo halt
or
diskutil secureErase freespace 0 / sudo shutdown -h now
Then
[ -d "/Library/Application Support/VMware\ Fusion" ] && alias vmware-vdiskmanager="/Library/Application Support/VMware Fusion/vmware-vdiskmanager" || alias vmware-vdiskmanager="/Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager";
vmware-diskmanager -k <path-to-disk-image-of-your-guest-os>
Footnotes: