Disk shrink does not work on ESXi guests

thin-provisioningvirtualizationvmware-esxivmware-vspherevmware-workstation

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.

Best Answer

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.