What’s Virtualization?

4 minute read

Diff

Virtualization [1] is the act of creating a virtual (rather than actual) version of something by mimicking the its main characteristics.

There might be several reasons to virtualize something: we do not have access to the actual resource, because it is very scarce or expensive, the physical resource might be fungible, or the more common reason, specially in computing, we need to logically divide the resource (CPU, storage, network, etc.) between different applications or users.

Software virtualization has been around since the 60s in many different embodiments, from the compartmentalization of mainframe computers to the common partitioning of a hard drive to create two logical hard drives in PC.

There have been at least 6 different types of software virtualization:

  • Desktop virtualization
  • Network virtualization
  • Storage virtualization
  • Server virtualization
  • Hardware virtualization
  • Application virtualization

Virtualization types Virtualization types

Desktop virtualization

This type is also called client virtualization because it “exports” a real computer’s graphical user interface through the network to be consumed via a client application or even a Web browser. The users can interact in the same way that they use a physical desktop. It reduces the cost of software licenses and updates allowing the user to remotely log in from any location.

Network virtualization

It separates a network’s key functions (like directory services, file sharing, and IP configuration) so they can be distributed among environments. Virtualizing networks reduces the number of physical components—like switches, routers, servers, cables, and hubs—that are needed to create multiple, independent networks, and it’s particularly popular in the telecommunications industry.

Storage virtualization

It is done by assembling all of the physical hard drives into one cluster. Copies of data can be stored and moved to another location. It can be implemented by software applications or by using software and hardware devices simultaneously.

Hardware virtualization

It refers to the creation of a virtual machines which perform like real computers with their own operating system. The host machine (bare-metal) is the real hardware that supports the creation of the virtualized machines, also called guest machines, through a special software, called hypervisor or virtual machine monitor. The type of hypervisors that runs directly on the host’s hardware are called type-1 [5]. VMWare ESX, Microsoft’s Hyper-V, Xen and Oracle VM Server for SPARC are examples of native or bare-metal hypervisors.

Hypervisor Hardware virtualization

This approach has improved with the introduction of server processors by Intel (Intel VT) and AMD (AMD-V), with support for virtualization in hardware, can help reduce (or eliminate) many of the inefficiencies still existent in current system virtualization techniques. Full virtualization and para-virtualization can equally benefit from these processors.

Application virtualization

The applications are virtualized on the server. After that, the application is sent from the server to the devices of the end-users. Instead of logging into their work computers, users will be able to access the application directly from their device with a proper internet connection.

Server virtualization

It is the masking of server resources from server users, including the number and identity of physical servers, processors, and operating systems. The physical server is called the host, and the virtual servers are called guests in the same way as the hardware virtualization. There are some popular server virtualization approaches as the following [4]:

  • Full virtualization: it uses a hypervisor that runs as any other process on the host’s operating system (hosted hypervisor) [5] instead of a specialized software that supports the host’s operating system itself, as in the case of hardware virtualization. The hypervisor keeps each virtual server completely independent and unaware of the other virtual servers running on the physical machine. Each guest server runs on its own OS – you can even have one guest running on Linux and another on Windows. Parallels Desktop for Mac, QEMU, VirtualBox or VMware Workstation are examples of this kind of server full virtualization using hosted hypervisors.

Hosted full virtualization Hosted full virtualization

  • Para-virtualization: unlike the full virtualization technique, the guest servers in a para-virtualization system are aware of one another. A para-virtualization hypervisor doesn’t need as much processing power to manage the guest operating systems, because each OS is already aware of the demands the other operating systems are placing on the physical server.

  • Operating system virtualization: an OS-level virtualization approach doesn’t use a hypervisor at all. Instead, the virtualization capability is part of the host OS, it is typically a kernel’s feature, which performs all the functions of a fully virtualized hypervisor. This type of virtualization is also known as Containerization. While programs running directly on the operating system can access all available resources (CPU, memory, networks, storage or devices), the programs running inside containers can only see resources assigned to that specific container. In Linux operating system this isolation is provided by a kernel feature called cgroups (control groups) [2]. The biggest limitation of this approach is that all the guest servers must run the same OS. Each virtual server remains independent from all the others, but you can’t mix and match operating systems among them. Because all the guest operating systems must be the same, this is called a homogeneous environment. containerd, Docker, LXC or CRI-O are examples of this type of virtualization.