My recommendation would be to look into virtulization.
I would install a hypervisor on your host system and run your two Linux/Windows machines and virtual guest operating systems.
There are several flavors of Linux that include a hypervisor built right in. Windows Server 2008 also includes a built in hypervisor called Hyper-V.
Or you may install free stand-alone hypervisors. Citrix XenServer and Microsoft Hyper-V are both good options. The shortcoming of using a standalone hypervisor is that your host machine will not have a graphical user interface. Instead, you would have to use a second machine to remotely access/use your two guest virtual machines.
Regardless of the virtual path you choose, virtulization will give you the greatest flexibility in partitioning options. Most virtual solutions have the ability to dynamically expand the storage a partition uses.
For example, you could create a partition for a guest that appears as 120 GB to the guest machine but takes up only 5 GB on the host machine. As the guest starts filling the remaining 115 GB of virtulized free space, the actual storage requirements on the host machine will dynamically expand.