To virtualise or not to virtualise? I thought I would provide you with some insight into my SharePoint infrastructure setup and hopefully place some minds at ease when it comes to virtualisation and SharePoint.
First and foremost, all of my servers are running in a virtual environment and have been for quite some time. Virtualisation is handled by VMware Infrastructure v3.5 across 3 beefy ESX Hosts running dual Quad Core Xeon processors with 32GB RAM each connected to a Fibre Channel Storage Area Network with 15K Disks. The ESX hosts are also housing other virtual machines outside of the SharePoint farm. VMware Infrastructure is providing native High Availability to my entire infrastructure.
My SharePoint 2007 farm was born almost 18 months ago and initially comprised of only 2 servers. The farm was servicing approximately 100 users with the following specifications/roles;
Role: SharePoint Server 2007 Applications Server and Web Front End 64 Bit
Windows 2008 Enterprise Edition x64
Single vCPU
6GB RAM
Role: SQL 2008 Standard Edition 64 Bit
Windows 2008 Enterprise Edition x64
Single vCPU
8GB RAM
Within 12 months of running in the above configuration we very quickly expanded our SharePoint setup to a “Medium” Farm configuration to incorporate an additional 250 users.
We simply added two additional Windows 2008 Enterprise x64 servers which were configured utilising Windows 2008 Network Load Balancing. These 2 servers were easily incorporated into the existing SharePoint farm and have become dedicated Web Front End and Query Servers servicing user requests.
Specification is as follows;
Role: 2 x SharePoint Server 2007 64 Bit Web Front End
Windows 2008 Enterprise x64
Single vCPU
4GB RAM
My initial lone SharePoint Server has now become a dedicated Indexing Server with more frequent crawls scheduled and a dedicated Applications Server for Excel Services. My farm now consists of 4 servers and is servicing over 350 users.
A rule of thumb with VMware ESX vCPU allocation is to always begin with a single vCPU. A physical machine gets a different experience than what multi-cpu does under ESX, because of the way ESX handles multi processors and how these are scheduled. The simple reason is that when you assign multiple vCPU you are trying to split the CPU time between those virtual CPUs which in most cases will add more overhead.
Memory is a different kettle of fish and I have found that more is better in a virtual or physical environment for that matter, especially when running 64 Bit Applications and Operating System. I would allocate as much as you can within reason.
For storage and Disk I/O consideration, RAID 10 works best, especially for your SQL databases.
I have found that the above resource allocations and configuration works well and is a great benchmark to begin with when configuring your Small or Medium SharePoint farm in a virtualised ESX environment. We definitely have not experienced any bottlenecks with our setup.