Our Virtual Machine Future

Lately I've been spending more and more time inside virtual machines. Whenever I need to try out a new bit of software, whether it's a small shell extension, or a giant product like Team System-- I tear off a new VM first. I don't want to junk up my primary install until I'm totally confident I know what that software does. It's guilty until proven innocent.


This is a companion discussion topic for the original blog entry at: http://www.codinghorror.com/blog/2006/01/our-virtual-machine-future.html

“The operating system doesn’t matter.”

So then could this lead to these “out of the box” vm image installs having smaller, custom versions of an OS, with only the features it needs to run? Or even a fully custom OS that is not a subset of some existing one… or none at all - the app running right on the metal? Could we see an explosion of mini-OS’s, with Windows relegated to little more than a platform for managing VM’s and the interop between them?

“Not sure. As a pure guess, I’d say as long as the single machine has an OS license, you can run as many VMs as you want on that machine using that same OS.”

Microsoft really needs to answer this. They are avoiding this question.

I have an MSDN subscription and I have installed a copy of Windows XP Pro onto a Virtual PC hard disk. Can I copy this disk image at will and have an unlimited number of copies sitting around ready to be used? If not, how many copies am I allowed to have? Do I need to make sure that only one copy is running at a time? I have no intention of sharing any of these copies with anyone else. These are all for personal testing use.

This has to be a common question and there should be no reason to guess. What is the answer?

I agree: Long live the virtual machine!
Microsoft surprised me and did The Right Ting when they released many Virtual PC VMs at the (Italian) launch of Visual Studio 2005. It is a great way to showcase technologies like BizTalk that require more than a simple setup.

VMs is the software/systems architects best friend; I am able to test major upgrades like new service packs and porting to .NET 2.0 on a VM before I dirty my machine with components I’m not able to remove. If it bombs I roll back the VM, if it works I upgrade my machine.

I would like to echo the comment about file management. Where are we putting all our important data? In this setup we would probably have a shared resource (on the network or the Internet) but what’s to prevent those files from becoming corrupt? Are we going to have a virus/malware check there?

As far as keeping the image up to date, this is a non-issue. If (insert OS vendor here) decides to offer the capability of virtual machines, then you probably wouldn’t create a VM from your crusty old intall disk, you would download a shiny new VM from their website (think Knoppix here). Dial-up users need not apply. (How do you update a fresh install of Windows XP sans service packs over a modem anyway? I would imagine that’s like 200+Mb of updates.)

There’s a great interview with Parallels, the authors of the $45 VM software, here:

http://www.virtualization.info/2006/01/virtualizationinfo-interviews.html

The industry would see to agree. In addition VMWare/Virtual PC, Microsoft is integrating “Windows hypervisor” into the Vista server. IBM/Sun/Novell/HP/AMD/Intel/Red Hat have all endorsed the open-source Xen virtualization project.

I definitely agree that MS needs to clarify this. It’s a popular topic in their VPC newsgroups, and there is nothing clear coming out of Microsoft, almost as though they’ve been told not to comment. It’s somewhat tricky when I’m suggesting that a corporate use virtualisation but can’t say what the licensing cost should be. The safe way, of course, is to license every copy of a VM… very profitable for MS too. I go with the “one license per executing VM” for the most part.

On obvious solution is to use the Linux version of VMware and keep the OEM Windows license for your virtual machine(s).

