While virtualization has been a hot topic in IT for several years, many organizations have been slow to implement it with Microsoft SQL Server. This is partly because, in some ways, SQL Server is more challenging to virtualize than other applications.
These challenges include the fact that running SQL Server on a virtual machine (VM) traditionally requires more resources than doing so on a physical machine, and it can often be more difficult to troubleshoot and perform maintenance on VMs running SQL Server. Things could be changing, however, as advancements in virtualization technologies are starting to make companies take another look at SQL Server virtualization.
"Customers now are starting to look at [SQL Server virtualization] very seriously," said Kevin Kline, a technical strategy manager for SQL Server solutions with Quest Software Inc. "I am seeing in more and more places that people are using it."
Consolidation is the most common reason to implement virtualization, and Microsoft has designed the latest versions of SQL Server to help simplify those efforts. SQL Server 2008, for example, includes a set of policy capabilities that you can set to manage different database instances automatically.
On a broader scale, Microsoft is enhancing several of its products to be better suited for virtual environments. "[Microsoft is] serious about virtualization -- there's no doubt about that," said Nelson Ruest, a Microsoft MVP for Windows Server and IT consultant based in British Columbia.
He stressed, however, that Microsoft is still an underdog when compared to more seasoned virtualization vendors like VMware. "VMware has been around for a very long time. They've really done their homework in terms of virtualization. Microsoft is a new player -- they're just beginning to delve into the virtualization market," Ruest said.
In terms of SQL Server, three core products make up Microsoft's virtualization solution set: Hyper-V, System Center Virtual Machine Manager and the database server itself, said Tiffany Wissner, Microsoft director of product management for SQL Server.
"We think of those as our comprehensive and integrated set of virtualization tools that help create your virtualization infrastructure -- really from desktop to data center," she said.
SQL Server with Microsoft Hyper-V
Microsoft's hypervisor technology, which it introduced in mid-2008, has made SQL Server virtualization a more viable option for many customers, said Joe Yong, chief architect with Scalability Experts Inc. "Prior to then, it was [Microsoft Virtual Server]; I won't put that into production," he said.
The second generation of Hyper-V, released with Windows Server 2008 R2, is a much more powerful technology than the original, Ruest said. "[Microsoft has] done a lot of development. They're working very hard at making their hypervisor a world-class hypervisor."
One notable Hyper-V enhancement is that it now supports 64-bit processors, up from 32-bit. "Customers can support an increased number of VMs or take advantage of larger hardware when they're looking at virtualizing their environment," Wissner said.
The new feature that has received the most attention, however, is Live Migration, which enables working VMs to be moved from one location to another inside a physical server infrastructure. Wissner said this should provide customers with greater flexibility and resource management and help them minimize planned downtime, noting that it's one of the most critical tools from a SQL Server virtualization standpoint.
"Hyper-V enabling support for Live Migration becomes a very compelling capability for our customers because it does provide greater flexibility as it relates to operational efficiency as well as being able to help from a [high-availability standpoint]," she said.
Ruest agreed that Live Migration is important, but noted that it would only need to be run when performing maintenance on the host server.
"It's an absolutely essential feature, especially because every second Tuesday of the month you have patches for [Microsoft's] core operating system, so you have to update as [many] of your virtual machines that are running Microsoft technologies as the host servers that are running Hyper V," Ruest said. "[But] I don't know if I would be touting the feature as much as Microsoft does."
He noted that running SQL Server on Hyper-V has some disadvantages as well. Since the product is based on Windows, host servers need to be updated on a regular basis, even when running a Server Core installation, Ruest said, adding, "People that are making the choice of hypervisors will definitely want to look to a technology that requires fewer updates."
In addition, Ruest explained, Hyper-V is a fixed resource virtual machine manager, which does not allow resources to be granted as VMware's hypervisor does. "With VMware, you can provide minimum and maximum memory settings for your virtual machines, which means if a hypervisor can, it will run a machine at the minimum RAM," he said.
Ruest said that when a VM peaks, VMware's hypervisor is intelligent enough (along with the distributed resource scheduling feature) to look at a different physical machine and say, "this physical machine has more resources available so I'll move the VM over here for that purpose."
Hyper-V, however, can't give variable amounts of memory to a virtual machine, and if a VM is set to run at 2 GB, it will always run on 2 GB, he said.
Still, Ruest described Hyper-V as a low-cost solution and a solid product, despite comparisons to VMware's technologies.
"People familiar with Windows platforms, those running small infrastructures or those with multiple VMs who don't want to put all their eggs in one basket, could be successful with Hyper-V. There's no doubt about it, it runs very well [and] it performs very well in terms of certain operating systems that you virtualize," he said.
Management with SCVMM
System Center Virtual Machine Manager 2008 is Microsoft's tool to use to manage both Hyper-V and VMware servers. It's designed to allow administrators to look across all virtual instances -- SQL Server or other applications -- and identify over- or under-used virtual machines, Wissner said.
"Microsoft has a good product in Virtual Machine Manager," Ruest said. "There's no doubt if you are using Hyper-V you should absolutely use SCVMM because it really complements well the whole 'hypervisor-server virtualization' scenario." He added that one of the benefits of SCVMM is that you can use it to set up rules for either results or actions. For example, if a virtual machine hits capacity, an administrator can choose to either receive an alert or to have that machine auto-migrate.
In addition, SCVMM is one of the only products that allows for the management of mixed virtualization infrastructures. "If you have an investment in VMware, you could still move forward with Hyper-V deployment because you could manage both with Virtual Machine Manager," Ruest said.
Microsoft's next step is to produce a dynamic memory capability and dynamic CPU allocation on virtual machines, Ruest said.
"It's really unfortunate that a feature -- dynamic memory allocation -- was touted during the development of [Hyper-V R2] but was not developed with the final product," he said. "That would've put Microsoft much more on the map in terms of creating a dynamic data center."
Furthermore, Yong said that Microsoft needs to address the issue of scale, noting that Microsoft's current tools work best for midsized deployments and four or five VMs. "When the number of CPUs and RAM go beyond that, the [scalability] numbers start to taper off so your returns aren't as great anymore. You'll get a feeling pretty quickly beyond half a dozen VMs in a box if they have anything more than moderate levels of workloads," he added.
Yong said that, overall, Microsoft has most of the basics covered when it comes to virtualization. Now they just need to focus on the "bells and whistles" beyond just running the core virtual machines. "If you don't care about that, then there's really nothing holding you back from running your VMs on Microsoft," he said.
"Good article, but I would make the following points:
- License costs are substantially higher with virtualization versus instances.
- There is overhead with virtualization at the OS level which increases exponentially per VM.
- Performance monitoring is more complex on a server that has virtualization in that it is more difficult to see what is actually happening in terms of I/O, memory and CPU at the physical level.
- Lock pages in memory mitigates most issues regarding the SQL versus O/S memory use issue.
- There seems to be a misconception that VM's have isolated disk configurations. They actually share the physical disk system which may in fact cause performance issues. On most systems this is almost impossible to mitigate.
- There is more flexibility in a test/development environment, but performance statistics can be misleading for extrapolation to production environments. Overall, instances are a better solution for heavily loaded production SQL Server environments."
-- Peter M.