Virtualisation has been around in the IT world for decades, the difference now is where it’s being applied. Previously, it was the domain of the high-end mainframe, but today we're starting to see its use in the Intel market, in servers, in desktops and even in the laptop. This is because modern Intel-based machines are now so powerful they spend typically 90% of their time waiting for things to do. This means they have a huge amount of headroom available to do other things, such as pretend to be another computer or indeed lots of other computers, without you having to buy any extra hardware. However, there is far more to virtualization than simply cost savings.
In its most basic form, a computer consists of hardware and software. The hardware provides the platform on which to run the software, and the software provides a way for the user to talk to the hardware. Previously in the Intel market, these two were intimately linked. You ran your applications on a specific operating system (OS) and your OS on a specific hardware, tailoring it with the appropriate drivers. Change any of the parts and you have to tweak the others to bring it all back into alignment.
Virtualisation decouples the software from the hardware so that those inter-dependencies no longer exist. It takes the underlying hardware and masks it from the OS and presents instead an idealised (or virtualised) set of hardware devices to the OS. This is called a virtual machine (VM) and its purpose is to simulate an entire computer onto which an unmodified OS can be loaded and run. The virtualisation process is handled by a layer that is sometimes called the hypervisor.
However, Virtualisation is not limited to the server, people are also starting to virtualise storage. This began when people began using RAID arrays. These decoupled the OS from seeing the actual disks that made up storage and instead presented it with a larger, more resilient, idealised disk. The next phase was the introduction of storage area networks (SAN). This allowed multiple servers to share the same storage in a secure and isolated manner (partitioning) and also enabled servers to access storage at distances of several kilometres.
This evolution is continuing at a pace and now we are seeing storage systems that completely decouple servers from the hardware and present not just an idealised disk, but an idealised storage device. IBM’s SAN Volume Controller (SVC) is an example of this kind of technology. It takes multiple, disparate storage devices and presents them in a consistent manner to the server. Even more crucially it allows the storage to be seamlessly moved from one device to another, while the server is in operation. This means upgrades and maintenance can be carried out without disruption or downtime. However, for the rest of this article we’ll be concentrating on server virtualisation.
The benefits of virtualisation include encapsulation, isolation, partitioning, server proliferation, legacy systems, deployment, availability and disaster recoverability, and utilisation. Let’s look at these.
Encapsulation: The entire state and definition of a virtual machine are contained in one or more files. Typically one file will represent the hard disk that the virtual machine sees, others might contain the setting for the virtual BIOS. This information can be copied and moved just like any normal file. The critical difference is that when you copy the files you copy the entire virtual machine. So if a developer wanted to test a change on a production server, he could take a copy of the VM files from the production environment and start them in the development environment, running his tests knowing he is running them in an exact copy of the production environment.
Isolation: VMs are isolated from each other by the hypervisor. If one crashes, the hypervisor ensures this does not affect other VMs running on the same server.
Partitioning: Because VMs use a simulation of a hardware resource, multiple VMs can share the same resource at the same time. The hypervisor ensures fair allocation of the resources. This means it’s possible to run multiple VMs on a single CPU.
Server proliferation: The practice of putting every application from every department on its own server does great things for performance and isolation. Unfortunately, it also leads to a massive proliferation, so it’s not uncommon for large businesses to have thousands of servers. That’s thousands of systems to manage, monitor, maintain and upgrade, thousands of systems consuming electricity and generating heat! Virtualisation can enable unmodified servers to be consolidated onto a single hardware platform. Consolidation ratios can go as high as 50:1, though we normally reckon between two and four legacy VMs per physical CPU. So a four-way system could accommodate eight to 16 VMs.
Legacy systems: Many businesses have production systems that are running on so-called legacy operating systems. The most common is Windows NT 4. The applications themselves run perfectly, but the hardware they run on is now years old and is wearing out. Unfortunately, modern replacement servers don’t support NT 4. But the ability of a VM to decouple the OS from the hardware means an NT 4 VM can run on a modern server.
Deployment: Deploying new systems can be a major headache for IT departments, new hardware must be ordered, operating systems and applications must be installed and the system should be subject to burn in testing. All of this takes time. The problem is that most end users would like the system to be running immediately. With virtualisation, you can achieve this apparently impossible goal.
Availability and disaster recoverability: One unexpected phenomenon that has arisen in recent years is "creeping criticality". Windows applications that were installed a number of years ago as "nice to have" have become essential. They must be kept running and in the event of a failure they must be up and running again immediately. E-mail is a favourite example of this. How damaging would it be to your business and commercial standing if you had no e-mail system for 24 hours? Encapsulation means you can start a copy of a VM on a different set of hardware, in a different location and know it will work.
Utilisation: Most modern servers run at only a fraction of their maximum performance; in effect, they’re idling most of the time. Partitioning means you can massively increase the use of a server by running multiple VMs on it without compromising performance.
Regarding tools for virtualization, there are two main players in the virtualisation market for Intel servers: Vmware and Microsoft.
Vmware was founded in 1998 and has a range of products that span from the desktop to the enterprise. Workstation is for use on desktops, GSX Server runs on a server as an application and so needs an OS - unlike ESX Server which runs natively on a server without the need for any other OS. Interestingly, VMs from any of the products can easily be used on the others. This allows developers to test a VM using Workstation on their desktops and then transfer the same VM directly to the production environment running on ESX Server. Vmware ESX also offers several unique capabilities. Virtual SMP allows VMs to see and use two CPUs, and Vmotion allows a live, running VM to be moved seamlessly from one hardware platform to another without disruption.
Microsoft entered the market fairly recently with Virtual Server 2005, which is similar to Vmware GSX server in that it runs as an application on a server running Windows Server 2003. Microsoft is about to release the second generation of this product, which will significantly increase its capabilities. Specifically it adds a cluster-like technology that will allow it to automatically failover a virtual machine from one platform to another in the event of a hardware failure.
P2V (Physical to Virtual) is a way of referring to the process of migrating a physical server to a virtual environment. Both Vmware and Microsoft offer P2V tools to aid in the automatic migration of servers to their environments. Third parties such as PlateSpin also offer P2V tools. PlateSpin has a set of modules that allow migrations in either direction and also enables servers to be stored as images for future deployment.
Certain types of system are particularly suitable for virtualisation and can often provide significant "quick wins" for the initial stages of a virtualisation project. Legacy systems running on slower, single CPU machines and infrastructure systems, such as domain controllers, are all excellent candidates. But we can’t get too carried away: servers that have multiple CPUs, very high I/O rates, special adaptor cards, or that run intensive applications such as databases, aren’t yet suitable for virtualisation.
There are also business and human factors to consider for a successful implementation. End users have become used to having their own systems for running their applications. They will often object very strongly to any suggestion that they "share" a server. This objection may stem from an inherent distrust of virtualisation as a new technology or it may arise from concerns about the ability of the virtual environment to isolate and protect their data. At times these objections can be overcome by education, but some IT departments have simply decided that provided they meet the requirements of the user, there’s no need to reveal how they do it.
One question often asked concerns licensing of the VMs and their operating systems. Until very recently, application and OS vendors made no distinction between physical and virtual machines. All required licences. However, Microsoft has recently announced that Windows Server 2003 Enterprise Edition R2 and Longhorn will support a number of VMs at no extra cost and customers will no longer be required to license inactive or stored Windows instances.
A huge number of companies are actively using virtualisation in their Intel server space. Indeed, we have seen an enormous and growing interest with most of the major companies either deploying or planning to deploy virtualisation in their production environments in the near future. On the technology front, both Intel and AMD are building hypervisor functionality directly into the next generations of their CPU. This will significantly reduce the overhead required for virtualisation. In the past two years we've seen virtualisation go from the periphery of computing, found mainly in the development and test environments, to mainstream production systems. This is a technology that is coming of age in the Intel market and the advantages are huge - the future is undoubtedly virtual. |