What is a VM?
VMs or Virtual machines have revolutionized the modern computing landscape. From running VMs at home on Virtualbox or Proxmox, to enterprises providing mission critical services on AWS (Amazon Web Services) or Google cloud, Chances are you use VMs daily. Lets explore what this technology is, and how it works.
At the heart of this technology lies the concept of a Virtual Machine (VM), a self-contained, isolated environment that runs its own operating system and applications. A Virtual Machine, also known as a Guest Machine, is a software emulation of a physical computer. It's a sandboxed environment that runs its own operating system, such as Windows, Linux, or macOS, and associated applications. VMs are created by a piece of software called a hypervisor, which we'll discuss in detail later. Think of a VM as a self-contained computer that exists within a physical host machine. Here is a diagram of the differences.

VMs have several key characteristics that make them so powerful:
- Hardware Virtualization : VMs can run on top of physical hardware, using the host machine's resources to execute tasks.
- Isolation : Each VM is isolated from the host machine and other VMs, ensuring that conflicts and crashes don't affect the entire system.
- Portability : VMs are portable, meaning they can be easily moved between host machines without modification.
- Customization : VMs can be customized with specific hardware configurations, operating systems, and applications tailored to their purpose.
A hypervisor, also known as a Virtual Machine Monitor (VMM), is the software that creates and manages Virtual Machines. It's the layer of software that sits between the physical hardware and the VMs, allocating resources and providing a platform for VMs to run on.
Popular Hypervisors
Here are some of the most popular hypervisors:
- VMware vSphere : A commercial hypervisor from VMware, offering advanced features and management tools.
- Microsoft Hyper-V : A built-in hypervisor for Windows Server, offering robust virtualization capabilities.
- Proxmox VE : An open-source hypervisor that's gaining popularity due to its ease of use, flexibility, and cost-effectiveness.
- KVM (Kernel-based Virtual Machine) : An open-source hypervisor built into Linux, offering high performance and compatibility.\
Proxmox VE is an open-source hypervisor that's becoming increasingly popular in the virtualization space. It's based on Debian Linux and provides a user-friendly interface for managing VMs and containers.
Key Features of Proxmox VE:
- Easy Installation : Proxmox VE is easy to install and set up, even for those without extensive Linux knowledge.
- High Availability : Proxmox VE offers advanced clustering and high-availability features, ensuring maximum uptime and minimal downtime.
- Container Support : Proxmox VE supports containers, allowing for multiple isolated environments within a single VM.
- Web-Based Interface : The intuitive web-based interface makes it easy to manage VMs, containers, and storage resources.
How Do Hypervisors Work?
Here's a high-level overview of how hypervisors work:
- Hardware Detection : The hypervisor detects the physical hardware resources available on the host machine.
- Resource Allocation : The hypervisor allocates the necessary resources (CPU, RAM, storage, and network) to each VM.
- VM Creation : The hypervisor creates a new VM, using the allocated resources to generate a virtual environment.
- VM Execution : The hypervisor executes the VM, allowing it to run its own operating system and applications.
- Resource Management : The hypervisor continuously monitors and manages resource allocation, ensuring optimal performance and availability.
Core Components of a Hypervisor
Here are the core components that make up a hypervisor:
- Hypervisor Kernel : The core component that interacts with the physical hardware and manages resources.
- Device Drivers : Handle communication between the hypervisor and physical hardware devices.
- Virtual Machine Monitor : Manages the execution of VMs, allocating resources and providing a platform for VMs to run on.
- Management Console : Provides an interface for administrators to manage VMs, resources, and settings.
Where Are Virtual Machines Used?
Virtual Machines have a wide range of applications across various industries:
- Server Virtualization : Running multiple servers on a single physical machine, reducing hardware costs and increasing efficiency.
- Development and Testing : VMs provide a safe and isolated environment for developers to test and deploy code.
- Disaster Recovery : VMs can be used to create backup and disaster recovery environments, ensuring business continuity.
- Cloud Computing : VMs are used in cloud computing to provide scalable, on-demand computing resources.
- Education and Training : VMs can be used to create simulated environments for training and education purposes.
In a later post, I will take a deep dive into Proxmox VE, how to install it, and how it can be used to create VMs, and Linux containers. Proxmox has become very popular in the self-hosting space because it is free Open Source software, that is easy to use, and can be very powerful in enabling both the hobbyist and the professional to deploy, test, and protype services and applications easily and quickly.