Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Disclaimer: I'm a developer and I know very little about setting up servers, but in small shops, responsibilities tend to bleed over.

We've just got a new server to run SQL Server on, and we're trying to decide how to best allocate responsiblities for different servers. We also have a bunch of light Windows Services that currently run on the same server as SQL Server. In comparison, SQL Server works much harder than all of the Windows Services combined, so we're trying to maximize the amount of resources allocated to it.

We are considering running two virtual environments on the new server, one for SQL Server and one for the Windows Services. Does this give us any gains over just running everything on the same physical server with no virtualization? The thought is that if we can create a virtual environment with limited resources for the Windows Services, then most of the resources could be dedicated to the SQL Server environment, even when the Windows Services do have a spike in resource needs.

At this point there is no option for running them on separate physical servers.

share|improve this question
add comment

6 Answers

up vote 3 down vote accepted

Performance wise, this actually increases the load on your server. You are still running a hypervisor of some sort, which takes up CPU/RAM etc. Also, Windows is perfectly capable of balancing the workload between applications.
However, I agree with Jes, that it will provide you isolation between your SQL environment and the rest of your Windows services, but

  • How often do your other services spike?
  • Are any services in "development" that are periodically run with bugs in them? or is your SQL providing backend for a development application?

If your services spike often or you are developing on either "box", then I would virtualize and take the hit on performance in exchange for increased stability.

share|improve this answer
add comment

I would think, in this case, you might be served well by virtualizing. Keep in mind I'm familiar with VMware (I know there are other options). Using ESXi, you can create several servers and divvie up your applications, that way you are at less a risk of all applications crashing if one hangs the server. Also, you can specify your resource limits (which is what you want), putting caps on the amount of resources the basic servers can utilize while allowing the SQL server to grab as much as possible.

Jes

share|improve this answer
add comment

I think virtualize only when you have servers that sit idle most of the time with a small to medium load some of the time. Don't virtualize sql server unless it's a tiny database with few users. I wouldn't virtualize critical servers if your virtualization product has to run a full host OS. e.g. domain, dns on a full host.

It can be good to virtualise when you're running test environments - you mentioned you're a developer. In the end, your decision. I believe the various products such as vmware do allow you to convert between a virtualized system and not so you can change your mind later if you need to. It's just inconvenient if you've already commisioned it and you have users running off them.

share|improve this answer
    
personally, I disagree with several points here, but I can see the reasoning behind them :) –  warren Sep 29 '09 at 6:54
add comment

We run about 65 virtual servers on our 5 host ESX environment. You would be well served by virtualization. There are many tools out there to try and help you 'analyze' if you applications are good candidates for virtualization.

Brent Ozar has put some very good resources together that might help you on your journey. Check out his article on Virtualization Best Practices. You will see links there for both sides of the coin.

You can, of course always ask us all any more questions if you need clarity or help.

share|improve this answer
add comment

One thing you might consider, especially if you're running Windows Server 2008, is installing Hyper-V and only virtualizing the "extra" Windows services. You could install SQL Server on the OS itself, getting full performance directly on the hardware and then run your "light" services in isolated VMs inside Hyper-V. The downside here is that you'll need multiple licenses if you're running Windows Server Standard, or you'll have to buy Windows Server Enterprise.

share|improve this answer
add comment

The hardware resources that you would use just to run the second, virtualized Windows Server will likely be greater than the resources required to run the "light services" in the non-virtualized scenario.

Running multiple virtual machines will always incur a performance hit, since the simple math of it dictates that the resources available are divided amongst x consumers. The greater the value of x, the less available to each consumer.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.