|Executive Summary: Michael Otey dispels some myths surrounding SQL Server virtualization, including the notion that all virtualization platforms are created equal. He explains the high-level differences between the hosted, hypervisor, and virtualized OS platforms.|
Because SQL Server can be I/O intensive, it hasn’t been at the top of the list of server types you’d want to virtualize. However, with the recent release of Microsoft’s Hyper-V and VMware’s new ESX Server 3.5, SQL Server virtualization is becoming increasingly interesting. Performance for many deployments is proving to be perfectly acceptable, especially in light of the benefits virtualization can offer—such as increased hardware utilization. One remaining concern about SQL Server virtualization is that confusion has grown around virtualization itself. I want to clear up some of that confusion.
First, some people think that the expression “virtualizing SQL Server” implies that you have to do something to SQL Server to make it run in a virtual environment. That’s not the case. From a management and implementation standpoint, there’s absolutely no difference between SQL Server running in a virtual machine (VM) or SQL Server running on a physical box. To learn more about virtualizing SQL Server, see “Virtualizing SQL Server,” May 2007, InstantDoc ID 95349.
Next, confusion arises around the difference between named instances (a SQL Server feature that is not widely understood) and virtualization. Named instances allow you to run multiple copies (or instances) of the SQL Server database engine simultaneously on the same server. You typically find named instances in hosting environments. Named instances share the same server and OS and provide better performance than virtualized servers because they run directly on the physical server. SQL Server virtualization enables different virtualized SQL Server instances to run with different hardware and OS configurations and provides more flexibility for recovery because the VM containing SQL Server is insulated from the underlying hardware platform. However, because SQL Server in a VM runs on virtual hardware, the performance doesn’t match the performance that named instances can achieve running on physical hardware.
One source of confusion is that there are three different types of virtualization, and not all virtualization platforms are created equal. Hosted virtualization products, such as Microsoft Virtual Server 2005 and VMware Server, work by running virtualization software on top of a host OS. A new generation of hypervisor-based virtualization platforms provides a small special-purpose layer of software, called the hypervisor, that runs directly on the hardware, isolating VMs from the underlying OS. By running directly on the hardware, a hypervisor provides better performance, reliability, and security than hosted virtualization solutions. Examples of hypervisor-based virtualization are VMware ESX, Microsoft Hyper-V, and Citrix XENServer.
A third, less well-known type of virtualization product uses OS-level virtualization. With OS-level virtualization, it’s the OS that’s virtualized instead of the hardware level. OS-level virtualization offers performance and hardware utilization benefits just as hypervisor-based virtualization does, but its ties to the underlying OS makes it less flexible than both hosted and hypervisor-based virtualization products. OS-level virtualization has the advantage of low overhead, but it also requires each virtual OS (or container) to be the same and the hardware configuration for each container to be the same. Parallels Virtuozzo Containers is an example of an OSlevel virtualization solution.
I hope I’ve addressed some of the common questions and misconceptions that surround SQL Server and virtualization. Once you understand the available virtualization options for SQL Server, you can start to examine where they might fit into your environment. If you have questions about virtualizing SQL Server or have a story to tell about your company’s move to SQL Server virtualization, send us an email at firstname.lastname@example.org or visit our SQL Server forums.