SQL Server Virtualization, Part One: Introduction

Oct 3, 2008 / By Chris Presley

Tags:

Server virtualization is becoming a very hot topic out in the wild, and for good reason. This is a fantastic technology to bring to the x86 platform. When used right, it will solve a lot of problems and potentially reduce Total Cost of Ownership (TCO), while allowing many data centers to become greener by reducing power consumption, cooling requirements and waste (fewer servers = less hardware to dispose of later on). Not every server, however, is a candidate to be virtualized.  When used in the wrong situation, virtualization can be a support nightmare.

I’m going to write a small series of posts on this topic because its something that will affect a lot of us even if you aren’t a DBA. I’m starting at the very beginning, so if you’ve already created virtual templates for all of your core applications, this post won’t have anything new for you. If you’re wondering what about “virtual” is virtual, this is the post for you to start at. Due to the number of different technologies and platforms and and lack of time on my part, I’m going to stick to Microsoft technologies (Microsoft Virtual Server 2005) and write from the perspective of an MS SQL Server DBA. Let’s get started.

What is server virtualization? When I use this term, I’m talking about running more than one operating system on a server. To do this, we must have a host operating system to govern the hardware and run the virtualization software. Then we must have some guest operating systems, which are our virtual servers or guests.

Hardware resources are allocated and policed by the host operating system, which, depending on your virtualization technology of choice the host and guest operating systems, can be a number of different operating systems including but not limited to Windows XP, Vista, Windows 2003 Server, Windows 2008 Server, or any of several flavors of Linux.

Using Microsoft Virtual Server, your host operating system may be your laptop or it may be a server out in your server farm. Your Virtual servers can be managed started, stopped, and paused via the Virtual Server Administration Website which is installed on the host when you install MS Virtual Server. (Note that you need to have IIS installed.) I have found for best results you should use Internet Explorer rather than Firefox to administer your virtual servers as, even with the IE Tab extension installed, there are a few functions that just didn’t work right.

In production, I think that virtualization works really well to replace application servers, web servers, and in some rare cases even database servers. The reason I say rare cases is that Microsoft SQL Server has had virtualization built in for quite some time via the ability to create separate instances. When creating separate instances, you can separate almost all aspects of the database server without the same licensing and performance considerations you would have in creating separate virtual servers. By virtualizing database servers you also increase overhead to administer them; I can’t think of many situations where this would be beneficial.

In non-production, I really like using virtual database servers. They provide a great way to quickly deploy clean environments to test anything, from the installation of service packs, to replication, to direct modifications to the system tables.

By taking it a step further and creating templates for your virtual servers, you can very easily and quickly create clean, uniquely-configured environments of any version of SQL Server, or sets of standard configurations to quickly allow yourself or your users to try out just about anything.

The next posts will be simple step-by-step HOWTOs covering:

  • how to to create and manage your first virtual servers,
  • how to create templates of your virtuals,
  • and licensing considerations.

Please watch for Part Two soon.

Leave a Reply

  • (will not be published)

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>