In this chapter, we present various ingredients of the virtualization technology and the crucial role it plays in enabling the cloud computing paradigm. First, we identify major reasons for why virtualization is becoming important, especially for the cloud. Second, we indicate how multiple software images can run side by side on physical resources while attaining security, resource and failure isolations. Prior to delving into more details about virtualization, we present a brief background requisite for understanding how physical resources can be virtualized. In particular, we learn how system complexity can be managed in terms of levels of abstractions and well-dened interfaces. To this end, we formally dene virtualization and examine two main virtual machine types: process and system virtual machines.