Introducing and applying the Virtualization Concept

3 07 2009

Virtual machines


In this post, I’ll talk about the virtualization technique. I’m working deeply with it for some time, and I wish I could bring some of its usefulness to end-users. During the post, I’ll try to define some basic concepts of virtualization, and show how can you make benefit of it. On the next posts, I’ll explain deeply the virtualization concepts, and talk about the most important virtualization solutions available in the market. Hope you enjoy the post!

For those who don’t know, virtualization consists in a series of techniques that allow you to run instances of operating systems inside other operating systems. For instance, if you are using Windows, and don’t want to reboot the machine in order to use Linux or other system prior installed (like in a dual-boot case), you can start a new instance of Linux (virtual machine running Linux) inside windows, and use it side-by-side with windows and other systems at the same time. Using formal words, the operating system that runs underneath this so called virtual machines is called host. And the virtual machines running over it are called “Guests”

To provide this, the virtual machine system implements a layer, called hypervisor,  between hardware and the operating system’s software. This layer provides a hardware abstraction to the virtual machines, that is responsible for intercepting the virtual machine’s calls, send it to the hardware, get the results and then return it to the virtual machine. There’s an high overhead in this procedure, but as we will see in the next posts, there are many technologies, like Intel VT and AMD-V that can significantly reduce this implicit overhead.

The main virtualization products are: VMware (closed-source, paid), Xen (open-source), and Sun’s Virtual Box (open-source). In my toughs, Xen and VMware are developed for datacenters’ needs, while Virtual Box are ideal for “home use”. There’s also a “home” version of VMware but, to be honest, Virtual box is much better in almost all aspects. To tell the true, if you don’t want to deal with kernel and develop software to work specifically with virtualization, and just enjoy virtualization benefits, you can safely use Virtual Box. My experience says that Virtual Box has some of the best features, and it’s the only one that brings “real” graphic adapters (opengl and directx support) to virtual machines. The speed is fantastic, like you’re not using virtualization. I’ll talk about the new Virtual Box’s capabilities in the next post.

server consolidation

server consolidation

The virtualization technique brings a brand new horizon to computer services, mainly on data centers, where you can do the known “server consolidation”, that consists in changing the paradigm:

“one service per physical machine”


“many isolated services running over the same physical machine”

The great advance is that the prerogative of virtualization is to ensure that all this guest machines must be completely isolated and virtualized-agnostic from each other. That means that if a single virtual machine is compromised, the other virtual machines and the host will keep running without any major problems.

Now you can ask: How virtualization may improve my daily computer use? And I bet that after reading this post, this question will be undoubtedly answered. I’ll cite some of the possibilities brought by virtualization to end users:

  • Run multiple operating systems in the same machine, at the same time, sharing the hardware resources like disk, memory, USB devices and network interfaces.
  • Have a multi-system testbed for software developing and system compatibilities issues. For example, develop a multi-platform system and test it on all supported systems in the same machine.
  • Virtual machines’ disks are stored in files. That means that you can have a backup of your virtual machines, copy or clone them, and migrate them to other computers if desired.
  • Save the current execution state of the running machines and then, recover this state if something goes wrong. This is specially good if you want to try a new software or driver configuration, and are worried if something will went wrong. To mitigate that, just take a screen shot of the actual state of the machine, try the modification, and if there’s a problem, just load the screen shot and reload the old machine.
  • Have a safe “sand box” for critical operations. For instance I bet you like to do some Internet Banking and some e-commerce transactions. Its a great idea to install a rock-solid virtualized Linux distribution, install the needed browsers and safe configurations, and use this virtual machine to do this critical operations. As told before, you can prepare this virtual machine, take a screen shot of it, use it for the critical operations, and after, just restore the original screen shot state. That means that all possible vulnerabilities possibly installed during the Internet session(eg. keyloggers, spyware, trojans) that might capture you sensible information will be completely removed upon machine’s old state recovery.

As you can see, there are many uses for virtualization (I think there’s a lot more than was cited), and many of them are highly applicable on our lifes. In the next posts, I’ll talk about the existing virtualization solutions, and how to configure them to satisfy your needs.

Hugs, Hugo Carvalho.




Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: