We do web development on a product that has multiple versions which don't like to coexist on a single Windows/IIS install. We've decided to spin up 3 virtual servers to handle each of the versions we need to work with. That part is a given, as virtualization definitely makes sense for the issues we face there.
What I'm currently struggling with are the nuances of the setup, however, as I haven't done virtualization with Windows before. So first, the basic requirements. We'll be running 3 virtual servers (Windows 2008 R2), each with IIS and an install of the relevant version of the product we work with. We also need an MSSQL server to back all of those.
The machine is an i7-920 (quad core, 8 logical) w/ 12GB of RAM. There are 6 7200RPM basic HDs, configured into 3 RAID1 volumes.
As far as the MSSQL DB goes, the DB sizes are small (<300MB typically) so I'm not particularly worried about disk performance; everything should fit in working memory so it's just log writes. If disk performance becomes an issue (or even if it doesn't), I expect to eventually replace one or more of the RAID1 volumes with pairs of SSDs, probably X25-Ms, once the prices come down.
So, finally, the question. I have two setups I'm currently considering, but I'm not familiar enough with Windows virtualization to really grasp the pros and cons. I'm hoping to get some feedback on these options, or else hear about other setups that would be more appropriate?
Option 1) Run the hypervisor as a "server core" installation of Windows 2008 R2 on one volume and give it 2GB of RAM, which as I understand is basically just a command line interface. Run a virtual instance with 4GB RAM on its own volume for MSSQL, and then 3 more virtual instances with 2GB RAM for the actual IIS setups, sharing the last volume.
This appeals to me in general because it keeps the hypervisor simple, and puts all the other roles in virtual boxes. Since I have a linux background, admin'ing the hypervisor via CLI doesn't worry me. However, I have no idea if the "server core" CLI installation of Windows is actually less maintenance overhead, or if it ends up needing to be rebooted just as often for patching, etc.? Also, does it actually need 2GB just to run that, or can it get by with less? Are there other downsides to running the hyper-v hypervisor as a basic "server core" install?
Option 2) Run the hypervisor as a regular installation of Windows 2008 R2 with 6GB of RAM on one volume, and also run MSSQL on that same physical instance with its datafiles on a second volume. Then stand up the 3 virtual servers as before, each with 2GB RAM, shared on the final volume. In some ways this is simpler, and resource wise it gives more potential RAM to MSSQL and also more processor (since in option 1 at least one physical processor is going to be dedicated to the hypervisor, leaving 4 VMs to fight between 3 CPUs). However, I'm concerned that having the MSSQL install on the hypervisor will lead to me having to reboot the physical instance more often for patches, etc. to MSSQL, causing me to have to bring down the other VMs more frequently.