I'm sure that Dennis, being a power user of VMWare, can list a hundred things, but I'm going to talk about a couple. One that is, IMHO, the number one reason developers should use it, and another that I experimented with briefly tonight.
This is a very cool feature, and the concept works like this...
- Install an operating system in a VMWare disk
- Snapshot it
- Install an application on the virtual OS
- Snapshot it
Now, the reason this is cool is twofold.
First, you don't have to consume the space on your hard drive for another full installation of the base OS. (And feel free to correct me if I'm wrong on this.) So if I decided to install Excel 2003 on my snapshot, for example, I'm increasing my storage needs by the size of the Excel install, and not the another full copy of the base OS as well.
Second, you can revert to a prior snapshot and branch off at any point. It also gives a really nice little tool that gives you a visual of what you have. Here's my current testing platform snapshot tree:
As you can see, I have a Windows XP install, and a few different options to choose from. In the current view, I was testing some PDFCreator stuff on Office 2003. I could just as easily flip back to the base XP image and install Office XP or 97 if I needed to test something on that platform. I don't need to reinstall a full clean OS... I already have one to start from. So I can get my install up an running very quickly.
This is an incredibly robust feature in VMWare, and SO easy to use. The only hints that I would give you if you've never done this before are these:
- Shut down your virtual machine before you take the snapshot. You CAN snapshot a running VM, but it then creates huge files as it has to save the running state of the machine. They are way more trimmed if the machine is off.
- To get the best performance now and in snapshots based off earlier snapshots, always defragment the image inside the VM and shrink the disk before snapshotting. This keeps the image as small and efficient as possible.
While it is possible to do a similar thing using Microsoft's Virtual PC, (hereafter called VPC,) it's not nearly as easy to set up, nor to comfortably manage. VMWare has this set up so that it is intuitive, and easy to read. With VPC, in my experience, it's really easy to lose track of what disks are what, as there is no UI that tells you.Â If you are using Virtual PC though, I linked to an excellent article on this subject in my first post about virtualization about a year ago.
One of virtualization's big strengths is that it moves operating systems into a hardware agnostic environment. Basically, this means that VMWare/VPC translates between your host OS's drivers and the generic drivers needed in the VM. This allows for disaster recovery, as you only need to back up your VM, and you can reload it on any machine that has your virtualization (VMWare or VPC) software on it. It also allows for the next thing I want to talk about... pre-built images.
Last week, I saw a page (can't remember where) that pointed to a product called Deki Wiki. The only remarkable thing to me at the time was that it was provided in a VMWare image for you to download and use immediately. I kind of remarked at the time that it was a pretty neat concept. Well... yesterday at work it occured to me that a wiki might be an interesting tool to build procedure manuals at work. If everyone in the company could be set up with rights to create, search and update procedures for tasks, maybe we'd stand a chance of keeping our docs up to date. I figured I'd download it and give it a try.
The download was pretty big, but once in an unzipped, all I had to do was double click the vmdk file. It launched a linux server, I opened up my web browser, put in the IP, and away I'm playing with their wiki software. Pretty cool really. I didn't need to learn a thing about linux, didn't have to install a new program on my website, or anything.
It's not like this is the only one either, but it is the first open source project I came across. For MSDN and TechNet subscribers, we can download pre-built Virtual PC images of servers and such as well. And, of course, VMWare has a way to port Virtual PC images to VMWare workstations.
I'm curious if any other VMWare users out there have picked up any open source projects like this?