Just recently I attended one of Microsoft's TechEd roadshows on virtualisation. And it must be said that these guys really know how to do an educational show. This particular session was headed by James O'Neill, whose blog you can read here.
I did have a degree of understanding of virtualisation before, simply by playing around with VMWare's server and workstation products. Today I have always used them for 2 basic uses:- to create an isolated PC environment to test a new bit of software, or to evaluate a new operating system such as Ubuntu Linux.
The line that came out of the day that described virtualisation the best was this -- "Virtualisation is about abstracting one layer on the technology stack from the next layer". Makes sense to me!
However what I hadn't really considered before was the various different types of virtualisation. In essence there are 4 different types...
Server virtualisation is fairly obvious I would guess. Simply it is the methodology by which you would put multiple server machines onto one physical server device. I think it is commonly accepted that most conventional hardware servers have only about 20 or 30% utilisation, but by using some virtualisation technology of one kind another, you can run many more server machines on that one physical unit. Even this kind of technology has 2 basic types:- a version that runs on top of an existing operating system, (such as VMware server or MS Virtual Server), or a version that runs ‘bare metal’ on a server, i.e. it doesn't require a host operating system installed first, (such as VMware ESX). Presentation virtualisation is the one that kind of snuck up on me! Why do I say it snuck up on me? Well because it's always been there in the background but I had never considered it to be virtualisation! The most obvious example of this is terminal server, (or Citrix for that matter). In both these cases, a desktop representation is run on a server somewhere out on the network, and the only thing that your local machine has to provide to the server are the key presses and mouse moves that you make. All of the processing of the application is done on the server and order is returned to the local machine is screen representation of whatever it is you are doing and any refreshes related to that. Desktop virtualisation is probably the one that most people will be familiar with. This is where you load the virtualisation application onto your normal desktop PC and you can run another instance of an OS on your desktop. I suppose the most obvious use of this functionality would be to run an instance of Windows on a Mac. This is probably the least efficient of all the various types of virtualisation, simply because you have to install a complete OS onto a machine first, then share some of its resources with the virtualisation application, which then in turn has to share those resources with any virtual machines running; (which for each, you have to load up this if it was a complete new PC, i.e. load a new OS and then any relevant applications before you are fully running!). Application virtualisation is a relatively new entrant to the world of virtualisation. There are applications such as softgrid, (which has now been purchased by Microsoft and has been renamed App-V), which allow you to run a program in its own "virtual bubble". Where this is particularly useful is where you need to run different versions of the same program in the same desktop. So for instance there may be a reason why you might need to run Internet Explorer 6 and also Internet Explorer 7 at the same time. Usually speaking this is not possible, but if you use App-V then you can run both applications at the same time because they have been virtualised into their own little bubble so that their DLL calls don't "bump" into each other. This is quite an interesting area, because traditionally you would have to run the desktop virtualisation route in order to run one application on your machine, but this methodology does away with the need for installing a complete new operating system as well as the applications into your virtual machine.
As time goes on it is fairly obvious that virtualisation of computing is going to grow at a massive rate, not least because of the green issues that are facing us all at the moment. Why green issues? Well, take you with server virtualisation it is now possible to run multiple servers on one physical machine, thereby doing away with the need to power and cool so many extra machines.
Also, virtualisation offers so many more benefits in the other areas that I have discussed above including management capabilities. One management capability that is easily overlooked is simply the area that at the end of a working day, an IT department can throw away the virtual machine that a user has been using today and start them off with a complete new CLEAN working environment every day; therefore doing away with the need for chasing user down issues that have been created by users playing around with their machines all the time. Obviously this capability is not available to all, but if you can cut down on support issues for part of your install base, then it can only increase productivity in your support department...
Personally I think that virtualisation is an area of knowledge that anybody involved directly in IT or IT support really should get to know about, because there are so many ways in which you can use it to make your computer resource usage much more productive.