Do you hate virtualization, or do you dislike it just enough that you're not moving your company in that direction this year or any other? Or do you not see what all the hype is about concerning virtualization, since its price can easily exceed that of standard physical servers?
But, have you considered it for prototyping? Prototyping involves installing and testing applications, patches, service packs, new or beta software and working out compatibilities between misbehaving services. Virtualization makes financial and practical sense for prototyping, and testing your services prior to deployment.
Why tie-up valuable hardware resources for "test" systems, when you can pass off testing to virtual machines that, once you have the virtualization hardware up and running, cost you nothing or next to nothing to provision and run. Efficiency is built into virtualization through templating, cloning, rapid provisioning and snapshotting.
Templating refers to creating operating system templates as a "golden" images for a virtual machines. It is the base system, including patches, service packs, support files and additional components needed, on which you'll build your services. A template provides a common and consistent starting place. Using an operating system template, you can create a new virtual machine and have it up and running in less than 10 minutes.
A virtual machine clone is exactly that, a clone or copy of an existing virtual machine. Why clone a virtual machine instead of using a template to create a new one? If you're working with a production system and you install a patch that breaks some functionality, you don't want to spend the time to restore from a backup or deal with a long period of downtime to make its services available again.
Cloning provides a way to patch and test a live machine image with only a short disruption of productivity. Here's how it works:
- Make a copy of an existing virtual machine
- Start the clone disconnected from the network
- Perform the work that's needed
- Disconnect the running system from the network
- Connect the now-enhanced clone as the primary production system
Provisioning a physical system, in a large environment, is a pain. You must involve multiple groups, engage a huge number of resources, go through several approval steps, multiple meetings, wait for the hardware, trust someone to plug everything in and power it on. It can take weeks to provision one system from "Hey, we need a new Web server" to "Hey, our new Web server is up and running."
Virtualization removes much of that painful process. Sure, you still must go through a few meetings and engage resources, but when the system administrator hears the word, "Go" the time needed to start up a new virtual machine from a template is minutes away. Provisioning takes on a whole new look with virtualization. For test and development systems, you might have standing approval for a limited number virtual machines that administrators may create at will.
A snapshot is a virtual machine copy taken to "freeze" the state of that virtual machine at a particular point in time. For example, your system experienced a security compromise and you must remediate it. You could take the original system offline, fix the problem and restore it to its original task, possibly sending it through multiple reboots and risking failure with each fix or reboot. A snapshot allows you to capture that system live in its current state to which you may return if something goes wrong with the original. A snapshot, in Windows NT terminology, is a "last known good" configuration. Or, in the case of a compromised system, a last known configuration. Once the original system goes back into production, the snapshot may have forensics performed on it to determine the "what, where and why" of the original system's compromise.
This isn't the only use of snapshotting. Some system administrators take regular snapshots as a precautionary routine instead of relying on traditional backup and restore methods.
Even if you don't see virtualization's value for your business production infrastructure, it's easy to see how it's a practical option for test, staging and development environments. Virtualization is an agile answer to a lethargic process. There's nothing quite like enabling a team to go forth and show how much more work it can produce without all the corporate red tape and administrative obstacles.
Ken Hess is a freelance writer who writes on a variety of open source topics including Linux, databases, and virtualization. He is also the coauthor of Practical Virtualization Solutions, which is scheduled for publication in October 2009. You may reach him through his web site at http://www.kenhess.com.