Someone asked me the other day, why run virtual computers? Good question. First though, I ought to take a moment to explain what a virtual computer is.
A virtual computer is much like it sounds, it’s a fake computer. It runs inside a host, which resides on your real computer. For example, I could be running Windows XP on my real computer. Inside, I could run some software that would let me create a virtual computer running Windows 98.
The software that runs virtual computers works by abstracting the hardware then essentially lying to the virtual computer. The virtual operating system has no clue it’s virtual, it thinks and acts like it’s real. If it needs to make a hardware call, it does so and the software intercepts it and sends it to the real hardware on the host computer.
There are several options for running virtual computers, each with it’s own pros and cons. I’ll discuss the choices in my next post, for now let’s discuss some of the reasons for making use of virtual computers.
Emulating Operating Systems
When developing server components, it’s handy to have a spare server lying around. Unfortunately not all of us have the extra hardware handy to run a server. Using virtual computers, I can run Windows Server 2003 on my workstation, which is actually running Windows XP.
I’ve been interested in learning more about Linux, but don’t have a spare computer lying around, nor do I want to fool around trying to get dual booting to work. Using virtual computers lets me play with multiple versions of Linux without risk to my Windows system.
Multiple Configurations / Environments / Legacy apps
If you work in a large company, you often have to support multiple environments. For example, we are in the process of starting a new SQL Server 2005 project, but at the same time need to support our current SQL Server 2000 servers until they make the transition. Using multiple virtual computers lets me have one environment for 2000, another for 2005 without worry I’ll break one or the other.
“But it worked on the developers machine.” Ah how often have we heard that little gem! Virtual computers allow us to setup a base environment we can test our installs on, before we ever turn our apps loose on the users.
At work we have a base image all of our computers get when we first receive them. Using the base XP image I create virtual computers, and can ensure my new app runs OK.
You can extend this to not only your apps, but other apps. We’ve all seen some hot new app on the internet we wanted to try, but just weren’t sure about. By installing on a virtual computer we can test in our environment, see the reactions. If we don’t like it, just toss the virtual computer, no harm done.
If you browse the web you are well aware of all the creepy critters waiting to assail you. Worms, viruses, Trojan horses, and that worst, most despicable of all creatures, the spammer wait for us around every corner.
Using a virtual computer protects you. Sort of like Las Vegas. Whatever happens there, stays there.
By their nature, a virtual computer is isolated. It has no idea it’s a virtual computer, no idea about it’s host (unless you specifically share a host’s drives, but that’s something you must do explicitly). Thus if you virtual computer comes down with a virus or other nasty, you can simply delete and rebuild and away you go.
Using a virtual computer you can setup custom environments for each class or subject you need to teach. Users can use the OS to their hearts content, customizing it for their needs. At the end of each training session machines are easily reset by copying the base image to over the used one.
Here’s a sneaky trick some system admins do. (Thanks to Wallace Allison for telling me about this). They will first secure their real servers behind layers of security. They’ll then create a virtual server, or perhaps some virtual computers and deliberately expose them to the web. They become magnets to hackers who will attack the system.
Using diagnostic tools system admins can analyze the attack, and fortify their real servers against them. They can block the IP of the attacker, and maybe even help bring the offender to justice.
Each night I make regular backups of my virtual computers onto my external USB hard disk. If my computer ever crashes, all I have to do is install my virtual computer software and I’m up and running with little downtime.
So that’s why!
There’s a few reasons why virtualization is a great thing. In my next post I’ll show you some places where you can get your own copies of virtualization software and begin setting up your own machines!