Over the past few years, I’ve been introduced to virtualization and have started to use it in my everyday work environment, especially with regards to using it heavily in my test environments. Here’s some of the uses I’ve found for it in the past couple of months:
Live backup testing – I’ve test my work backups on a regular basis, and it used to be much more of a chore. Before I started using VMs, my workflow went something like this:
1. Get a couple of test boxes (one Intel, one Power PC) to simulate my servers.
2. Partition the internal hard drive into however many boot drives I needed.
3. Clone the hard drives with a standard server build from another hard drive.
4. Boot the test box.
5. Restore the needed files from backup.
6. Test my backup.
7. Did it work? If yes, move on to next boot drive. If no, re-clone hard drive and try again.
8. Run all tests until successful.
9. Write it up, send it on to the Powers That Be.
Now, I still need to do this workflow for my Power PC servers. For my Intel servers, the workflow now goes something like this.
1. Fire up VMWare Fusion on a box with *LOTS* of RAM.
2. Clone as many virtual servers as I’m planning to test.
3. Snapshot the servers before boot.
4. Boot the test VM.
5. Restore the needed files from backup.
6. Test my backup.
7. Did it work? If yes, rollback to pre-boot snapshot (which both shuts down the VM and preps it for use the next time I need to test backups), and move on to the next VM. If not, rollback to the pre-boot snapshot and try again.
8. Run all tests until successful.
9. Write it up, send it on to the Powers That Be.
So what? Seems like the same number of steps. True, but step 7 is now much faster and (if the test is successful) allows me to prep for the next round of backup testing down the road. Cloning a hard drive can take about an hour. Cloning a VM (because you’re essentially copying a file) is more in the neighborhood of minutes. Rolling back a VMWare snapshot is a matter of seconds.
Test environments – I can’t overemphasize how useful VMs and the ability to make snapshots have been to me in my Mac OS X 10.6.x testing. Using a VM and remembering to snapshot allows me to completely destroy a box when a script goes wrong, but ten seconds later have a working test box again when I’ve rolled back to my previous snapshot.
Flat-out hosanna-singing rear-saving – I recently had a project where after the start of the project, disaster struck in areas I had minimal control over. This project involved importing data from a non-Microsoft calendar/contacts system to an Exchange 2007 server. Broken down into its component parts, it needed a Windows XP or Vista box, an Exchange 2007 SP1 server and an Active Directory domain controller. Without going into too much detail, we had some trouble getting good data out of this process. We discovered this only after we started the transition (i.e. told everybody involved “The old system is retiring and you’re moving!”, done the training, announced the migration dates, got the database we needed from the vendor and actually started the migration process.) Coordination between the organizationally-separate elements of the project broke down, the vendor was less than helpful, and we needed a Plan B fast!
VMWare to the rescue.
VMWare allowed us to build all three boxes that we needed fairly quickly (both servers were created from existing Windows Server 2003 R2 templates.) It also allowed us, at each critical step, to snapshot and save our changes. So when the database conversion testing screwed up at one point and we had 147 Exchange mailboxes filled with garbage? Rollback; mailboxes are pristine once more and we were ready for the next test. It was still a lot of work, it still ate the whole weekend (I was at the office with my coworker/savior a full 24 hours over the course of Saturday and Sunday), but it would have been impossible to have finished by the start of business on Monday (our deadline) without using VMWare. Flat impossible.
Is it always the answer? No. When you have resource-intensive services that demand every erg of power and whit of drive speed that a server can deliver, you’re better off with an actual box (an Exchange mail server is actually a good example here of something that *should* be on an actual box; fortunately, our power and speed needs were low during this project.) However, for other tasks that may be less “need for speed”, going the VM route can often be a great choice.
Image may be NSFW.
Clik here to view.

Clik here to view.
