insomnihack

When sleep eludes, the keyboard beckons

Shrink VMWare Virtual Disks formatted with ext4

July 18, 2010 Dale 12 Comments

If you’re running a Linux distribution under VMWare that uses disks formatted with ext4 (as Ubuntu does by default), you may have had some problems shrinking the resulting virtual disks files your VM uses. This is because ext4 is a journaling file system. It protects your file system in case of a system crash or power failure.

Unfortunately, the current version of VMWare’s tools (I’m using Workstation 7.1 currently) hasn’t been updated to completely handle journaling file systems like ext4. Your disk won’t appear on the shrink tab of vmware-toolbox or be listed when using vmware-toolbox-cmd. This can be frustrating when your virtual disk grows to several gigabytes large than the actual data you’re using under Linux.

However, the good news is that you can reclaim the unused space with a little preliminary work inside your guest OS. First, execute the following commands from within the Linux guest.

[plain]
sudo apt-get clean
sudo dd if=/dev/zero of=/0bits bs=20971520 # bs=20m
sudo rm /0bits
[/plain]

This will manually clear unused space. Note that the first call to apt-get is not required, and only applicable if you’re running a distribution that uses Debian’s advanced packaging tool for package management.

After you’ve executed these commands, shutdown your VM and use vmware-vdiskmanager to shrink the virtual drive file.

[plain]
cd "C:\Program Files\VMware\VMware Workstation"
vmware-vdiskmanager -k path\to\your\VirtualDisk.vmdk
[/plain]

You should see a noticeable reduction in file size after this.

Computers Linux, vmware

Comments

  1. Andrew says

    November 30, 2010 at 10:51 PM

    works great… thanks.. 🙂

  2. Jorpha says

    January 12, 2011 at 1:28 AM

    Thanks. This problem drives me crazy for a long time.

  3. Vee says

    February 1, 2011 at 3:18 AM

    Thanks! This saves my day!
    I have also discovered two things:
    (1) for ‘dd’, it’s probably better to mention that you feed the partition size as the ‘bs’ parameter… so one will dd until ‘No space left’.
    (2) for swap partition, can do so:
    (Assuming that your swap partition is at /dev/sda6)
    (Make sure you have enough free memory first)
    $ sudo swapoff -a
    $ dd if=/dev/zero of=/dev/sda6 bs=20971520 # Just fill up the space
    $ sudo swapon -a

  4. Vee says

    February 1, 2011 at 3:20 AM

    Oops… I missed out a ‘sudo’ command in my previous comment, in the second step before ‘dd if=/dev/zero of=/dev/sda6…’. Can you please help me to edit that?

  5. Vee says

    February 1, 2011 at 7:47 PM

    (Oops, sorry, me again; Hope that you just modify my previous comments for me; The complete error-free way of clearing swap partitions should be this:)
    $ sudo swapoff -a
    $ sudo dd if=/dev/zero of=/dev/sda6 bs=20971520 # Just fill up the space
    $ sudo mkswap /dev/sda6
    [Note the UUID assigned]
    $ sudo nano /etc/fstab
    [Update the entry for swap partition with the UUID obtained in the previous step]
    $ sudo swapon -a

  6. mos701 says

    March 22, 2012 at 10:03 AM

    Does anyone know the equivalent vmware-vdiskmanager command in esxi 5? It doesn’t appear to have it.

  7. George says

    October 23, 2012 at 8:26 AM

    For me the command to shrink disk on Ubuntu 10.04 Server was

    sudo vmware-toolbox-cmd disk shrink /

  8. Corax says

    March 30, 2013 at 12:04 PM

    Nice solution, works fine; just one remark: the ‘bs’ parameter of dd is actually the number of bytes read AT ONCE, in other words the size of the copy buffer.

    As a consequence, it’s no use trying bs=20G to clean a 20GB partition, because first dd won’t like it (something like “unable to allocate a 20GB buffer”), and even in the case dd accepts it (for example with a 100M buffer), it will be extremely slow or even crash the system (at least that’s what happened when I tried it with a large buffer).

    Conclusion: just don’t change the bs setting (by default 512B which is fine, it filled 13GB in a few minutes), anyway /dev/zero will supply enough data to fill anything you want 😉

Trackbacks

  1. VMware Tools can’t shrink ed/x/ubuntu 10.x ext4 partitions « vizz.info says:
    September 24, 2010 at 4:15 AM

    […] toolbox cant shrink ed/x/ubuntu ext4 partitions. Until this is fixed ny VMware one workaround from http://www.insomnihack.com/?p=387 suggests creating a large file of zeros then deleting it then using vmware-vdiskmanager on the […]

  2. pathletboy的缘分天空 » Shrink VMWare Virtual Disks formatted with ext4[转] says:
    July 1, 2011 at 4:45 AM

    […] Shrink VMWare Virtual Disks formatted with ext4[转] 2011年7月1日 pathletboy 发表评论 阅读评论 http://www.insomnihack.com/?p=387 […]

  3. Как уменьшить размер (shrink) виртуального диска (vmdk) с журналируемой файловой системой (ext4, xfs, jfs). | [MinistrBob].[MyRemBook] says:
    May 2, 2012 at 3:31 AM

    […] В другом посте отсюда: Shrink VMWare Virtual Disks formatted with ext4 […]

  4. Shrinking VMware Virtual Disks on a Mac « local steve; says:
    October 25, 2012 at 3:38 PM

    […] I refused to believe it wouldn’t work on a Mac, so I scoured the webs and found this amazingly helpful blog post with a humorous solution: just fill up the virtual disk […]

Leave a Reply

Your email address will not be published. Required fields are marked *

About Me

Hi, my name's Dale, and this is my tech blog. Read More…

Search

Tags

blogging c# database Django documentation Email furniture git hacks htpc IPython Linux mac nas packaging PyCharm Python Roleplaying tools twitter unit tests virtualenv Visual Studio vmware Windows

Copyright © 2025 · Equilibre Theme on Genesis Framework · WordPress · Log in