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 the virtualization 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.
Another area of consideration for the physical server is the network interfaces. In many cases setting these up may be as simple as using one or two network interface controllers (NICs) to support the entire virtual-server environment, but if your ethernet switch allows for link bonding, or link aggregation, it's a good time to take advantage of that feature and thus increase the bandwidth available to your virtual servers. By bonding two or more gigabit network interfaces, you create a larger virtual network interface that can support greater bandwidth to users and to other physical servers elsewhere on the network. Many midrange ethernet switches support this feature, so take a look at what you have to determine if this approach is viable.
Lacking any form of link aggregation, you may find that you need to dedicate a network interface to a very busy virtual server, which can be done--but in that case you may quickly run out of physical interfaces to use. Thankfully, gigabit network interfaces are relatively cheap, so if you think you might need to take this step, it's best to plan ahead and build a server with at least four gigabit network interfaces.
The final question concerns power supplies. Generally speaking, you can always build out a server with a single power supply; but if you're going to be running quite a few virtual servers on a single host, you might want to invest in the redundant power supply option. Virtualization at this level is necessarily a matter of placing several eggs in one basket, so beefing up the stability of that basket can only help in the long run. This step is not a requirement, but if the budget exists, it's a worthwhile option.
With this foundation of at least one multicore CPU, a significant amount of RAM, and a RAID 5 or RAID 6 array of local disks, you will have built a robust small-environment virtualization host server. So, what software will it run?
You have several free choices to look at, especially for a proof-of-concept or an initial foray into the virtualization world. VMware offers a free product in VMware Server, which runs on top of Windows or Linux. This isn't a "bare-metal" hypervisor in that it relies on the underlying operating system to provide key requirements for normal operation. Since this method is several steps removed from the hardware itself, it isn't as fast or fluid as other types of hypervisor, but it is usually easy to install and use. For a completely cost-free approach, installing Linux on the server and running the Linux version of VMware Server may be an option. Otherwise, installing a licensed copy of Windows Server 2003 or 2008 on the server and running the Windows version of VMware Server is another alternative.
VMware also has a free, bare-metal hypervisor, VMware ESXi. This powerful product is built on the same baseline as VMware's larger, expensive offerings and provides stable and responsive virtualization, but it has some constraints as to the hardware it can run on. VMware has a hardware-compatibility list that you should adhere to when buying or building a virtualization host server if you plan to use ESXi; if VMware ESXi doesn't have a driver for certain hardware in the host system, it may function poorly or not at all.
Microsoft's Hyper-V is yet another virtualization alternative, and it may be a comfortable fit for highly Windows-oriented networks. Technically it isn't free, as it requires the purchase of Windows Server 2008 R2, but it offers a simple interface and is well integrated into the OS. If the virtual servers that will run on the host are Windows Server 2008 as well, you may find the licensing attractive. Purchasing one copy of Windows Server 2008 R2 permits up to four virtual Windows Server 2008 servers running on that copy of Windows, for the price of a single license. If you're looking to move to Windows Server 2008--or are already there--choosing this product may be a good financial move.
You'll encounter other virtualization options as well, such as Citrix's XenServer. The free version has a significant amount of features that may not be in VMware's free offerings, such as multiserver management. XenServer isn't as mainstream as the others, but it's a viable option, it can be downloaded and installed for free, and it does not require an underlying OS or OS license.
The beauty of virtualization is that you have room to experiment, and can take advantage of virtualization features such as virtual-server snapshots, which capture a point-in-time status of a virtual server and save it. Should a problem occur later on, you can roll back to that snapshot, upon which the server reverts to the previously known good state. This feature is especially helpful when you're applying software updates and fixes that may have unintended consequences.
With a relatively cheap physical server, you could try out several virtualization packages for free before deciding on one. In fact, you may be able to use a multicore desktop system at first, before buying any hardware; just make sure it has plenty of RAM.
No matter what your decision, once you begin virtualizing even a small number of servers, you'll wonder how you ever lived without it.