(link above is to a href="http://www.microsoft.com/windowsxp/expertzone/newsgroups/reader.mspx?dg=microsoft.public.virtualpctid=b8e53da7-113a-49ad-9138-077dff7c7259lang=encr=USp=1"http://www.microsoft.com/windowsxp/expertzone/newsgroups/reader.mspx?dg=microsoft.public.virtualpctid=b8e53da7-113a-49ad-9138-077dff7c7259lang=encr=USp=1/a

How would we solve application interoperability then? Clipboard service over TCP-IP? I don’t like the idea, it would be too much of risks, and too many gates open for all kinds of worms and sp*ware…

Sounds like you’re pretty much describing what games consoles already do.

“I’m a Solipsist, and I must say I’m surprised there aren’t more of us.” - Letter to Bertrand Russell, according to popular legend.

How would we solve application interoperability then?

What type of interoperability do you need? I generally drag and drop files back and forth from VMs when I’m using Virtual PC. I can also map a “network” drive to one of my local folders, and the clipboard just works as you would expect it to…

Sounds like you’re pretty much describing what games consoles already do

Partially, but our “console” would be running multiple apps at once in different VMs. Consoles never EVER run two games at once in any circumstances.

If you’re dragging dropping files to local folders, what makes you so sure that you aren’t dragging dropping an embedded virus?

Also, the more work you do in a virtual machine, the more time-consuming it will be to set up and maintain. Eventually, a virus will destroy your VM and you’ll realize that your installation copy is way out of date and that you haven’t made a recent backup of your files in the VM… and we’re back at square one. Well, except for having to insert a physical boot CD I guess.

“Sounds like you’re pretty much describing what games consoles already do”

Sounds like he’s describing what Squeak and Smalltalk already do. The only difference is the sandbox portion of it. I’m not too familiar with how smalltalk VMs deal with system security.

A lot of linux hosting solution do exactly whar you are describing, they run each server application in what’s called User Mode linux.
http://www.usermodelinux.org/

Silly questions:

  1. If you have one legit copy of Windows XP, can you install (and register) the OS on as many VM’s as you want?

  2. Do you just install a new OS on one VM, and then make a copy of that virgin VM everytime you install new software?

  3. Any opinion on what VM software is the fastest? In my experience with Virtual PC, it’s pretty slow.

  4. I thought I had heard that Vista was incorporating something like a VM. I guess you could say that the Restore Point is “kind of” a VM, but that’s a BIG stretch.

  5. I don’t have a dual core chip (yet), but I would think that a DC would really speed up the VM, because you could assign the VM to the other processor.

I totally agree that VM’s are an awesome way to test out software, especially betas. I wish I had stuck with my original shot at doing VS2005 betas on VMs, but it just ran too slow. After formatting the drive to get rid of the problems I had with trying to install the full release (after the betas), I think I would have opted to put up with the speed difference…

I’m most excited about virtual machines in the datacenter; I’d love to have a hardware platform that let me re-distribute the load across applications by just bringing up additional virtual servers. If I need a new web server, I bring up my Apache image; if my DB is running out of steam, I move the image onto a faster server with a better CPU.

Clustering and virtualization will work together to put a layer of soft machines over the hardware, making much better use of resources, and dramatically improving security. Of course, there’s a pretty significant problem with per CPU licensing… this will probably give even more of an advantage to open source platforms in the datacenter environment. M$ and Oracle may need to give up per CPU licenses and move back to “Power Units”- licenses based on the number of clock cycles / second devoted to the application.

sounds like z/OS (nee: OS/370)

If you have one legit copy of Windows XP, can you install (and register) the OS on as many VM’s as you want?

Not sure. As a pure guess, I’d say as long as the single machine has an OS license, you can run as many VMs as you want on that machine using that same OS.

Do you just install a new OS on one VM, and then make a copy of that virgin VM everytime you install new software?

That’s how I do it (simple file copy), but there’s a fancier way to do it using difference images that VMWare supports. However, these images can become fragile if the base image changes.

Any opinion on what VM software is the fastest? In my experience with Virtual PC, it’s pretty slow.

Here are some benchmark links.

http://www.osnews.com/story.php?news_id=1054
http://arstechnica.com/reviews/apps/vm.ars/4

I don’t have a dual core chip (yet), but I would think that a DC would really speed up the VM, because you could assign the VM to the other processor.

Definitely. And quad cores will be even better.

I think I would have opted to put up with the speed difference…

This is why VMs need super fast hardware. The upcoming CPU hardware support for virtualization (vanderpool, pacifica) will speed this up tremendously-- like 2x, 3x faster. Probably to the point that using a VM is just marginally slower than using the host.

One thought about this… virtualization software is extremely picky about what hardware is supported. While this might change it will be quite the feet to ensure that joe-bob’s joystick for flight simulators is gonna work or billy’s scanner is going to work. USB is even “extreme” in the VM world, ESX server is awefully picky about what it supports.

But the solipsist operating system is surely coming:

You mean ESX server? Runs on the hardware, provides support for virtual machines (and only virtual machines). I suspect you could write something interesting using their scripting environment, but I’m not sure why you’d bother.