Improving Hosting: 4. Virtualization
There are some downsides to Virtualization. It introduces an extra level of indirection between the OS and the hardware layer, so it has some impact on performance. For example, while many people use virtualization for web servers, the approach is not necessarily recommended for dedicated database servers which can show a noticeable performance hit from the extra layer between the database software and the hard drive.
There are also plenty of benefits. Talking with hosters that use virtualization widely, the benefit almost everyone agrees on is that having a pre-configured image makes it MUCH quicker to provision a server as you don't have to install and configure the OS and applications - you just get one image built and then copy the image to the machine. Of course, building a completely new machine still requires configuring a base OS unless you use something like the GSX product from VM Ware which allows for quicker and easier provisioning of servers - but at a cost of having to run approved hardware and pay about $1,000 for the software per server. The base VM Ware product is free, but with its requirement to configure a base OS manually and the lack of support for things like live backup images of running machines, it is a trade off. Of course there is also the benefit of being able to consolidate multiple lightly loaded physical servers into a single machine, so if you have a number of apps that need to be on different "servers" but don't need the whole power of the server, virtualization is an obvious solution.
Clearly with enough servers, virtualization pays for itself very quickly. The same if true if it allows you to consolidate multiple servers or if you have complex configurations required to get your OS running. What I'm trying to decide now is whether it makes sense to go with something like VM Ware for our hosting needs.
My issue is that I need multiple physical servers for redundancy purposes, but I don't have that much load, so I'm tempted to use a handful of $2000 SuperMicro machines with mid level specs (they've served us well to date). From a load perspective we could probably run all of our clients on a single web server and single database server at the moment, and as we port all of our projects to the latest version of our software it is very easy for us to run them all as shared sites on a single physical or virtual server, so we really don't need virtualization for the consolidation benefits.
From input to date I get the impression that we probably "should" be using Virtualization, but with a relatively small number of servers and the fact that we're going to have to install the base OS anyway on each new box, I'm wondering how much provisioning time VMWare would really save us if we're only planning on bringing onstream say 3-4 new servers a year.
I'd really appreciate any input from people who have used the free version of VM Ware in production. How has it worked out for you? Any unanticipated problems? What benefit did it end up providing? Any unexpected upsides? What was the learning curve? Is it worth the effort?!
Any input much appreciated!


(Btw we've been running several SQL 2005 server installations in virtual servers on our ESX servers for a while now, without problems. The problem with DB servers is you really never know what someone else means by "large" or "heavy load" in these settings, but ours are definately low-utilization DBs for internal use with only a few hundred edits and requests in the thousands pr day. For the huge analysis stuff we have a dedicated box with many spindles and 12GB ram)
Thanks for the clarification!
Personally, we've had no issues using the VMWare Server free edition for development and production. For obvious reasons we dont use MSSQL/reporting services on virtual servers and we run these as dedicated for various reasons.
Running scripts to back up virtual servers in essential. I would also highly recommend buying the Virtual Centre software as this centralises your management.
I think I covered this a little more in my off-list email.
My suggestion is to proceed slowly, maybe do a technology proof with one server to learn the good and the bad of virtualization. Then you can make an informed decision based on your experiences.
For a heavy load database server i think a dedicated hardware+os server is better in performance than a virtual one.
If you prefer a virtual server for some applications than a physical one then prefer virtualization built in directly on hardware (like the ESX supervison) than using virtualization software over an operating system.