Virtualization and the Cloud—A Tutorial—Part I
In this chapter, you learn about the following:
- General concepts and a brief history of virtualization
- Virtualization of the server and its components
- Network virtualization and virtualization-aware networks
- Storage virtualization
The journey toward the cloud begins with virtualization. Virtualization has emerged as the key disruptive technology that has catalyzed and enabled data centers to deliver cloud services. Compute, networks, and storage form the three infrastructure pillars of today’s data center. This chapter explores the abstraction of these vital resources, with a deep dive into server, network, and storage virtualization. The fluidity of the infrastructure brought about by the virtualization of these key data center resources is fundamental to the enablement of the cloud.
The idea of virtualization is not new; it has been around since the days of the mainframe. But more recently, the term virtualization has gained a broader, more inclusive connotation beyond server virtualization. We begin this chapter by seeking a generic definition of virtualization, while examining the basic concepts and history associated with it.
Virtualization can be defined as the abstraction of physical resources into logical units, such that a single physical resource can appear as many logical units and multiple physical resources can appear as a single logical unit. The primary motivation behind virtualization is to hide the physical characteristics and irrelevant details of these resources from their end users. Thus, each user gets the illusion of being the lone user of that physical resource (one-to-many virtualization). Or multiple physical resources appear as a single virtual resource to the user (many-to-one virtualization).
One to Many
Consider the familiar example of virtualizing an x86 server, where software, called virtual machine monitor (VMM) or hypervisor , allows multiple virtual machines (VM) to run on the same physical server, as illustrated in Figure 1-1 . Each VM emulates a physical computer by creating a separate operating system environment. The ability to run multiple VMs means that we can now simultaneously host multiple operating systems on the same underlying physical machine. Each operating system gets the illusion that it is the only one running on that host server. One physical machine has effectively been divided into many logical ones.
Virtual LANs (VLAN) are another example of one-to-many virtualization, where a single physical network is partitioned into many logical ones. Instead of setting up separate physical networks for each user group, a single physical network infrastructure can suffice, with each user group assigned to a separate logical network (VLAN).
Many to One
The classic example for many-to-one virtualization is that of a load balancer, which front ends a group of web servers. As shown is Figure 1-2 , the load balancer hides the details about the multiple physical web servers and simply exposes a single virtual IP (VIP). The web clients that connect to the VIP to obtain the web service have the illusion that there is a single web server. Many physical web servers have been abstracted into one logical web server.
Virtualization: A Brief History
The concept of virtualization has been around since the 1960s, when IBM implemented it to logically partition mainframe computers into separate VMs. This partitioning enabled mainframes to run multiple applications and processes at the same time, which improved their utilization. Such multitasking allowed better leveraging of those expensive investments.
Over the next two to three decades, the need for virtualization declined as inexpensive PCs and servers became available. In addition, client/server applications became prevalent, and the trend shifted toward distributed computing. Furthermore, the universal adoption of Windows and Linux led to the emergence of x86 servers as the dominant compute platforms. Unlike mainframes, however, these servers have not been designed for virtualization. To enable the virtualization of x86 servers, specialized software called hypervisor was developed by companies such as VMware, Citrix, Microsoft, and others.