dcsimg

Virtualization 101

Being technical, you're probably eager to jump into the "how" of virt. But let's take a step back for a minute and look at just "what" this technology is.

I don’t know anything about Linux. “Why then,” you may be asking, “am I reading this?” This is, after all, Linux Magazine, and you probably kind of expect the contributors to know a little something about, well, Linux.

I’m not writing this column because I know Linux. I’m writing this column because I know virtualization, which, when deployed on a desktop or server, lets me enjoy Linux and all that it has to offer without giving up other OSes (and more importantly, their applications) that I depend on every day to get my job done.

This column, which focuses on the “what” of virtualization, is the first in a series that will explore the different technologies and methodologies that populate the industry, best practices for deploying virtualization in desktop and server environments, how to effectively integrate real and virtual resources into a single, smoothly running IT infrastructure, and of course, how to manage it all without wanting to blow your brains out.

What is virtualization?

Amit Singh, author of Kernelthread.com and an all-around fount of knowledge for all things virtual, defines virtualization as “a framework or methodology of dividing the resources of a computer into multiple execution environments, by applying one or more concepts or technologies such as hardware and software partitioning, time-sharing, partial or complete machine simulation, emulation, quality of service, and many others.”

In English, this means that via virtualization, you can make one computer work as multiple computers, thereby allowing you to run multiple disparate OSes or multiple instances of the same OS, at the same time, on the same box, without rebooting.

Although it’s received a lot of press recently, virtualization as a concept has been around almost as long as computers themselves. In fact, computer scientists were deploying basic forms of virtualization on mainframes as early as the 1960s via a technology called “time sharing.” Since then, virtualization has gradually moved from mainframes to servers to desktops for both consumers and enterprises.

You’ll find several popular approaches to virtualization, some of which are “true” virtualization, and some of which aren’t. We’ll talk about the short list of technologies that you’ll need to know.

Hardware Virtualization

In a hardware virtualization solution, guest OSes are run in completely isolated, independently running virtual machines that perform exactly like stand-alone computers. Each virtual machine works with its own processor, RAM, floppy and CD drives, I/O devices, keyboard, mouse and hard disk — everything a physical computer contains. This provides a tremendous advantage to IT infrastructures as it means that multiple disparate OSes can run simultaneously on a single machine.

The drawbacks to this approach include a slight to moderate performance hit compared to native operation, and that OSes running in virtual machines must work natively on the available chipset. For example, a virtualization solution running on an x86 chipset can only run x86 operating systems.

A technology that is increasingly important to hardware virtualization is the hypervisor, which in layman’s terms, is a thin layer of software that sits directly on the hardware layer to control critical hardware resources.

Hypervisor technology, which is offered by several vendors including XenSource, VMware, and my company’s Parallels business unit, enables all operating systems to work at the same layer (as opposed to a non-hypervisor solution, in which guest virtual machines run on top of a primary OS). This means that each virtual machine’s virtual hardware resources can connect directly to the host machine’s hardware resources by making “hypercalls” to the hypervisor, rather than having to “tunnel” through the primary OS.

The hypervisor approach can lead to better virtual machine stability, isolation, and performance versus a non-hypervisor solution. Hypervisor technology also enables the use of processor-level technologies from Intel-VT (Intel Virtualization Technology) and AMD-SVM (AMD Secure Virtual Machine), which offload a substantial amount of the heavy lifting from the virtualization layer to the processor layer, meaning that OSes can run much more like they would on a native hardware set. With a hypervisor in place and Intel VT or AMD-SVM present, virtual machine performance and stability increase exponentially.

Paravirtualization

Paravirtualization is completely different from hardware virtualization. Here, virtual machines are presented with a software interface that is similar, but not identical to, the physical machine’s hardware resources. Rather than virtualize a complete set of hardware that runs as an independent virtual machine, it virtualizes the operating system level, effectively dividing it into multiple isolated virtual environments that can run simultaneously.

This approach can provide extremely high-performing virtual machines, but there are some critical drawbacks. Most significantly is that in most cases, the guest OSes must be ported (i.e., modified for compatibility) to run within the paravirtualized environment. This means that most “out of the box” operating systems won’t be compatible with the paravirtualization solution. The open-source Xen hypervisor is an excellent example of a virtualization tool that uses paravirtualization.

Because this type of virtualization puts individual environments (“containers”) in direct contact with real hardware and doesn’t add additional processing layers (such as a hypervisor), overhead is almost zero. With the single OS, critical memory resources are used more efficiently than in any other virtualization technology, enabling up to 10x the number of virtualized environments that you could get using hardware virtualization on the same server. However, all virtual machines must run the same operating system.

