Sunday, November 11, 2007

VMware Fusion: OS virtualization for Mac OS X

One of the biggest buzzes in IT at the moment is around virtualization. Server virtualization works like this: most computers in data centers are not really very busy: many of them are actually less than 15% utilized most of the time. There are many reasons for this. In the past, as a company started a new project, it was common to buy a complete set of new equipment for that project: a new web server, new application server, new database server, and in some cases two or more of each for redundancy. Plus firewalls and load balancers and such. I've built lots of these set ups and they are sold like this for three main reasons:

1. because it allows the purchaser to attribute all blame for anything that goes wrong to the vendor who sold "the solution"; this is known as "the one-throat-to-choke principal".

2. because whoever is funding the project wants to "own" the kit, and not share with anyone else; this is common in environments that aren't mature enough to have figured out how to bill for compute time and facilities as a service. We call this phenomenon "server hugging".

3. often no one has a clear idea of how the new environment will perform, what sort of load it will carry, or even if the service it provides will be popular enough to pay for the deployment. There is a desire to protect the known, stable part of the infrastructure from the new project, in case something goes wrong during the course of the build. This is warranted - I recall several new deployments that had unforeseen and regrettable impacts on the existing systems in the data center. If you don't have a good test environment, the only mitigation of this risk is physical separation.

So new systems go into production, and sit there at perhaps 15% utilization, often much less, consuming electricity and generating heat 24 hours a day, 365 days a year. This is a huge waste of money, and environmentally irresponsible. It's been common in the past because in the majority of companies, the IT department does not pay for electricity: power and cooling comes out of another budget, so IT has no incentive to do anything about it. It's not even terribly obvious if your servers are collocated in someone else's data center: there, you are typically charged for rack space, and sometime per CPU, and the data center owners will have factored power and cooling into their charges. But business owners are beginning to be aware of these details, and the accountants are sharpening their knives. If green computing can save money, they are all for it.

So if you take 4 machines that are only 15% utilized, and merge their workloads together onto one machine, that one machine will be a lot busier, but it will occupy less rack space, consume less electricity and produce less heat. When IT vendors wax lyrical about "green computing", this is generally part of what they are talking about.

Of course not all applications are suitable for virtualization: anything with very high I/O requirements should be tested carefully. Some applications just do not play well in a shared environment, and you need to consider what your security policies say about the separation of various services and components before you start consolidating things. Consider also that if you are going to put a lot of eggs into a single basket, it should be a very good quality basket, not some nameless beige box that you got cheap from a friend of a friend. But with sensible planning, testing and resourcing, server virtualization can save a great deal of money.

The leading vendor in this field is VMware, who produce the VMware Server products. There are other players, including Xen, IBM, Red Hat and Sun, but VMware (to the annoyance of their competitors) was first to market with a robust solution, and they have both market and mind share that others only can dream about. Their products are good, their support excellent, and as a vendor they are a joy to deal with. So when I found that their VMware Fusion product, VMware for Mac OS X, was about to be released, I was curious to see what it had to offer. I'd been dimly aware of the beta, but never looked at it, and the final release is an Intel binary, so when my new MacBook arrived in August I downloaded the demo and gave it a whirl.

Now I must confess to having followed standard engineering practice for installing this software

