Как уменьшить размер (shrink) виртуального диска (vmdk) с журналируемой файловой системой (ext4, xfs, jfs).
By: Date: 03.02.2012 Categories: !RUS,VMWARE Метки:

Проделал только один раз, на бегу. Причем вроде как нужно делать для каждой партиции или записи в fstab, но я сделал как написано, тупо и не вникая, скорее всего  в этом и была ошибка. Короче — мне не помогло, размер файла не уменьшился. В следующий раз, будет больше времени, проведу более тщательную работу.

Итак что делаем:

Отсюда: How to shrink a vmdk with ext4 or other unsupported filesystems

— inside the guest: create a wiperfile for every single partition — or in other words — do this for any entry in fstab separately
— inside the guest run
dd if=/dev/zero of=/wiperfile bs=20971520 # bs=20m
rm /wiperfile

Смысл этих двух команд в том что все неиспользуемые блоки этой партиции объединяются в один файл, и все они забиваются 0 (нулями — это важно). А затем этот файл удаляется. Т.е. все неиспользуемые блоки получаются забиты нулями.
— on Workstation power down the guest and use vmware-vdiskmanager -k disk-with-ext4.vmdk
— on ESX power down the guest and use vmkfstools -i unshrinked.vmdk shrinked.vmdk -d thin
— on ESX exchange the referenced vmdk in the vmx-file

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

делается тоже самое только для VMware Workstation на ОС Windows и еще есть примечание для swap.

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