In a large server deployment, this supposed limitation can actually be an advantage, particularly by eliminating or decreasing “OS sprawl,” which can seriously complicate datacenter operations and waste thousands on unused licensing. Sun employs this method via its Solaris Containers, and my company, SWsoft, does work in this field via our Virtuozzo product for Windows and Linux and via our sponsorship of the OpenVZ open-source virtualization project.

Emulation

Although not a true form of virtualization, emulation is often lumped into the category since it provides a similar end result to hardware virtualization. In a pure emulation solution, a complete hardware environment is created in software. For example, GuestPC and Microsoft’s Virtual PC for Mac both emulate an x86 chipset on a PowerPC Mac, thereby allowing the Mac to run Windows and OS X simultaneously. The upside is that any hardware scheme can be created, regardless of the host machine’s configuration. The downside is that pure emulation solutions are very complex and, as a result, deliver poor performance.

The Value of Virtual

The real value of virtualization lies in drastically reduced costs. It eliminates the need to equip each employee with a separate PC to work with each required OS and application set (in the case of desktop computing) or the need to allocate only one OS for each server in the datacenter, even though most enterprises run on some mix of Windows and Linux and that even a “maxed out” single-OS box usually doesn’t even get close to using 100% of its hardware resources. For both server and desktop virtualization, there a number of potential benefits:

  • You can get more out of every dollar you put in to your hardware by actually using the hardware you paid for more efficiently. Better yet, eliminate some of your hardware spending altogether.
  • Go “green.” By consolidating multiple physical servers, you can save not only on hardware costs, but also lower your company’s energy footprint by reducing operating and cooling costs. A dense solution like OS virtualization is a good choice here.
  • “I need, I want, I need, I want…” Now you can give each employee access to multiple machines from a single workstation. Key for developers and testers who work cross-platform.
  • System admins rejoice! Test critical new software and patches on disposable virtual machines/virtual environments before deploying them to “real” hardware. No more “guess and check” with mission critical systems.
  • Run legacy OSes such as DOS, OS/2, and eComStation without supporting obsolete real hardware. For this, you’ll need hardware virtualization’s ability to run disparate operating systems simultaneously.

Given the many different solutions to choose from, and considering that each has a long list of advantages, drawbacks and uses, the next logical question is “Which one is best for my business?” Conveniently enough, that’s what we’ll be discussing in the next installment. We’ll be discussing common failure points of the traditional “one machine for one OS” physical IT infrastructure, and how these virtualization solutions can help alleviate them.

Comments on "Virtualization 101"

fgalan

Very good article!

However, some litte comments… You said “all virtual machines must run the same operating system [using paravirtualization]“. I should say this is not necessarily true, at least for Xen. Each domU (the term to refer to virtual machines in Xen parlance) can use a different kernel version (you set it with the ‘kernel’ parameter in the domU configuration file). Beyond the kernel, each domU can use a different filesystem (i.e., virtual disk), set with the ‘disk’ parameter.

In addition, I should add another kind of virtualization to the list, usually knows as system-level or operating system virtualization. Some examples are Linux Vservers, FreeBSD jails and OpenVZ/Virtuozzo (the one you mentioned! :). Some people consider they aren’t a true forms virtualization, but the true it’s that they provide isolated execution environment in a lighter way than the other approaches (hardware virtualization, either application or hypervisor based, and paravirtualization). And, in this case, all these environments share the same operating system.

Reply
dantrevino

I’m not familiar with FreeBSD jails or Linux VServer, but with OpenVZ, you most certainly do not share the same operating system. I currently have Ubuntu virutal servers (7.10, 8.04) running under Debian Etch host. Others have Ubuntu under CentOS, etc, etc.

What they do all share is a reliance on the host _kernel_ for scheduling and maintaining isolated processes.

Reply
bruce384

So we’ve all got our favorite OS installed on our computer and maybe XP on another partition, but we have some Windows program we need to run now and then and not have to reboot. Can we do away with that XP partition if we use virtualization? Can vmware or any of the others be loaded onto the linux system just like any other app? Do I load the Windows OS on top of vmware and then the windows program on top of that?

Virtualization 101 got me closer, but didn’t tell me where to start.
bruce

Reply
wyginwys

Bruce
Can vmware or any of the others be loaded onto the linux system just like any other app? Do I load the Windows OS on top of vmware and then the windows program on top of that?
Yes to both questions.
You can use virtualization with (almost) any linux distro and other oses.You can install WinXp on linux by using virtualization.Even more than on Windows Oses on the same linux(or other) host. You can interact with these guest oses from almost anywhere.

