VMWare tips – using Microsoft VPC images

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?

Product Comparison

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.

Additional Links

Opening VPC with VMWare
VMWare product comparison
VMWare Appliances on VMTM

My articles:
SugarCRM for Job Search Management - Part 1
SugarCRM for Job Search Management - Part 2
Administer Virtual Machines like "real" hardware

Are you guilty of Drive-by Management?

It's been a while since I've been a new employee, and I think it's good for me to get another turn on this side of the hiring process. I always made a big point with all my new employees to tell them, "you're only new here once, so tell us where we're screwing up." So, here I am, experiencing some screw-ups. As always, I think this can be a learning opportunity, so I'm going to share some notes with you -- are you doing any of these things?
Starting a new employee is a critical time. Not only are you forming vital first impressions, you're probably more at-risk with your new employees than at amost any other time in their career with your company. Think about it -- if they're just coming off of a job search, they've probably got a whole database of contacts spun up, and their cell phones are still on speed-dial with a bunch of recruiters. If they're not happy in the first couple weeks of their employment with you, there's every reason to believe you'll lose them.

Here are some things I've seen in my first weeks of employment that could really stand to be improved. For the record, I intend to approach these as areas where I can help raise the bar here rather than reasons to get disgruntled. I guess I'm just a "glass half full" kind of guy. 😉

  • Ok, I lied. I'm going to start with something that went exceptionally well. The HR portion of orientation was well-run, professional, and friendly. This is the mark of an organization that sees "service" as an important part of their business, and it's a clue to you as a manager -- there are organizations that are optimized to create things (including processes) and organizations that are optimized to work processes. Knowing which one is which: priceless.
  • First day: new machine. There's something to be said for having a machine ready for you on your first day, especially for a developer-type who molds his PC to fit him like a race car driver tailors his seat. I started and was given a temporary laptop(for the first half-day or so), then a temporary desktop, and finally my laptop a week or so after I started. In the mean time, I avoided setting anything up the way I really wanted it, because I knew I'd be giving up the PC soon. Obviously, I was less productive and less comfortable in my new home as a result.
  • Where are the docs? Every company and department has a collection of docs, as well as a collective archive of "tribal knowledge". In my experience, organizations that know that they're lacking in documentation are a little better at sucking up the hit to assign someone to sit and explain why things are the way they are. In this case, there's a SharePoint site and a SourceSafe archive, so the natural tendancy is to just assume that everything's in there and easy to find. Only one problem: both are incomplete and not updated nearly often enough. There's just enough available in both places to convince me that nothing here could possibly be made to work.
  • Who's in charge of what? It's natural for a new employee to have questions about what's going on, why things are the way they are, and who can help explain things. It's really frustrating to get the runaround when you ask questions about this stuff. I've been asked to put together some best practices for builds on Visual Studio Team System (VSTS). Cool. I can do that. Three days later, I'm still trying to get set up, because I keep getting bounced around trying to find out who can get me access to the stuff I need to do my job. Sigh. Same thing goes for project work - "can you help with XYZ?" "Sure," I say. "Who do I see with questions?" "...uhh..."
  • Everyone's busy. This is a killer, because you obviously wouldn't hire someone if you weren't busy. Despite that, you've got to make sure it's someone's job to maintain some continuiity with the new guy, cause it bites to be hanging out in the breeze while everyone else is running around frantically doing what they need to do. The tough truth is that you need to expect to invest some time from your busiest team members in order to ramp up a new employee. That's the price of admission. If you don't put in that up-front effort, you're not going to gain the additional productivity you're looking for in the new guy.

The next time you start a new employee, take the chance to really look at your organization with those fresh eyes. In most cases, shortcomings that are readilly apparent to the new guy are places where you're really vulnerable organizationally, but you've been getting away with it because you've got good people covering the holes in your process. Take advantage of these clues to shore up the problem areas, and you'll have a more efficient, more reliable organization, and happier new employees, too.