Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

EHLO everyone! My first post on the StackOverflow network :)

We're running some ESXi 5.0/vCenter infrastructure to host mainly Debian 6/amd64 guest systems with ext3 partitions and open-vm-tools compiled from source per debian bug 471784.

Got an issue that is seen being raised all around the internet, but without a conclusive answer given anywhere.

When trying to shrink a thin-provisioned disk in independent-persistent mode, with no snapshots, parents, clones whatsoever, I consistently get the following error:

root@linux64:~# vmware-toolbox-cmd disk list
Shrink disk is disabled for this virtual machine.

Shrinking is disabled for linked clones, parents of linked clones,
pre-allocated disks, snapshots, or due to other factors.
See the User's manual for more information.

(By the way, what are the "other factors", and which of the ton of white papers and technical manuals is the User's manual?:)

I know that I can stuff the partitions with zeros (in fact, I do use shred -fuzn0 when deleting large files) then shut down the guest in question and use various methods like vmkfstools, cloning or vMotioning disks around in thin-provision mode, etc, but all of them either incur the downtime penalty for the guest being shirnked, or result in an unwarranted moving of data between datastores and/or hosts.


And the answer is: No shrinking under ESX/ESXi (as of version 5).

The documentation reads:

IMPORTANT Shrinking disks is not allowed under the following circumstances:

  1. The virtual machine is hosted on an ESX/ESXi server. ESX/ESXi Server can shrink the size of a virtual disk only when a virtual machine is exported. The space occupied by the virtual disk on the ESX/ESXi server, however, does not change.

  2. The virtual machine has a Mac guest operating system.

  3. You preallocated all the disk space to the virtual disk when you created it.

  4. The virtual machine contains a snapshot.

  5. The virtual machine is a linked clone or the parent of a linked clone.

  6. The virtual disk is an independent disk in nonpersistent mode.

  7. The file system is a journaling file system, such as an ext4, xfs, or jfs file system.

No wonder there is an option to shrink in VMWare Workstation but not in vSphere client connected to an ESXi or vCenter instance.

share|improve this question
2  
could you show a value of the isolation.tools.diskShrink.disable key which can be found on the vmx file? –  cikuraku Jun 13 '12 at 9:28
1  
It wasn't there. Adding isolation.tools.diskShrink.disable="false" didn't change anything. –  NekojiruSou Jun 13 '12 at 9:43
add comment

2 Answers

up vote 2 down vote accepted

http://www.vmware.com/pdf/vmware-tools-cli.pdf Page 13 :

Shrinking disks is not allowed under the following circumstances:

The virtual machine is hosted on an ESX/ESXi server. ESX/ESXi Server can shrink the size of a virtual disk only when a virtual machine is exported. The space occupied by the virtual disk on the ESX/ESXi server, however, does not change.

share|improve this answer
    
Sad but true... –  NekojiruSou Jun 14 '12 at 2:58
add comment

Actually, there is a way to shrink a VM on ESXi, although you need to shut down the VM for it. Here's how:

  1. Zero all unused space inside the VM:

    dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero

  2. Do the same with other mount points, swap partitions, etc.

  3. Shut down the VM.

  4. SSH to ESXi, and issue this command:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

This will take some time... vmkfstools "punches holes" inside your VMDK, e.g. deallocates all blocks that are filled with zeros, effectively shrinking your VMDK.

share|improve this answer
2  
For Windows, you can grab a copy of Virtual Server 2005, extract the Precompact.iso file from it, it contains a Procompact.exe program that will zero all the unused disk pace in Windows. –  Chris S Aug 1 '13 at 13:39
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.