As others have suggested, splitting up 20Gb might be troublesome. It does have advantages though, particularly keeping
/tmp separate so running out of space on one doesn't affect elsewhere.
I suggest keeping the drive as one partition, and using LVM to split thing up. That way it is relatively easy to rearrange later if you find you made something too small. Leave a small amount unallocated so that you have a quick resize option for an emergency - you can increase the size of a logical volume and resize the filesystem on it while the system is live (assuming the chosen filesystem and tools support this - I've done it with ext3). This alleviates the pressure of having to get the choice exactly right in such a small place (you just need to get it "right enough for now"), and gives you an easy upgrade option too: if you find a VM needs more space rather than just rearranging the existing allocation you can ad a second vdisk (you'll need to down the VM for this part), mark it as a pv for lvm, add it to the main volume group, and can then expend volumes into it (all this can be done live).
There is a small performance hit with LVM in many cases as you are adding an extra level of indirection to disk access but this is generally very small, so small as to not be noticeable and well worth the extra convenience LVM can offer.