As many of you know, I'm a big fan of virtualization -- especially from VMWare. They've been locking horns with Microsoft for a while over this market - both traded shots with inexpensive workstation products, and both have now reached a point where there are free versions of their software, and publicly-available pre-built images are starting to show up. Not only is this validation of the market segment, it's great for us consumers, but do you really have to set up both VMWare and VPC / Virtual Server in order to run all the virtual machines that are becoming available?
So, what's the difference between these products, anyway? There's a lot in common in the most recent releases, but the scenario at this point is another case of Microsoft trying hard to catch up in a product category where they entered late and lag the competition. Microsoft may eventualy win the day in virtualization, but right now, they're still playing catch up.
I installed MS Virtual Server 2005 about a week ago because the IT manager in our company has decided he likes it better for our virtualization needs, and I figured I'd better see what all the fuss was about. Shortly after I installed it, however, I came across an MSDN download for a VPC image pre-built with Visual Studio Team System server and client -- perfect for some work I was doing to prepare for a VSTS rollout here. I downloaded the image, obviously, so I've now got some experiene with both of these tools.
Here's what I'm seeing so far:
- For a workstation setting, VMWare is a more "direct" experience. Opening a VM in VMWare Workstation or Player results in a machine running visibly in a window within the VMWare application. Multiple open (or even previously-opened) machines are displayed as tabs on the VMWare application window. With Virtual Server, you load a web page to administer your VM's -- including setting up new ones. This is a great way to remotely administer your host, so it makes a great deal of sense for a server product. My only beef with this approach is that I believe it's harder for a VM newbie to understand, and VMWare does a better job of giving you the easy option first, and then letting you graduate to more advanced functionality.
- The application-orientation of the VMWare console, again, makes administration a little easier when you're working on a workstation. Again, for a server-based approach, the web-based admin console in Virtual Server works well. If you're new to virtualization, I'd recommend learning about VM setup, including networking and drive snapshots using VMWare workstation. Transitioning to the web-based admin tools is pretty easy once you understand the basics.
- VMWare has better Linux support. Only VMWare lets you run your host on Linux. Both products support Linux running as a guest OS, but this is a new feature for Micrososft, and I'd be more comfortable doing this in VMWare, both because they've got more experience supporting Linux, and because the community of users has more experience (equals more Google hits when you get into trouble). If that's not enough, there are VMWare "appliances" available already for most major Linux distros so you don't even have to go through an install to get up and running (which brings us to my next point).
- VMWare has a much more active user community. These guys stole a page out of Microsoft's own MSDN playbook and built on their early lead by energizing their user community. They set up a web site to host links to virtual "appliances" that you can download and use in your free VM player. Bam! - instant community. See the links at the end of the article for the VMTM site that hosts appliance links - there are VM appliances for everything under the sun there -- all based on some form of *nix, which helps explain why I've seen exactly one VPC download from MS -- and that's locked up on their MSDN site. Microsoft's OS licensing will prevent this sort of community from ever forming for VPC.
- VMWare runs VPC images! You can open a VPC image in VMWare, and it'll generally work pretty well. I ran into some headaches getting drivers updated, but all-in-all, I'm pretty excited by this capability. I believe it's possible to go the other way, but not quite as easily. See additional details on this below.
- Performance. I haven't done any "hard" testing of performance, but the same VM feels slightly zippier to me when run under VMWare vs. VPC. See links for additional perspectives on this.
Bottom line on both of these tools is that they're a remarkable advancement from the "good ol' days", and it's hard to go wrong with either one of them. If you're not looking into virtualization in a big way right now, you should be!
Using a Microsoft VPC in VMWare
Ok, I promised some notes, so here are the roadblocks I ran into when converting a Microsoft VSTS image to VMWare.
- Gather native files and copy them to the VPC disk drive. I ran into a problem where VMWare can't find driver.cab, and it wouldn't open or import the VPC image until I fixed the problem. I ended up copying driver.cab from my windows install, and after I opened up the VM, it turned out I needed a couple other files, too. By the time I was done, my collection included CmBatt.sys and mousclass.sys in addition to driver.cab. Save yourself a little time and copy these all to your VPC before shutting it down.
- Shut down VPC / Virtual Server. You won't be able to open or import until you do this.
- Merge changes to disk. VPC has a change tracking system for disk changes that works much like VMWare's - it works great when you want to roll back changes you've made to a VM. The other option here is to discard change and drop the change log, which will result in you losing the driver.cab file you so carefully copied above.
- Open the image and "ok" the automatic hardware installs. When you're done with that, and everything looks intact, install VMWare Tools and fix up your resolution.
That should be about it!
Note: Although I suggest copying the driver files you know you'll need to your VM disk before conversion, it's not really necessary to have them on that disk - it's just necessary that you can get to them when you need them. If you have these files prior to conversion, copying them to the disk file makes them really easy to get to when you need them, but if you want to get to them some other way, that's fine, too.
As indicated in this StackOverflow Article, this isn't abundantly clear from the instructions above.