Imagine that there is a computer program that is not supported by the operating system (OS) that you are currently using on your computer. For instance, there may be a Linux application that you would like to try out, but it will not run natively on your Windows XP machine. Or perhaps you have converted over from Windows to Linux, but now you want to run a tax-preparation program that only has a Windows version. You could try to borrow someone else's computer, but that oftentimes is not possible, and certainly not convenient for both you and your friend. You could add a new partition to your computer's hard drive, install the needed OS on the partition, and then use dual-booting; but that approach can be quite time-consuming and risky, and requires a nontrivial amount of computer knowledge and gutsiness.
What is true for individuals in this case, is also true for countless small software development companies that need to test their products on every version of every operating system they (allegedly) support — before releasing it to the public — but do not have the financial and technical resources to purchase and maintain multiple operating systems (running on multiple computers or partitions). For an individual, this may mean not being able to run a particular program, with no serious financial impact. Yet for a software development firm, it could mean the difference between their new product running smoothly for all of the consumers running a variety of operating systems (with many versions), versus the monetary and publicity consequences of their product failing on one of those operating systems for which it had not been tested.
This is the quandary that an individual or an organization can encounter when trying to run an application. There is a similar situation for operating systems and hardware. Imagine that you want to run an OS on a hardware platform for which it was never intended, perhaps for reasons similar to the application testing scenarios mentioned above. You or your company might not be able to afford to purchase all of the combinations of hardware components that would be ideal if you had an unlimited budget.
These challenges are now being met through the use of virtualization. Specifically, this involves the development and use of new computer programs that can run an operating system, making the OS "think" that it is controlling the computer's hardware — actually, the device drivers — directly, when in fact its instructions are being passed through this extra layer. Such a program is known as a "virtual machine" (VM) or "emulator", because it emulates a computing environment or machine, and serves as a layer separating the guest OS from the (otherwise incompatible) hardware. Note that the terminology has evolved over time, and continues to evolve, and thus various authors and reference sources may use the terms somewhat differently from one another. Yet the essential ideas are well understood and recognized.
There are many virtual machine applications and suites of products available, including commercial products and open-source ones. Some of them are more specialized than others; for instance, some specialize in allowing users to run a limited set of the most popular Windows applications on a Linux machine, without the need for installing a version of Windows. (One can imagine how Microsoft executives feel about these free products.)
In the commercial world of virtual machines, the most well-known market player is VMware, which first started out offering an eponymous and revolutionary product that was capable of hosting multiple operating systems on a single computer. Depending upon the particular edition of VMware in question, the operating systems could include Windows (NT, 2000, and XP), Linux, Novell NetWare, or Solaris x86. As happens with so many other mature software lines, VMware began with that single edition, but has since rolled out several different ones, with each targeted toward specific needs and budgets.
Most of their 19 products fall into two major categories — data center and desktop. In this article, I will focus on key components of those two categories, and will not explore the remaining four products (VMmark, Player, vCenter Converter, and Studio).
Of the ten products in that first category, VMware Infrastructure, the company's flagship product, allows the purchaser to create a virtual data center that can be thought of as an "internal cloud", which the company's website defines as "an elastic, shared, self-managing and self-healing utility that can federate with external clouds of computing capacity". This allows a company's information technology (IT) staff to use all of their virtualized resources flexibly, free from "the constraints of static hardware-mapped applications".
VMware Infrastructure encompasses application services that make it possible to support operating systems (such as Windows and Linux), application frameworks (such as Microsoft's .Net and Sun Microsystems's J2EE), software deployment strategies (such as Software as a Service, a.k.a., SaaS), and individual computer applications. It also encompasses infrastructure services that allow one to utilize a variety of hardware, data storage, and networking products. These can be connected to internal and external clouds (not the airborne variety, but instead abstracted computational resources that are usually located on the Internet).
As a high-end product, VMware Infrastructure's list of features and capabilities is substantial, which is commensurate with the requirements of any enterprise that must make a commitment to a range of operating systems, hardware platforms, etc. The licensing costs are equally substantial, ranging from $1540 to $2640 for VMware Infrastructure Foundation, with various levels of support. It is available in four different languages, and comprises ESX, Virtual Machine File System (VMFS), Symmetric Multi Processing (vSMP), vCenter Server Agent, Consolidated Backup, and Update Manager.
Coming Out of the Clouds
VMware's desktop products can be divided between those aimed at companies and those aimed at individual consumers. In the enterprise category, VMware View (formerly known as VMware Virtual Desktop Infrastructure) supports the creation of virtual desktops on any hardware device, with the additional benefits of centralized control. As a result, the IT staff can run all of the company's desktops in a central location, for easier management. At the same time, individual users within the company can view their applications and data, in their own desktops, which can be fully customized, just as if they were running on hard drives in PCs located in their cubicles. Prices range from $1815 to $2456.25 (why do they bother specifying 25 cents?!).
The VMware products in their consumer category are well-suited for people who simply wish to run an application on an OS that would normally not support it — without the need for creating a virtual data center in the family room. At the top end of the scale, VMware Workstation allows one to run multiple operating systems on a single PC (desktop or laptop). It runs on Windows and Linux (as the host OS), and supports most desktop and server editions of Microsoft Windows, Linux, Solaris x86, Netware, and FreeBSD (as guest operating systems, which in turn can run the applications that they support). Pricing starts at $189 for a single license, and goes up to $1690 for ten licenses.
For anyone who wishes to try out virtualization, without any upfront financial commitment, VMware Player makes it possible, because it is completely free of charge. It allows you to operate any virtual machine created by VMware Workstation, Fusion, Server, or ESX, as well as Microsoft Virtual Server or Virtual PC. VMware Player can also be used to test any of the virtual appliances available from the VMware Virtual Appliance Marketplace.
Regardless of whether you need a data center VM solution for your company, or a solution for your single desktop, VMware should have a product that can match those needs. In all cases, you can download trial versions of the given product, see demos online, find local resellers, and read more information in the online forums.
The advantages of virtual machines are many. As a result, we will most likely be seeing more use of them in the future, with the proliferation of different operating systems, their versions, hardware platforms, and applications.