Category Archives: Virtualization

Why Virtualize

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.

Testing

“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.

Security

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.

Training

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.

Honeypots

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.

System Independence

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!

Virtualization

One of the tools I have been using a lot of lately is Virtual PC. It’s come in very handy, so over the next few entries I’ll be discussing this and other handy virtualization tools.

Before we get into virtualizing an entire computer, let’s start with just the CD/DVD. There’s a great tool you can get from Microsoft that will allow you to take an ISO image and fool your computer into thinking it’s a CD or DVD mounted in a drive.

The name of the tool is Virtual CD-ROM Control Panel for Windows XP, you can get it by clicking the link, or if you are the distrustful type (and you should be) instead follow these short steps:

First, go to:

http://msdn.microsoft.com/subscriptions/faq/

Scroll down to MSDN Subscriber Downloads, and click on “What are ISO image files and how do I use them?”

When it expands, toward the bottom you’ll see a section “Mounting ISO files virtually”. Click on the link to download “Virtual CD-ROM Control Panel for Windows XP”

Once you download, the file will expand to 3 files, readme.txt, VCdControlTool.exe, and VCdRom.sys. The readme.txt file has the directions, but the short version is:

1) Copy VCdRom.sys to your %systemroot%\system32\drivers folder

2) Put the exe somewhere and launch it.

OK, your install is done. When you launch it you’ll see this screen that’s not overly intuitive.

OK, this is the tricky part that’s not quite clear in the directions: The very first time you run the program you should click on Driver Control. In the dialog that appears, click on Install Driver, then navigate to the location you put the VCdRom.sys file. Once you click on the sys file click Start to start the driver, then OK to close the dialog. OK, that’s done, you never have to do this again.

From here it’s pretty simple. Click on Add Drive to grab an unused drive letter. The app gets the highest available unused drive letter, typically Z.

Now you have an available drive, click on Mount. When the dialog opens, find an ISO image you’ve downloaded or created (most likely from MSDN, but any ISO works). Once you click Open, a dialog will appear to confirm, normally I just take the defaults and click OK.

Ta da! Your ISO now appears to the operating system as if it was a CD (or DVD) mounted in a drive. When you are done, just click Eject back on the VCDRom panel. That will leave the drive letter available but the ISO will no longer be accessible.

Need more ISO’s mounted at once? No problem, just click Add Drive again, to get another drive and mount it. Done with the drive letter? Just click on it, then click Remove Drive. Finally, if you eject an ISO then decide you want to remount, just click on the drive letter and click Remount.

There you go, a free way to use those ISO images without having to burn them to a CD or DVD first!