Overview of virtualization

Completed

Virtualization is at the core of the cloud computing paradigm. Virtualization lies on top of the cloud infrastructure (or the datacenter) whereby virtual resources (e.g., virtual CPUs, memories, disks, networks) are constructed from the underlying physical resources and act as proxies to them. As is the case with the idea of cloud computing, which was first introduced in the 1960s, virtualization can be traced back several decades, to the 1970s. Forty years ago, the mainframe computer systems were extremely large and expensive. To address expanding user needs and costly machine ownership, the IBM 370 architecture, announced in 1970, offered complete virtual machines (VMs) (virtual hardware images) to different programs running on the same computer hardware. Over time, computer hardware became less expensive, and users started migrating to low-priced desktop machines. This migration drove the adoption of virtualization technology to fade for a period of time. Today, virtualization is enjoying a resurgence in popularity, with a number of research projects and commercial systems providing virtualization solutions for commodity PCs, servers, and the cloud. The following video is a brief introduction to virtualization.

In this unit, we study the various ingredients of virtualization technology and the crucial role the technology plays in enabling cloud computing. First, we identify the major factors that are making virtualization an essential component of modern computer systems, especially for the cloud. Second, we learn how multiple hardware and software images can run side by side on a single resource while each is provided with security isolation, resource isolation, and failure isolation, all of which are critical requirements for cloud computing. Prior to delving into more details about virtualization, we present a brief background that's requisite for understanding how physical resources can be virtualized. In particular, we indicate how system complexity can be managed in terms of levels of abstractions and well-defined interfaces. Next, we describe resource sharing, in space and in time, as a general technique for improving system utilization. To this end, we formally define virtualization and examine two main VM types: process and system VMs.

After introducing virtualization for the cloud and its motivating factors, we describe in detail CPU, memory, and input/output (I/O) virtualization. Specifically, we first identify conditions for virtualizing CPUs, recognize the difference between virtualization and paravirtualization, explain emulation as a major technique for CPU virtualization, and examine Xen Project's virtual CPU scheduling. Xen Project is a popular virtualization platform used by some cloud providers including Alibaba and Tenecent. Next, we outline the difference between a conventional operating system's virtual memory and system memory virtualization, explain the multiple levels of page mapping as imposed by memory virtualization, define memory overcommitment, and illustrate memory ballooning, a reclamation technique for memory overcommitment in VMware, another common virtualization platform. Finally, we explain how CPU and I/O devices can communicate with and without virtualization, identify the three main interfaces (system call, device driver, and operation-level interfaces) at which I/O virtualization can be applied, and study I/O virtualization pertaining to Xen Project.