There lots of questions and opinions on how to leverage virtualization to achieve server consolidation. You may hear statements like: never virtualize product X or Product Y should always run on dedicated hardware. I am admittedly a big proponent of virtualization as I believe it is becoming a real enabler for dynamic management of infrastructure. In this post I first describe a process to consolidate and optimize your infrastructure then toward the end provide information on how coming improvements in virtualization with Windows Server Virtualization (Longhorn timeframe) and System Center Virtual Machine Manager (beta this quarter) will impact the analysis.
Most customers and even some of us inside Microsoft over-complicate or make seem like a black art the question of what workloads to virtualize. To me the question and analysis is no different from whether I should buy 2 or 4 processor box; select AMD or Intel, etc. The analysis should be exactly the same and performed for each workload. The approach I take if starting from scratch to consolidate is:
1. Collect at least a month of performance data for each workload (if your business is seasonal, pick your peak month)
2. Document test cases for each workload (ie. Send/Receive message, Backup/Restore DB, etc)
3. Virtualize all workloads except:
- Those that Microsoft will not support on a VM
- Those that vendor <vendorname> will not support on a VM
- Those whose avg/peak performance requirements exceed the current single VM’s 1 proc/3.6GB RAM/SCSI VHD limits
- Those that can’t function in a VM for any validated technical reason (HW, SAN or cluster requirements, etc)
- Those that fail any standard test cases for the workload
If you follow that approach, everything that can be virtualized and still meet requirements will be virtualized. Utilize the collected performance data to distribute the VMs across appropriate hosts to balance the perf load. Those workloads which can’t be virtualized would be on a dedicated box sized appropriately. That is about as optimized as you can get. When System Center Virtual Machine Manager is released, it will help automate this process of collecting performance data for running machines, determine workloads that can be virtualized, migrating from physical to virtual, and selecting appropriate hosts for VMs.
At the end of the day, given the direction our product groups are going in terms of support for running in a VM, I think only performance is going to be the primary reason why some workloads can’t be virtualized. When Windows Server Virtualization is released after Longhorn, some of the key variables in the analysis I laid out above will change. Currently VM’s are limited to a single processor and 3.6GB of RAM. With Windows Server Virtualization, these limits will be increased dramatically with support for large SMP, memory, 64 bit, etc. and hence the workloads you can virtualize will increase as well. For the current publicly available information check out our materials from WinHEC 2006: