What is Server Virtualization Software?
Server virtualization software enables the creation and management of virtual machines (VMs) on a physical server where each virtual machine acts as an independently running server. Server virtualization allows IT to maximize the full potential of today’s powerful physical servers. Each VM on the physical machine operates independently of the other VMs and runs its own operating system and applications.
Server virtualization software acts as a layer (usually called the hypervisor) between the physical hardware and the VMs, abstracting the hardware resources and presenting them to the VMs as virtualized hardware. The hypervisor allocates hardware resources like CPU, memory, storage, and networking resources to each VM. Generally, hypervisors require 5 to 10% of the physical machine’s resources in order to run.
Hypervisor Types and Use Cases
There are two primary hypervisor types
Type 1 Hypervisor
Typically used in enterprise environments, and installed directly on physical hardware (i.e., “bare metal”), Type 1 hypervisors provide VMs with direct access to hardware resources, dynamically manage hardware resource allocation, and enable each VM to operate independently of the others. Type 1 hypervisors include VMware ESXi™, Microsoft® Hyper-V®, and Citrix Hypervisor™ (formerly XenServer®).
Use cases for Type 1 hypervisors include:
- Server virtualization, where a physical machine runs multiple VMs that act as servers, improving hardware resource utilization and efficient deployment and management of virtual servers;
- Creating and managing large-scale infrastructures in a data center, enabling efficient hardware utilization and flexible computing resource allocation;
- Cloud Computing/Infrastructure as a Service (IaaS), where hypervisors enable IaaS providers to create and manage flexible and easily scalable computing environments;
- High availability and fault tolerance, where hypervisors allow virtual servers to be spun up quickly when more users are active or when a host fails;
- Software development and testing, where developers and/or software code testers can quickly replicate a production environment and test software compatibility on a variety of operating systems and configurations without impacting the host environment.
Type 2 Hypervisors
Typically used in desktop or workstation environments, Type 2 hypervisors run on top of the host operating system and provide virtualization capabilities to the guest virtual machine, which can run on a different OS than the physical machine. Unlike Type 1 hypervisors, which dynamically adjust hardware resources for the VMs they manage, with Type 2 hypervisors, the user allocates physical resources like RAM to the VM; if the VM experiences performance issues, the user must adjust resource allocation. Type 2 hypervisors include VMware® Workstation, Oracle® VirtualBox, and Microsoft Virtual PC.
Use cases for Type 2 hypervisors include:
- Desktop virtualization, where a user runs a VM on their local system in order to use legacy applications, or as away to isolate computing environments (for example, work-related computing from personal computing);
- Software development, where a developer writes code on his local device using a different operating system from the OS on his physical machine, or when a developer wants to isolate his development machine from his physical machine;
- Software testing and debugging, where a single machine is adequate for testing purposes (i.e., not a full production environment);
- Education and training, where a student can practice and experiment with different operating systems, software configurations, and network settings without needing dedicated hardware for each;
- Demonstration and presentation, where a presenter or sales representative can run software demos on demand using a single physical machine.
Note that Type 1—not Type 2—hypervisors are used to enable server virtualization in production environments due to their ability to dynamically adjust resource allocation.
Alternative Server Virtualization Software Approaches
Alternative virtual server software approaches include para-virtualization and OS-level virtualization (otherwise known as containerization).
In para-virtualization, the guest operating system (OS) is modified to communicate directly with the underlying hypervisor, allowing the guest OS to be aware that it’s running in a virtualized environment so that it can make timely calls to the hypervisor regarding resource needs when running certain operations.
By communicating directly with the hypervisor, para-virtualization reduces the overhead associated with tasks like memory management, I/O operations, and system calls and thus performs better than full virtualization in certain scenarios.
Because para-virtualization requires that modifications be made to the guest OS, it may not be compatible with all operating systems right out of the box. Two virtualization platforms that support para-virtualization are VMware vSphere® and Xen (which is free and open source). Alternatively, the guest operating system source code can be modified to enable para-virtualization.
When used for server virtualization, para-virtualization performs best for these use cases:
- I/O-intensive workloads, where application data is frequently exchanged with a secondary storage device;
- Where high network throughput is required (i.e., bandwidth-heavy applications);
- Real time applications (video conferencing, VoIP, online gaming, some e-commerce applications, instant messaging, team collaboration);
- High Performance Computing;
- Legacy applications.
OS-Level virtualization, aka containerization, enables the creation and management of multiple isolated containers within a single operating system instance. These containers are not “true” VMs because they do not include an operating system. Instead, each container provides a separate environment with its own application and isolated resources, like CPU, memory, and file systems, with all containers sharing the host OS kernel—unlike a “traditional” VM, where the VMs running on the host do not need to use the same OS as the host.
This approach, which eliminates running multiple operating systems on a single physical server, means that containers consume fewer resources than full VMs but do not offer the same flexibility related to operating systems. Docker®, one of the earliest container technologies, is Linux-based, but addresses this reduced flexibility by provisioning containers on Windows® and MacOS® machines using a micro Linux VM that runs on the physical machine.
Containers are commonly used for deploying and running applications in a portable and scalable manner. Each container encapsulates an application and its dependencies, making it easier to package, manage, and deploy software. Containers also provide isolation between applications, eliminating application conflict even when the applications are running on the same host server.
When used for server virtualization, containerization performs best for these use cases:
- DevOps’ activities, like testing and deploying applications;
- Deploying applications in multi-cloud environments, enabling those apps to run consistently in each environment;
- Optimizing infrastructure by eliminating multiple operating systems, enabling improved scalability and more efficient resource allocation;
- Testing and debugging applications;
- Legacy application support, including easier migration and integration with modern systems.
What’s the Best Choice for End User Applications?
When delivering applications to employees, server virtualization using a Type 1 hypervisor is the most typical approach. Why? Virtual desktop technology was purpose-built for delivering virtual desktops containing productivity applications to employees, with many features that enable IT teams to manage server resources and optimize the end user experience.
Virtual technology that utilizes a Type 2 hypervisor are generally used by individuals for the use cases described in this post.
Para-virtualization is most often employed in a corporate environment for specific applications where response and performance are paramount.
Containers are primarily used by software development and DevOps teams to help make their jobs easier. Since end user computing teams have made a significant investment in virtualization technology using Type 1 hypervisors, there is little incentive to move to container technology except for unusual use cases like business-critical legacy applications.
But—if you’re a Windows ISV looking for an alternative to server virtualization software to deliver your applications to customers, consider GO-Global.
GO-Global® enables ISVs to publish Windows applications from any public, private, or hybrid cloud, to any device that supports a browser. Using GO-Global, IT can deliver Windows applications at up to 70% less than VDI solutions from Citrix® and VMware. Despite its low cost, GO-Global delivers enterprise-level scalability but is easy to install, configure, and use, with considerably less technology overhead required for implementation.