Disk shrink does not work on ESXi guests

23,411

Solution 1

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.

Solution 2

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:
23,411
NekojiruSou
Author by

NekojiruSou

Updated on September 18, 2022

Comments

  • NekojiruSou
    NekojiruSou over 1 year

    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.

    • cikuraku
      cikuraku almost 12 years
      could you show a value of the isolation.tools.diskShrink.disable key which can be found on the vmx file?
    • NekojiruSou
      NekojiruSou almost 12 years
      It wasn't there. Adding isolation.tools.diskShrink.disable="false" didn't change anything.
  • NekojiruSou
    NekojiruSou almost 12 years
    Sad but true...
  • Philip
    Philip almost 11 years
    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.
  • Sven 31415
    Sven 31415 over 4 years
    vmkfstools are not working when the VM is on a NFS storage.