If there's one technology that can greatly improve computing environments of any size, it's virtualization. By using a single physical server to run many virtual servers, you can decrease operational costs and get far more bang for your buck. Whether your company is a 2-server or 2000-server shop, you can benefit from server virtualization in a variety of ways. The best part? You can do it cheaply and easily.
The reasons to virtualize even a small infrastructure come down to ease of administration and cost reductions. Cost reductions come from cutting down the number of physical servers, thus reducing the power and cooling requirements, but they also come in the form of greatly reduced expansion. Rather than having to purchase new hardware to support a new business application, all you need to do is add a new virtual server.
If your business has only a single server, virtualization isn't likely to buy you much, but if you have more than two servers or if you plan on expanding anytime soon, virtualization can likely make a difference.
It's impossible to purchase a server today that isn't multicore, but many small-business server requirements simply don't call for that much horsepower. The end result is a relatively expensive server that does very little but still consumes power and generates heat. That's why using a multicore server--that is, a server that has 4, 6, or 12 processing cores on a single CPU--to host several virtual servers makes sense, no matter what size your company is.
The Host Server
The key to successfully virtualizing servers in a smaller environment starts with the physical host server, the box that will run multiple virtual servers. Even though this one server will be responsible for hosting possibly dozens of virtual servers, it will require far fewer CPU resources than you might assume.
Depending on the virtualization software in use--VMware, Microsoft's Hyper-V, Citrix XenServer, or another package--you will likely be able to run a surprising number of virtual servers on a four- or six-core CPU. The reason is that generally most servers run near idle a significant portion of the time. When they are tasked with work, their resources tend to be spread out among the RAM, CPU, disk, and network input/output, with only a subset of the virtual servers actually requiring significant CPU resources. By taking advantage of this law of averages, you can consolidate a considerable number of physical servers onto a single host server.
That isn't a hard and fast rule, however. Some servers, such as database servers, run heavier loads on a more consistent basis, and may not be suitable candidates for virtualization in a smaller infrastructure. It all depends on the hardware resources available to the host server, on thevirtualization software features, and on the requirements of the virtual server. Fortunately, setting up and testing these requirements beforehand isn't difficult.
The first order of business when approaching a small virtualization project is to choose the hardware. Generally you'll start out with only a single server, so try to get the best mix of resources possible within budget.
A good rule of thumb is that having more cores in the host server trumps higher clock speeds, so if you have a choice between a 4-core CPU running at 2.93GHz and a 6- or 12-core CPU running at 2.4GHz, you'll be better off with the latter option. That's because the capability to spread the virtual-server load across more CPU cores typically translates into faster, more consistent performance across all the virtual machines. Think of it as needing a dump truck (which isn't that fast) instead of a sports car (which is faster but can haul far less than the dump trunk can).
RAM and Storage
Once you make the CPU decision, the next area to consider is RAM. Virtualization host machines can always use more RAM, so get as much as you can, and select the fastest RAM possible. It's relatively straightforward to oversubscribe CPU resources--or allocate more virtual CPUs to the virtual servers than physically exist within the host server--but it's far more difficult to oversubscribe RAM. The more RAM you have available, the more virtual machines you'll be able to run.
That's especially true if you're running certain hypervisors (which are responsible for managing all virtual servers) that do not offer shared memory features. Some require that a fixed amount of RAM be presented to each virtual server, and that the RAM is allocated in its entirety. Other, more advanced setups can determine when identical memory segments are present in multiple virtual servers and map that memory accordingly, allowing more RAM to be allocated to the virtual servers than exists within the host. Either way, always go for more RAM when possible.
The third factor to consider is storage. In smaller environments you may not have a storage area network (SAN) or a network attached storage (NAS) device to hold the virtual server images, so the host server will be responsible for the task. In that case, more disks are better, within reason. For general purposes, SATA drives in a RAID 5 or RAID 6 array will suffice, although SAS drives will always provide increased performance. If at all possible, ensure that the physical server has a RAID controller that supports RAID 5 or RAID 6, and plan your storage accordingly.