Reply
rolandp

Virtualisation is obviously a long overdue technology to reduce the number of ridiculously lightly loaded servers littering our landscape. I am sure that the software will develop and get easier and easier to install and manage but it is not clear what some of the cost may be in numerical terms. What is the typical overhead, or performance cost in virtualising a server.

Clearly one option (Which I know has its down side) is to combine the functions of a number of servers onto one but how much throughput can be expected from a virtualised machine compared with a native machine?

Roland Pullen

Reply
fgalan

Absolutely right :)

The operating system is more than the kernel, so my statement should be “all these environments share the same _kernel_”, as you said. Operating systems (each one contained in a isolated root filesystem in the hosting machine) can vary.

I know a bit about FreeBSD and Linux Vservers and they behave the same way (i.e., same kernel, different per-filesystem operating systems).

Reply
fgalan

Regarding performance, I don’t have the benchmarks now, but in my humble opinion and based in my experience with VMware, Xen and User Mode Linux, I think that a long way has walked since late 90s, when VMware launched its first products to virtualize x86 platforms. Current techniques (specially hypervisor-based ones, such as Xen or VMware ESX, etc.) are highly optimized so they can reach a performance ratio quite close to native one.

Specially when paravirtualized OS or the hardware extensions provided by the main CPU vendors (Intel VT-x and AMD-v) are used.

Your las paragraph also bring an interesting point. Virtualization doesn’t necessarily means to split a physical machine into multiple virtual machines, but also to aggregate the combined power of several physical machines into one big virtual machine. What virtualization actually means the decoupling logical resources from physical infrastructure, no matter if this decoupling is N:1, N:1 or even 1:1. Have a look to PVM, for example.

Reply
fgalan

Errata:

[...] What virtualization actually means is the decoupling of logical resources from physical infrastructure, no matter if this decoupling is N:1, 1:N or even 1:1

:)

Reply
ohmay

Although its name (Parallel Virtual Machine), PVM has nothing to do with virtualization. It is a library for message passing programming, and, by the way, a library that is in decline.

So yes, virtualization actually means the decoupling of logical resources from physical infrastructure, but I don’t think that PVM is a good example for that.

Reply
zerlgi

VirtualBox -recently purchased by Sun Microsystems – supports “seamless mode” for guests, so that you can run Linux host & Windows VM, with “start” menu from both appearing on your desktop, and apps launched in separate windows.
(http://www.virtualbox.org/wiki/Screenshots)

… Virtualbox host can be Lin/Win/Mac, guests can be Win/Lin (probably Mac too)
as demonstrated more clearly in screenshots
http://liquidat.files.wordpress.com/2007/09/virtualbox150_nahtlos_linuxhost-winxpguest21.jpg
http://www.virtualbox.org/attachment/wiki/Screenshots/VirtualBox_OSX_beta_3.png

Disclaimer: I do not work for, nor am I affiliated with Innotek or Sun Microsystems.

Reply
iansane

VirtualBox is awsome as far as speed but as far as networking options for a virtual network on a single host the options are limited to your ability to perform advanced configurations and scripting through terminal with linux and VBox commands.

In VMWare server version 1 and 2 Host interface bridging just works by choosing the bridging option. That’s it! But where I can barely run one vmware vm on my host with AMD64 X2 and 2 GIGs of RAM, I can run 3 or 4 VirtualBox vm’s at once on the same system.

The web interface brings networking to a screeching halt because of bandwidth in VMWare.

So it all depends on what’s important to you as to which one to use but either one will work with Linux or Windows as a host and Win/Linux guests. Even virtual windows servers and linux servers. Virtualization is awsome!!

Reply
barotashish

I only want to say one thing that,

This is the right time when we are in stream where we are getting freedom to use and spread virtualization, so we all have to jump in it and have to enjoy it.

Why should not?

Regards,
Ashish Barot.

Reply

With every little thing which seems to be developing within this particular area, your viewpoints are actually fairly refreshing. On the other hand, I beg your pardon, because I do not give credence to your entire strategy, all be it exciting none the less. It looks to everyone that your comments are actually not entirely validated and in actuality you are generally your self not wholly certain of your assertion. In any event I did enjoy examining it.

Reply

Thanks for your marvelous posting! I quite enjoyed reading it, you could be a great author.I will be sure to bookmark your blog and definitely will come back in the foreseeable future. I want to encourage one to continue your great work, have a nice weekend!

Reply

Hey there. I discovered your website by the use of Google whilst searching for a comparable subject, your web site got here up. It looks good. I’ve bookmarked it in my google bookmarks to come back then.

Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>