An overview of the hottest technology that is changing the way we use computers
By Travis Cardwell
When virtualization leader Vmware went public on August 14, it was the biggest IPO since Google listed in 2004. The company is valued at US$20 billion and the forecasted sales for this year alone are over US$1 billion. Their customers include 100% of Fortune 100 companies and 84% of Fortune 1000 companies. Virtualization is currently revolutionizing the computer industry, but what is it?
A simple way to think of virtualization is to think of the simulation of a computer. Consider a computer system that runs Windows on an Intel processor. You can install virtualization software, called a virtual machine, that simulates a whole computer within Windows. The virtual computer has virtual hardware: simulated keyboards, hard drives, monitors, and so on. A virtual monitor can be displayed in a Window or fullscreen, virtual hard drives can be stored as files, and these can even be made to resize automatically and not take up any more space than is necessary. The virtual machine routes input to the virtual environment when it has focus, so the same keyboard and mouse that is used to control your computer can be used to control the virtual machine.
Essentially, a virtual computer is the same as a normal computer: install an operating system on it for it to boot and then install software on that operating system. It is possible to install any operating system that runs on the virtual processor, such as Linux and run it simultaneously with Windows.
Virtualization is a very hot technology right now, but interestingly, it is not so new. Actually, it has been around for more than 40 years: IBM sold the first virtualized operating systems in the mid 1960s! Why then is it such a hot topic now? The answer lies in the fact that virtualization requires significant computing power to perform well. Processor power has increased according to Moore’s Law, doubling every few years, which makes today’s computers approximately 185,000 times as powerful as those of 1972. We have passed the point where virtualization has become practical for widespread use.
The purpose of this article is to give a brief introduction to virtualization. Some benefits and negative points of the technology are discussed, followed by some use cases. Finally, some suggestions for how to get started with this exciting technology are presented at the end.
Benefits of virtualization
There are many benefits to using virtualization on servers as well as desktop computers. The following are some of the primary benefits.
Virtualization allows users to run multiple systems on a single computer, which reduces the amount of hardware required. In the server environment, utilizing virtual machines to make the most of hardware allows maximization of processing power and can reduce the number of servers needed. In the office environment, virtual machines enable users to run multiple configured systems within a single computer, which can reduce the number of computers needed on their desk. The immediate benefit of running less hardware is that it reduces hardware cost. Also, fewer moving parts means fewer malfunctions, which results in lower maintenance costs while lower energy requirements translate to lower power costs. Of particular interest in Japan, reduced hardware saves space, and of course, smaller space requirements translate to lower rent.
Virtualization provides significant security benefits on servers because it allows the isolation of different services in completely separate environments. Each virtual environment can run only what is required, which means that there is less software to malfunction or exploit. It also means that fewer software updates are required, so the amount of software maintenance needed is reduced. Note that this benefit is amplified when used with open source software. For example, it is possible to configure the Linux kernel to run as efficiently as possible on a given virtual machine. Just install the software that is needed to run the desired application, and configure such software to include only what is absolutely required, resulting in a lean, targeted service.
Virtualization also provides significant security benefits on desktops. By running software in a virtualized environment, it is separated from the main system. This protects the system from malware such as viruses and spyware; such malware is restricted to the virtual environment, and the main system is also protected from any instability in the software run under the virtual machine. If the software becomes unstable, it cannot have impact on the main system, and if it crashes, a simple reboot of the virtual machine will not affect software running on the main system (or other virtual machines).
The use of virtual appliances allows for simple deployment of applications. A virtual appliance is an application that is packed with an operating system to run on a virtual machine. One of the difficult things about distributing applications is that software can be run in a wide variety of environments that are difficult to test for: users run the application on various versions of the operating system, with various patch levels and configurations, not to mention different kinds of hardware. It is impractical to test the software on every possible system. Virtual appliances, on the other hand, provide a consistent environment that is separate from any system that the user runs on. While this clearly makes the application easier to develop, it also has many benefits for those who use the application. One reason for this is that the applications can be preconfigured by the developers since there are fewer system configuration variables. This reduces the time required for deployment of such an application and makes the whole process much less error prone. The controlled environment also means that software patches are a lot easier to write and deploy, making the application much easier to maintain.
In addition, virtualization promotes modularization, which is a good development/design practice that has many benefits. Modularization is the separation of software/hardware into functional components that operate independently of one another. Virtualization allows you to include all software required to run a service in a single package and clearly define its external interface while hiding implementation details. Modules that perform the same function can be designed to be interchangeable by providing the same external interface. The application can be run on any platform through a virtual machine, providing a consistent interface despite possible differences in underlying hardware. Applications could even be designed to run in parallel, which has benefits such as high availability and fault tolerance.
Negative points of virtualization
There are, of course, downsides to any technology. The following are some of the primary concerns of using virtualization, as well as suggestions for how to deal with them.
Virtualization entails an extra layer of abstraction, which results in decreased performance. This is particularly noticeable when using emulation to simulate a different kind of hardware. In this case, one must evaluate the system on a case-by-case basis. If you want to run a virtual machine to test web software, then decreased performance is probably not a big issue. If you want to run a processor intensive application such as a 3D graphics program, however, emulation may not be a viable solution. Servers, on the other hand, are generally run using full virtualization, so emulation is not an issue. Running many virtual machines on a single server, however, can divide the resources of the machine and hinder performance—although this can be dealt with in the design of the system. The system should be designed to maximize use of the hardware during peak usage, not swamp it.
Running multiple systems on a single computer means that many systems go down when a single computer fails. The best way to deal with this problem is to plan for it and make sure that preparations are made for when it happens, which is true for any kind of systems failure. The modularity of virtual appliances, actually, allows for quick response and recovery in this kind of situation. You can restart failed services on different hardware without the worry of reconfiguration, and since the services are packaged separately, it is possible to split them among multiple computers as a temporary solution while the main computer is repaired.
Use cases
Hardware has become fast enough that virtualization has many practical uses today. The following are some examples of how virtual machines are used.
Server Implementation
As is made apparent in the discussion on the benefits of virtualization above, virtual machines work well in the implementation of servers. Using virtualization allows users to maximize use of hardware as well as take advantage of the many security benefits that virtualization provides.
Quick Enterprise Solutions
Virtual appliances are also invaluable as quick enterprise solutions since they can be put into place quickly, with minimal configuration. This can be used for ad-hoc solutions to temporary situations, such as running special services for a conference, as well as first response measures to emergencies, like implementing a firewall to keep a LAN online until a broken firewall is repaired. There are many virtual appliances made available by companies as well as individuals. Virtual appliances exist for firewalls, virtual private networks, backup solutions, communications applications, databases, mail servers, web servers, and more, many of which are available for free.
For General Users
Virtualization also has many uses for general users. One practical business use is to run legacy applications under modern systems. If a necessary application does not run under modern versions of Windows, for example, an older version of the operating system can be installed under a virtual machine and the application can be run through it. You can even run applications for other operating systems. This would let you take advantage of the security and stability of Linux or Macintosh, for example, yet still run programs that are only made for Windows. Speaking of Linux, virtualization provides an easy way to try out new versions of operating systems and free software without having to install them. In addition to providing a method of software evaluation, this is also great for education. A virtual machine can be used to install Gentoo Linux, for example, in order to learn about how Linux works. If you mess up the system, it is very easy to start over and some virtual machines even support reverting to a previous state!
Software Development
One of the fields that benefits most from virtualization is software and web development, where virtual machines are used to test new software under different configurations. You can set up a wide variety of system configurations under virtual machines, with different operating systems as well as patch levels. A major benefit over installing multiple operating systems on different partitions of the hard drive is that you do not have to reboot your whole system to change between them. With a virtual machine you can even copy your environment image to save time. For example, if you need to test your software under Windows XP SP1 as well as Windows XP SP2, simply install XP1, copy the image, and then upgrade to SP2 in one of the copies. There is no need to do the complete install twice, which would be a waste of time. For web development, it may be necessary to test a website under multiple versions of Internet Explorer, but it is not easy to install multiple versions on the same computer. Through virtualization, however, it is possible to have many versions running on a single system.
Virtualization is also beneficial to software development because it enables the running of software in a consistent, protected environment. Consistency helps in tracking down the source of bugs and protection limits the effects of the software to the virtual machine and keeps the main development system safe.
Sales
The creation of virtual appliances can even help sales by allowing you to create demonstration and evaluation versions of software that are preconfigured and in a controlled environment. Many companies do this because it allows potential customers to evaluate their software with minimal hassle, which results in a greater overall perception of the software.
The Qi of modern business
“Qi” (pronounced chee) is a Chinese concept that is best translated to English as “life force.” It is the metaphysical force that is necessary for action. While usually associated with living beings, it is also metaphorically associated with inanimate objects and concepts that are not static.
In the haiku to the right, information is said to be the Qi of modern business, reflecting the now common phrase “information is power.” Note that the character for “Qi” in the Japanese version is rendered in the Chinese style since the Japanese equivalent has a slightly different nuance.
The graphic is an artistic interpretation of the idea that “everything is number” (as taught by Pythagoras circa 6th century BCE). Since virtualization is the simulation of hardware within a computer, it is a concrete example of how a physical system can be represented abstractly with numbers. There is an elegance in the recursive nature of a computer simulating itself.
How to get started
All you need to try out virtualization for yourself is a fairly modern computer. Beware that a virtual environment will run (slightly) slower than the system that it runs on, so do not expect good results if your computer already feels slow. In Windows XP, Mac OS X, or Linux, a minimum of 1GB RAM is recommended to get a good feel for the technology, although experimentation is certainly possible with less. In Windows Vista, considerably more RAM is needed since much of it is taken up by the host OS.
For somebody who is just getting started with virtualization, we would recommend trying out Vmware products, since they are intuitive and easy to use. If running Windows or Linux, an easy way to start is to download and install the free Vmware Player. A wide variety of virtual appliances can be found on the Vmware website as well, which makes it possible to boot into a preconfigured virtual environment to experiment with. For those wishing to try configuring their own virtual environment, Vmware Server is a great application, and is also free. If you are running Mac OS X, you can download and install a 30-day evaluation version of Vmware Fusion to get a feel for the technology. Note that a 15-day trial version of Parallels is also available.
Though computer technology has greatly improved since its first implementation, we are still at the tip of the iceberg. The real computer revolution has yet to come. Technologies such as artificial intelligence and virtualization provide the tools needed for such a revolution, and we have been working on them for decades. Virtualization is maturing now, and it is a very exciting time to be alive! JI
Travis Cardwell is a software developer and entrepreneur living in Tokyo.
References
Vmware Player
www.vmware.com/products/player/
Vmware Virtual Appliances
www.vmware.com/appliances/
Vmware Fusion (for Mac OS X)
www.vmware.com/products/fusion/
Parallels (for Mac OS X)
www.parallels.com/
J@pan Inc Magazine, Nov/Dec 2007
Comments
Anonymous (not verified)
November 5, 2008 - 05:15
Permalink
impact of virtualization
Could anyone please tell me how virtualization affects the agile and prescriptive software development.
Anonymous (not verified)
February 14, 2009 - 14:40
Permalink
Awesome article
Great article, nice work
Anonymous (not verified)
July 1, 2009 - 23:20
Permalink
nice article
Really good article and very informative. This article can be used as reference to understand about virtualization initially.