Virtual Machines
I recently ran upon a thread about Virtual Machines (VM's) and Virtualization. I figured a post on this topic has been long over due. For those of you who don't know what VM's are, I HIGHLY recommend that you read on. This technology is a game changer, even if it's been around for quite some time.
So let's just get right down to it.
WHAT is it?
A lot of people have different definitions of Virtualization but the way I think of it is that it's abstracting and decoupling SOMETHING from the hardware. When you virtualize an OS, you're basically abstracting all the hooks that it has into the hardware so it's more portable, mobile, and flexible. The output of that virtualization process creates a VM (which is essentially a set of files).
The VM runs on a hypervisor. There are two types (Type 1 and Type 2). Type 1 is under all OS's while Type 2 is install on top of an OS. For the purpose of this post, we'll just focus on Type 2, and on VMware. VMware's Type 2 hypervisor is called Player (it's free and can be found here: http://www.vmware.com/products/player/). I'm choosing VMware because it's the leader in the market right now, and by a wide margin. Their converter, aka P2V, is also free (found here: http://www.vmware.com/products/converter).
WHY use VM's?
I mentioned that virtualization's benefits is that it's more portable, mobile and flexible--and that applies to VM's. There's a ton of use cases and benefits because of this, but here's my top list:
Test Drive. Let's suppose you have Windows 7 installed, and you like it, but you've heard good things about Linux and you'd like to try it out. Typically you'd only have 2 options available: Live CD (run it off of a CD, USB drive, etc) or create a new partition (or shrink your existing one--can be dangerous) and install Linux there. Both options require you to shutdown Windows 7 and boot into Linux. What Player does is you install it in your Windows machine and then boot the Linux VM inside Windows 7 and run both OS's simultaneously. No need to reboot.
Obviously, if you can run multiple OS's, a big benefit of this is that you can run applications you typically couldn't before. I've posted before how I've been able to create an SSH tunnel back to my house with Putty and Linux, but it was on a Windows 7 machine--this is how I did it.
With Unity mode, you can seamlessly merge your VM's applications with the OS that you're running Player on. So let's say the OS you've got Player installed on is Linux (because it kicks butt) but you have to use Microsoft Visio for work. You can fire up the Windows VM that has Visio on it, enter Unity mode, and voila, you have the Visio application on your Linux desktop without being confined to the Windows's VM's window, so it looks like you've installed Visio on your Linux machine. If that doesn't make sense, check this youtube video out: http://www.youtube.com/watch?v=JeGOGD1SGgE
Consolidation. This is more for the Data Center's out there, but this was the biggest value prop of virtualization back when it came out. Most servers run 10-20% on utilized throughout the day on average, and being able to increase the utilization of your assets (servers) by consolidating your servers you've purchased via virtualization resonated with companies. Not really a benefit for you here with the exception that you don't need to buy another computer to run another machine/OS simultaneously with your other machine(s).
Isolation. Since a VM is another OS, and separate from the OS you've installed Player on, you can isolate yourself from potential threats. Let's face it, surfing the internet can be dangerous. Spyware, trogans, keyloggers... the list goes on. It's not uncommon for a windows machine to slow down over time. What if you could fire up a VM and do all your internet browsing, or testing of new (untrusted) applications, in a sandbox like environment? And when you're done, you can just blow the VM away and recreate another one based off of a template you've created? It protects your main OS, which means you don't need to rebuild it as often (if at all). And since you can share files between the VM and your main OS seamlessly, you don't lose any functionality.
Hardware Refresh. This is all about the decoupling effect of virtualization. I don't know if you caught on to this, but you don't need to reinstall an OS (or repair it) just because you installed a new mobo. The drivers, ram, CPU, and network are all "virtualized" or "generic-ized". The obvious down side here is that you lose some of the benefits that come with tightly integrated drivers (read: able to fully utilize that expensive graphic cards). But if you don't virtualize your gaming machine... or if you don't game... then the benefits are great.
Baseline = Goodness. I briefly mentioned the template VM. Let's say you've created a Windows 7 VM that has all the latest patches on it. Like clean install before you install any applications on it. You can easily copy and paste that to another location for safe keeping (remember, a VM is basically a set of files)... in other words you're making a baseline/gold-copy VM. So if for whatever reason you accidently corrupted your Windows machine, just copy/paste a new copy of your gold-copy and voila, you've got a pristine machine once again (no need to re-install from scratch). This, of course, assumes that Windows 7 is your VM, not the OS you've got Player installed on.
Multiple VMs. There's no reason why you can't have multiple VM's running simultaneously. I can't think of a use case of how this would be helpful off the top of my head, but I'm sure you can think of one. Probably goes back to isolation use case (think dedicated browser VM, FTP VM, etc).
Virtual Appliances. Virtual Appliances are VM's that people have already built. Not interested in building a Kubuntu VM from scratch? Someone's already done that for you. Check out this section of VMware's website and search around: https://solutionexchange.vmware.com/store/category_groups/19
Closing thoughts
VMware has been around for a while. The real awesome stuff is in their Type 1 hypervisor. For the IT Professionals out there, I'd HIGHLY recommend for you to build up your skills around VMware. Being able to move a VM live, without the end user realizing you're moving it, to another server is cool. But doing that at an extended distance (like another state)? Mind officially blown. There's a lot of really awesome stuff they are doing (Storage DRS, Fault Tolerance, vApps, Cloud Foundry, vFabric, VDI, etc) but this post is long enough as is.
Until next time my users,
#

I currently live in Plano, Texas and work at one of the major IT companies as a Sales Engineer. Married to a beautiful wife and we're blessed to have 2 kids.
Hobbies: chasing after my 2 kids, writing, computer building, reading (usually computer books but I get around to SciFi/Fantasy once in a while), movies/tv, IT security, and of course Eggxpert.
In short, I'm just another guy with a computer and an internet connection.