What you need to know to get it right
Server virtualization technologies have become so commonplace that they're the de facto standard for server deployment in many organizations. It's becoming more and more common to run into data center environments that operate with the assumption that all new servers will be deployed as virtual machines (VMs), unless there's some specific reason not to virtualize. This is a significant change from even just a few years ago when the situation was reversed and servers were deployed on physical equipment unless there was a specific reason to virtualize.
So, what about Microsoft SharePoint? Should you virtualize some or all of a SharePoint environment and take advantage of the consolidation, optimization, and flexibility options that a virtualization infrastructure provides? The reality is that SharePoint environments, particularly those running SharePoint Server 2010, can be robustly deployed on virtual servers as long as sufficient resources are allocated to virtual guests and the virtual hosts are scaled correctly. Deploying SharePoint improperly in a virtual environment can lead to slowness and other performance problems, and can decrease management's confidence in virtualization as a whole. So, before you virtualize SharePoint, it's vital that you know the requirements and design criteria for both the virtualization technology and SharePoint.
Virtualization Infrastructure Requirements and Recommendations
The key to a stable and high-performance virtualized SharePoint environment is using the proper architecture in the virtualization hosts. Out-of-the-box settings and slow disks might work for a test environment, but specific requirements need to be met when building the host system for proper performance to be achieved. Therefore, be sure to follow these minimum requirements when you design the virtualization host infrastructure:
- The processors must support hardware-assisted virtualization, which is available in processors that include a virtualization option. Specifically, this means processors with Intel Virtualization Technology (Intel VT) or AMD Virtualization (AMD-V) technology.
- Hardware-enforced data execution prevention (DEP) must be available and enabled.
- SharePoint guests must be deployed on a Hyper-V hypervisor or a third-party hypervisor that's part of the Server Virtualization Validation Program. (For information about this program, see the sidebar "Microsoft's Virtualization Support Story.")
- Sufficient memory must be allocated for the host OS. If you're using Hyper-V, you need to reserve at least 1GB of RAM for use by the Hyper-V host. If you're using a third-party hypervisor, check with the individual provider to determine the minimum amount of memory required.
- A dedicated NIC must be allocated for host management. This NIC must be separate from the NICs used by the VMs.
- Use multiple storage arrays or sets of disk spindles. Best practice is to allocate a dedicated storage array or set of disk spindles for the host OS, another for the guest OS, and at least two more for logs and database volumes in virtualized SQL Server sessions.
- Fixed-size or pass-through Virtual Hard Disks (VHDs) must be used. All VHDs used by SharePoint servers need to be either fixed-size or pass-through (raw) disks that are directly connected to a volume on the host storage. Pass-through disks give you the fastest performance, which is highly recommended for SharePoint servers. Fixed-size disks are faster than dynamically expanding disks, which can suffer performance hits when they're resizing.
- A 2:1 ratio for the number of virtual processors to physical cores must be used. A virtual host that has too many allocated virtual CPUs can be overloaded and perform poorly. Therefore, you need to have a 2:1 ratio (or less) for the virtual processor to physical core ratio. For example, if your host is a 2-processor quad-core system (8 cores total), the maximum number of virtual processors that can be allocated and running at any one time is 16. If each VM is allocated 4 virtual processors, the number of running VMs is capped at 4 on that host.