Cloud computing is a new and rapidly evolving area. Terminology and new concepts are constantly emerging. The basis of IaaS clouds is their virtual machines, also known as instances or nodes in some clouds. A number of other resources also can be provided on IaaS clouds, as shown in Figure 1.
Figure 1 IaaS cloud resource model.
Virtualization is one of the fundamental enablers of cloud computing. It depends on some very sophisticated and low-level virtualization technologies, such as Xen and the Kernel-based Virtual Machine (KVM). From a cloud user's perspective, however, the virtualization technology used on the cloud usually doesn't matter. IaaS clouds became popular with the emergence of Linux-based open source virtualization projects, in particular Xen. Today, most cloud services are still Linux-centric, although support for other operating systems is steadily increasing. Traditional IT shops that lack Linux skills can find this situation a challenge. If you plan to succeed using the cloud, sharpen your Linux skills.
Virtual machine images are made up of binary files that are snapshots of operating systems, with some runtime information removed, and including metadata to help you and the cloud understand what the image is. Image binary files usually are stored in an image library at each data center where the image might be provisioned into a virtual machine instance.
Virtualization today involves much more than just virtual machines. Storage virtualization is central to cloud computing, with the storage at block level or object level. Cloud-based storage volumes are block devices analogous to the hard disks housed in a laptop. I've never seen an external hard disk that can simultaneously be plugged into two laptops via USB. Similarly, a cloud-based storage volume cannot be shared by two virtual machines. To share data between virtual machines, you need a network-enabled file system. You can create a file system yourself on a block device; for example, with the Network File System (NFS) or New Technology File System (NTFS). However, these file systems have some security characteristics that make them unsuitable for exposure on the Internet. Cloud-based object storage services are basically large file systems designed for sharing between many users over the Internet. They usually have REST APIs to store and manage the files.
Network resources can be virtualized as well. In physical networks, you attach Ethernet cables or other kinds of connectors between the various computers on the network. In cloud-based systems, packet tagging is used to partition a larger network into a number of smaller virtual area networks (VLANs). Figure 2 shows a schematic diagram of cloud-based virtual machines provisioned to a private VLAN and to the open Internet.
Figure 2 Virtual machines deployed in VLANs and directly on the Internet.