Infrastructure virtualization is most definitely not a new concept. Lowered costs coupled with increased capability may make replacing your old servers with new, expensive servers a thing of the past, both saving you money and giving you access to more powerful hardware. Developments in virtualization have led to the recent boom in use and popularity of cloud computing, and whether you choose to leverage the power of a public cloud, or simply wish to use your datacenter’s resources to create virtual hardware, the benefits are becoming impossible to ignore. Virtualization and cloud computing will give you increased scalability, reduced infrastructure costs, unparalleled redundancy and its accompanying service availability, and make your development or testing environments much more versatile. We’ll go over the basics of VPS and cloud technology, as well as a few of the most popular virtualization platforms including KVM, Xen and Open VZ.
The Anatomy of Cloud Services
Chances are you’ve heard the term ‘Cloud’ tossed around a lot lately, it’s one of the new IT buzzword, and in many cases a practical solution to application deployment. Cloud service are built upon three layers, the Application Layer, Platform Layer, and Infrastructure Layer. End users are most concerned with the Application Layer, and it is as far as they will ever go. As a systems administrator or developer, however, you will need to know how each layer works and interacts with each other. While most explanations start at the application layer, we’ll start at the Infrastructure Layer, a layer most tech savy readers are no doubt very familiar with.
1. Infrastructure Layer
This layer can be though of as the foundation of the cloud services structure. Physical hardware, such as servers, router, switches, and other devices make up infrastructure layer. The purpose of this layer is to provide the actual computing power behind applications being accessed by users, and much of this power is provided using virtualized hardware. Some well known cloud infrastructure providers are VMWare, Amazon EC2 and Presidio Enterprise Cloud.
2. Platform Layer
The Platform Layer provides most of the services that support applications, such as connectivity, data retrieval, messaging, and others. As with the infrastructure layer, many of theses services are virtualized and hosted on virtual hardware, which can provide significant cost savings and assist with proper resource allocation. Amazon Web Services and Google App Engine are some well known Platform Layer providers.
3. Application Layer
As the name suggests, this is the layer at which end-user applications run. Both enterprise and private users alike utilize this layer to get to common services such as Gmail, Calendar applications, payroll applications, and just about any other type of application you can think of. These applications are known as SaaS, or Software as a Service, another of the common IT buzzwords.
4. Virtualization and The Cloud
While cloud computing does not necessarily need virtualization, its growth and popularity is heavily based on VPS and virtual machine technology. Virtualization means that a providers’ physical hardware can be divided into a multitude of virtual servers, each using separate tools and resources and combining to provide cloud hosted services. Large cloud computing providers such as Amazon and Google make heavy use of virtualization to provide cloud hosting services to customers. Private companies can also make use of virtualization to provide a cloud to their own employees and customers, allowing to access their hosted services from anywhere and at any time. As Software as a Service, or SaaS, becomes more and more popular, so will VPS and cloud computing technology. The next two sections are concerned with virtual hardware, namely virtual private servers and virtual machines themselves.
Virtual Private Servers
A Virtual Private Server (VPS) is exactly what it sounds like: A set amount of resource operating as the virtual equivalent of a private server. VPS are hosted on a physical server running resource allocation software known as a hypervisor. The hypervisor created, manages, and allocates resources for virtual servers, or ‘guest’ servers. The overall environment is limited only by the amount of resources available to the hypervisor, and each guest machine is allocated a set amount of hardware space, RAM, and CPU processing power. VMWare and Hyper-V are the major players among companies who do provide their own in-house virtualization services, but open source products like OpenVZ, KVM, and Xen are popular with many other VPS service providers.
Virtual Machines vs Container
There are quite a few virtualization platforms out there, so we’re going to go over a few of the most popular, open source virtualization tools. These include KVM and Xen, that are used to provision virtual machines, and OpenVZ, which uses something called a container environment. Containers and virtual machines each have their own distinct benefits, and you need to know which is the best for your environment before you can pick a virtualization solution that is right for you.
Container based platforms operate using only a sing operating system kernel, while a virtual machine based application can run as many different operating system kernels as the administrator wants, providing the necessary infrastructure exists. As you can imagine, this makes a container much less demanding on its host system. The downside, however, is that you are limited to running a single operating system, which may or may not be practical for your needs.
Similarly, virtual machines act as if they are running on top of physical hardware. This means a network card will need to be virtualized as well, adding a slight restriction to throughput. Containers have no such requirement, and in fact need no hardware emulation at all. File systems also differ for the same reason, a virtual machine is its own separate, virtual hard drive, while a container is simply another chroot()
environment.
Taking all of these differences into account, the decision maker is twofold, hardware restrictions and operating system requirements. If you have the hardware to run as many virtual machines as you will need, or need to have virtual machines running a variety of operating systems, virtual machines are probably your solution. If, however, you have somewhat limited infrastructure or simply do not need a variety of operating systems, containers are much more practical.
KVM – Kernel-Based Virtual Machine
KVM is a kernel module that turns the Linux Kernel into a hypervisor, allowing system administrators to setup a virtual machine’s address space, allocate resources, and feed the virtual machine input and output. KVM allows a variety of operating systems to be run on guest hosts, including most common Linux distributions and Windows Server 2003 & 2008 (as well as Windows XP through Windows 7).
KVM does have a few downsides, it only runs on processors that support x86 HVM (Hardware Virtual Machine), but since KVM is integrated into the Linux Kernel it uses the machines pre-existing process scheduler and memory management abilities. Overall, KVM is an excellent, light-weight open source solution for your virtualization needs.
Xen
Xen provides a hypervisor (much like KVM) that allows resources to be allocated to a namespace as a virtual machine. Many large companies, such as Google and Rackspace Cloud Servers, use Xen’s hypervisor to manage their virtual infrastructure, a job it does very well. Xen allows system administrators to create virtual servers using either paravirtualization or hardware-assisted virtualization.
Paravirtualization allows virtual machines to run a modified operating system and can host virtual machines even on systems lacking hardware that supports virtualization. Hardware-assisted virtualization is meant for systems that have virtualization supporting hardware, and allows virtual machines to run a variety of operating systems including Windows and Linux. The ability to run virtual machines on hardware that doesn’t support virtualization is a feature that other VPS providers do not offer. Xen is also quite scalable, capable of utilizing over 4000 physical CPUs and 16 TB of ram, an offers a management console (Xen Management Console) to help system administers manage their Xen hosts.
OpenVZ
OpenVZ allows creation of VPSs in a container based virtualization environment. ‘Containers’ are simply an allocation of processing power, RAM, and storage space that forms a single, independent virtual server. Containers act as a real, physical server, and can be rebooted, have their own users, IP addresses or configurations. OpenVZ is different from most other virtualization technologies in that no other operating system kernels run on its hosted virtual servers, unlike the virtual machines hosted by Xen or KVM. This doesn’t provide as much flexibility in operating system usage, but does eliminate the need to have multiple operating system kernels using the physical resources of your OpenVZ system.
This means that while your virtual servers won’t be as dynamic, many more can be hosted using the same amount of physical resources as competing products. OpenVZ does not ship with a graphical user interface control panel, relying solely on command line interfacing, which may be a big downside for users less competent using the command line.
Both virtualization and cloud computing are going to become more popular and more widely used over the next few years. Every business and IT professional needs to know how virtualization and
cloud computing work, who the major players in the industry are, and how they can be leveraged to improve business processes.
Whether you are looking to have your services hosted on Amazon ECS, need to implement a private cloud, or simply want the ability to create and destroy virtual machines for development and testing purposes, knowledge of how each of them works behind the scenes and their exact benefits and negatives is essential. Virtualization will reduce infrastructure costs, reliability and redundancy of your data center and services, while also giving you the flexibility to create a nearly unlimited amount of servers dedicated to whatever tasks you need to complete.
Need to replace some old, failing equipment that is nearing end of life? Don’t. Instead, virtualize it, saving yourself the time, money, and future maintenance contract expenditures. You and your customers will be very happy you did.