Linux – Shrinking physical volumes in LVM on a Linux Guest in ESXi 5.0

linuxlvmvmware-esxivmware-vsphere

The problem:

Linux guest (OpenSuse 12.1), with multiple virtual disks attached.

3 disks are in a logical volume, two of which are exactly 2TB.

None of the disks are independent, and due to the backup software we use, cannot be independent.

When the two 2TB virtual disks are "dependent", the snapshot fails stating that the file is too large for the datastore. When I put those two disks in independent mode, snapshots work fine (the other disk is 1.8TB).

I have therefore concluded that even shrinking the two physical disks by 100GB should solve the problem, however I am having trouble conceptualizing how to go about getting those disks smaller without breaking the LVM entirely.

The actual LV has 1.3TB free, so there is plenty of space to shrink with.

What I need to accomplish:

Deallocate 100GB from the two, 2TB virtual disks within the linux guest.

Shrink the two virtual disks by 100GB within vsphere (not as complicated).

Are there any vsphere/LVM gurus that can give me a clue?

Edit:

Fixing formatting:

Something like this?
e2fsk -f /dev/VGroup1

resize2fs /dev/VGroup1 5922108040K (that is a 200GB shrink in KB)

lvreduce -L 209715200K /dev/Vgroup1 pvresize /dev/sdb1(and sdc1) —

setphysicalvolumesize 2042625023K Correct?

Another thought occurred to me: Maybe to play on the safe side I should reduce 25G more than I plan on reducing the disks, to ensure that the physical volumes aren't smaller than the filesystem.

Best Answer

This isn't a VMWare issue really, the issue with the 2TB vmdk's is that there's no space left on the datastore to commit to a snapshot, as you say dropping the size of the vmdk will allow that to work.

Now obviously you can use the usual chain of umount, e2fsck, resize2fs, lvreduce and pvresize then reduce the vmdk size within the vsclient, but there's another thought, if you have enough temporary space you could just convert them to thin disks. Obviously there can be a write penalty for this but it'd mean you'd not have to touch your guest filesystem.