What is virtualization?
Virtualization is a broad term in general but when we use it in the IT world, we use it to say we will virtualize our applications, networks, servers, storage or even client workstation. Virtualization is a technology that allows an IT administrator to utilize the same hardware to run multiple software or operating systems by allocating or dedicating the underlying physical hardware resources of a computer or server. On the other side we see that the same hardware can run a single operating system and can be used for a single host or identity, like a web server that is hosting our internal finance department web application. But if we use virtualization technology here, we could install server virtualization software (a hypervisor) on the same piece of hardware, and we could then run multiple independent virtual instances of many web servers or any type of operating system or application instance. These completely different instances that we create on the physical server are referred to as guest or virtual machines; they exist virtually and so they are known as virtual machines.
Although virtual machines use the same physical resources among all their other siblings on the same piece of hardware, virtualization software, which is also referred to as a hypervisor, ensures that the trusted computing base (TCB) concept is always enforced and doesn't allow the virtual machine to see what data and communication it's doing with the physical resources. This means that if there are two virtual machines running on the same physical hardware, each doesn't know what the other virtual machine running on it is up to or which data the other virtual machine is providing or taking from the processor and RAM. When the administrator creates a virtual machine using a hypervisor, it can dedicate a chunk of physical RAM and processor cycles to the virtual machine; this allocation can be either static or dynamic. When we configure static RAM for a virtual machine, let's say 1,024 MB, the virtual machine is restricted to always show its virtual RAM as 1 GB. However, on the other side, if we want we can configure dynamic memory for the virtual machine, so we could set the startup RAM of 1,024 MB and allow the virtual machine to go up to 10,240 MB. In the same way, we can configure the virtual machine to have either one logical processor or four logical processors.
Okay, we discussed virtual RAM and processors for a virtual machine; what about the hard disk or storage of a virtual machine? Here you go; just like virtual RAM and processor, we create virtual hard disk (VHD) in the Hyper-V case. VHD is a file-based storage for a virtual machine. It gets added or associated to a virtual machine, and then the virtual machine sees this VHD file associated to a virtual machine instance as its hard disk. The more VHDs you create and associate to a virtual machine, the more virtual hard disk space will be assigned to that virtual machine. We could also dedicate a physical disk to a virtual machine, so if we don't create a file-based virtual hard disk for a virtual machine, then we can associate a physical hard disk or SAN LUN associated on the virtualization server to the virtual machine. Virtualization can be set up in the form of a shared service where we configure the identical type of virtualization servers (a cluster), and this shared form of virtualization server allows us to migrate virtual machines from one server to another, in case one virtualization server goes down or the administrator wants to perform maintenance on the physical server. How to create a virtual machine and manage the hypervisor for server virtualization is discussed in detail in the upcoming chapters, so stay tuned.