There are several types of virtualization technologies ranging from servers to networks and storage. Virtualization is an essential tool in setting up cloud computing, automated service provisioning, distributed computing, and portability of cloud services. Virtualization is part of modernizing a datacenter, but deploying virtualization in a legacy datacenter is not the same as a fully automated, on- demand, elastic cloud environment.
Figure Modernizing datacenters with virtualization and a migration to the cloud
Virtualization of servers is often the first thing everyone envisions when you talk about cloud computing. This technology makes possible the virtualization of physical servers into multiple VMs using hypervisor software systems such as: VMware or Microsoft Hyper-V. Server virtualization.
Instead of loading one OS onto a physical server, you split that server into multiple logical or virtual servers, each of the virtual sessions being a VM. There are numerous software applications that load on the physical server to create multiple VMs—these are usually called hypervisors.
Microsoft Hyper-V, VMware, Kernel-based Virtual Machine (KVM), Citrix Xen, and Parallels are the five most common virtualiza- tion products on the market.
Although VMware is arguably the most mature product in this category, there are benefits to each, and cloud providers often use multiple hypervisors. AWS for instance uses only Xen VM in its platform.
There is a certain amount of overhead resources (compute, memory, and storage) used by the hypervisor itself that affects both the number and size of VMs that can fit onto a single physical server. Using numerous physical servers whether they are rack mounted or blade based.
You have access to a pool of servers, each running the selected hypervisor. This gives you significant capacity to start multiple VMs as needed, with each capable of being a different sized VM, based on how much processor power, memory, and storage is needed. By splitting the physical servers into many VMs, you gain efficiencies that you would not normally have using strictly physical servers. This is one of the primary techniques that cloud providers use, as well as within traditional datacenters, to make better use of hardware assets.
Virtualization of servers brings several unique advantages to a cloud- computing environment:
Better CPU utilization
Most physical servers with a single OS suffer a significant amount of underutilization. A properly sized physical server is deployed to handle the normal workload expected for its business purpose, but often these work- loads have spikes in utilization, such as when users first log on each morning or during large batch jobs or processes that run every evening. During the lesser-used period of time, all of the excess CPU cycles are idle.
A hypervisor virtualization system will take all spare CPU cycles from across all VMs and use them on the VMs that need and can benefit most from the additional processing power. This dynamic allocation of CPU resources is handled by the underlying hypervisor product and is completely transparent to both the consuming organization and usually the OS and applications running on the VMs. Note that hypervisors and VMs can be configured (by the cloud provider) so that they guarantee a minimum level of performance at all times, but it is also possible for the system to be “oversubscribed,” and VMs could compete for available CPU cycles. Consumers of VMs should understand their hypervisor and VM configurations and the minimum guaranteed VM CPU service level.
Each VM and the operating system running within it must be allocated a certain amount of memory in order to run. Because of the limitations of most OSs, it is difficult or impossible to dynamically allocate additional memory on the fly without an OS reboot. A common but mistaken belief is that you can dynamically allocate memory on all running OSs—this is only possible in some situations, but it will become increasingly common in future OS versions from some software vendors. The solution is to install a lot of memory into each physical server and continue using static memory allocations for each VM. This is made realistic due to the relatively low cost of memory.
In a properly configured cloud environment, each VM can be booted from any available physical server node in the server farm, datacenter, or across multiple datacenters. This provides a level of continuity of operations and redundancy, with the OS and applications within the VM being unaware of this capability. This portability, or moving a VM to any available node, also affords infinite expansion of the server farm for more capacity as well as flexibility in operations and maintenance. You can shut down physical servers easily for maintenance purposes, with all VMs moving to another hardware node with zero customer impact