It sounds like a rather straightforward question, but in terms of bloggers and the circles we keep, it may be overlooked. It may not be an easy answer to find for someone who is new to virtualization. This is oddly in line with a project I am working on at work for people whom are new to data protection and virtualization in general, but hey more on that to come later.
Simply put, a virtual machine is a computer represented via software. Specifically, an operating system exists in a software space rather than explicitly on a dedicated machine. The operating system is a good way to represent virtualization in my opinion. Let’s follow this reference through this blog post.
Let’s start with a video
I made this quick video to identify the core resources of a computer. This is easy to explain for physical systems, and is a good preface for explaining it for virtual systems.
Servers and other computers that are not virtualized have the operating system (say Windows Server) installed directly on them. The basic components of any computer are a processor (CPU), memory (RAM) resources, network interfaces and one or more hard drives. These four categories (CPU, RAM, network and disk) are what I refer to as the “Core Four” resources. In all compute platforms, these exist (and are potential bottlenecks!). Officially, the network resources are optional; but in most situations are used. So, simply put one computer or server has one operating system. 1:1
Unless you are doing “fancy stuff” at home, this is pretty much what your computer at home is doing. One piece of hardware providing one operating system. This applies to both computers at home as well as computers in the data center, or servers. This can be for file servers, email servers, database servers, application servers and more.
For simplicity reasons, I’ve left out other components like USB ports, power supplies, video adapters and more. They all still apply, but are beyond the basics of understanding “What is a virtual machine?”
This is where it gets cool and fancy! A virtualized system will simply provide the same Core Four resources, but it is done via a software layer. The fundamental concept here is a hypervisor. This is where the VMware, Xen, Oracle and Microsoft virtualization options come into play. There are a number of ways to make a virtualized system. I’ll start with VMware vSphere. It is not necessarily the first place people start, but it is the place you should end up.
VMware ESXi is a Type I (Type one) hypervisor. This means that ESXi runs directly on the hardware of the server. I like this way to represent a Type I hypervisor from IBM:
So in this image there are three different operating systems running on three different virtual machines. They are running on an SMP Server (SMP stands for symmetric multiprocessing server). Don’t let that tech mumbo jumbo confuse you, that just means a server with two or more CPUs.
Each operating system has its own disk, network, CPU and RAM resources; though they are provisioned and managed by the hypervisor. Using VMware ESXi, you can add a logical resource, such as a CPU. This is shown in the figure below:
Here I can add CPUs to the virtual machine through the VMware vSphere Client. In the case of the vSphere Client, this is the software that we use to manage virtual machines running on ESXi. There can be other components in place, such as VMware vCenter Server (which is a management solution). But you can see in this example we are at the decision point to add (or remove) CPUs from the virtual machine in question. To the example illustrated in the video, we would NOT have to add additional hardware (in most situations) to provide resources to the virtual machine. So, if the operating system (Windows for example) required more CPU or memory, we could do it right here in this console; not have to order parts or open up the system.
The other type of virtualization software would be the Type II (type 2) hypervisors. These are installed on top of an existing operating system. So, take a laptop, desktop or server running some form of a Windows operating system. That system can run additional Windows (and Linux) operating systems as virtual machines as well. This is popular for mobile labs and demonstrations. It is rare that a business would virtualize their infrastructure to a Type II hypervisor. Examples of Type II hypervisors include VMware Workstation, Microsoft Virtual Server, Oracle VirtualBox, VMware Fusion and others.
Does this make sense?
I hope so, it’s tough to start at zero, but there is really a need to explain what a virtual machine is.
Have a question, email me and let me know: firstname.lastname@example.org
Type 1 and Type 2 hypervisors explained, My Virtualization Review blog: http://virtualizationreview.com/blogs/everyday-virtualization/2009/06/type-1-and-type-2-hypervisors-explained.aspx