1. Download software
2. Glance at the first page of the vendor's doco, conclude that it looks simple, toss doco aside.
3. Install software by following the prompts and doing what seems obvious.
4. Reach the point where it prompts for a Windows installation CD.
5. Go round to the IT department and borrow media and software keys from those enormous folders of CDs that Microsoft ships people who take its products seriously.
6. Stick Windows XP disk into MacBook's DVD drive while thinking "what am I doing?"
7. Go through the usual messy and disgusting procedure of installing XP, Office, Project and Visio, and applying enough patches to choke a horse. I had to refer to the doco briefly at this point, to work out how to have the Mac send CTRL+ALT+DEL to the Windows virtual machine.
8. Watch XP boot in a window on my Mac desktop and realize with horror that I have loaded a petri dish onto my beautiful Mac.
9. Scrabble hastily for a distro of our preferred anti virus software, and get it going before something bad happens.
10. Tinker for a few minutes, to get the virtual machine to authenticate to Active Directory, and get a print queue and some file shares.
11. Build another virtual machine (VM), this one running Solaris 10 (you'll need the X86 media, not Sparc).
12. Download a pre-built VM of Ubuntu Linux from the VMware appliance site.
13. Start all three VMs simultaneously in different windows.
14. Try to engage the enthusiasm of the person at the next desk in how utterly cool this is.
15. Conclude that I shouldn't have tried step 14 on a business development manager.

Now you may well ask "why would I do this?", or "why not use Parallels or Boot Camp or whatever?" Taking those questions in reverse order:

Boot Camp gives you a dual boot machine: you have to stop one operating system to start the other one. Life is too short.

Parallels only supports 32 bit guest operating systems, it's a notorious resource hog, and I have heard horror stories about its stability, or lack thereof. Fusion is highly configurable, doesn't bog my machine down, and is stable. Also, and Parallels doesn't have very many pre-built virtual appliances available. VMware has hundreds, many of them free, including VMs of all sorts of operating systems and networking kit. This gives me the opportunity to tinker with things that I might otherwise never get to try.

Furthermore, VMware is a large and successful company: they have recently completed their IPO, and are going from strength the strength. The other players in this space have interesting products, but big businesses like to buy software from other big businesses: it gives them a cosy feeling that there will be ongoing support, if they need it. And since I have a lot of customers who use VMware in their production environments, it's handy for me to use some of the software myself: helps me stay current on the products.

For me the ability to run multiple operating systems on the Mac is wonderful. For example, I'm in the throes of updated a training course that I wrote years ago, 'The General Introduction to Unix', which I am generalising (it was originally written for SCO Unix and Solaris in the late 90's) to cover Solaris, Linux and Mac OS X. I need to check every bit of syntax, update screen shots, and in some cases remind myself how things work in different operating systems. Not having to power up the old Ultra 10 in my study to look at Solaris saves time and electricity.

Then there are the cases where you need to run some piece of software that will only run on Windows. To be honest, the only thing I really need on Windows is Visio. Anything else either runs natively on a Mac, or there is a better alternative on a Mac. Visio however I do use, and it is pretty much the standard diagramming package used across the industry - you even see it as a required skill set in job descriptions. I use OmniGraffle on my Mac, but until Omnigraffle can give me a Size and Position dialog like Visio's, I will never be able to get the level of precise control that I need. Also, customers frequently send me Visio diagrams and just assume that everyone can read them, because Visio is "the standard". And it is a good piece of software (I note that Microsoft bought the product, they did not create it).

Furthermore, running Windows in a VM on my Mac allows me to get past a problem that has annoyed me since the day I started this job: the local IT folk refuse to add my Mac to Active Directory, so I have never been able to map a file share or print (and yes, I have tried direct IP printing; we have particularly nasty brand of printers that do not support direct IP printing from Macs; the vendors published "work around" is "do not print from Mac". I kid you not). But as soon as the VM of Windows booted, AD recognized it, and allowed me to map drives and set up a print queue. The VM looks just like a PC to AD, and it treats it as such.

And it just works. A few weeks back, I took my Mac to a training course, and when I got it out, the instructor's face fell. The software we were supposed to be learning had a client interface that ran on Windows, and he didn't think it would work on a Mac. So I started my Windows VM, loaded the client, and it worked perfectly (and the other people on the course were jealous, because they had the usual Windows based laptops: slow, ugly and flaky). I had to allocate a bit more memory to the Windows VM for the duration of the course (the client software was a real hog), but once I had done that, my virtual Windows box could easily keep up with their physical ones.

Fusion allows you to emulate all sorts of things, which is handy if you need to do demonstrations. I recently attended a presales demo by an antivirus vendor. The customer wanted to buy antivirus software for their fleet of Microsoft machines. The antivirus presales guy turned up to the demo with a Mac, started up a hoard of Microsoft VMs, and demonstrated his products using them. It worked brilliantly - he had a demo lab in a box, something that it would have taken days to build physically (and he closed the sale, against stiff competition).

The arrival of Leopard has made using Fusion even easier, because I can park the VMs in a Spaces pane until I need them, and they don't even clutter up my desktop. If you haven't tried Fusion, there is a 30 day evaluation version available from the VMware website: give it a try, I think you'll like it.

3 comments:

Ben Gertzfield said...

What a great story. You really nailed what VMware (and VMware Fusion) are all about.

Do you mind if I share this with folks at VMware?

Melodie Neal said...

Hi Ben

By all means, share away.

Melodie

Dave Walker said...

I also have much fun with Fusion. I'm very pleased to report that I've had my Mac running Solaris 10 Trusted Extensions and Sun Ray server software in Fusion, to the point where - with Fusion's network adaptor in bridged mode - you can plug a switch and a couple of Sun Rays into my Mac and get a working (demoable, anyway) TX environment. This impresses folk :-).

Addthis

Bookmark and Share