In order to understand the basics of the cloud, you need to understand how Virtual Machines work. Without Virtual Machines, it would be impossible to create a cloud. Of course, Virtual Machines are not the only thing you need to create a cloud but they are an important cog inside the cloud machine.
In this post, I will explain the concept of virtual machines and how they work.
A practical and ridiculous example
Imagine that my wife has a workstation that has Windows as its operating system. Now let’s pretend that I want to work on her workstation as well now and then but that I hate Windows as an operating system. I prefer to work with Linux and don’t want to work with Windows (actually I like Windows a lot but let’s pretend for the sake of the example). In order to meet my own requirements, I built an identical workstation, including all the additional hardware. I make an identical copy of the workplace that my wife has (desk, screen, mouse, keyboard, etc.). After building it I install Linux on my new system, connect the system to our network and place my desk and workstation in a vacant spot somewhere in our house. Now we have two computers and two work areas. Now imagine that I hardly work on the computer and that I only need it once in a while to check my email, do the taxes and keep track of our household administration.
Sounds a bit ridiculous, right? Investing in a brand new computer and taking up extra space at home just for a few minutes a week of computer time. And yes, it is ridiculous and also completely unnecessary. You don’t need two computers to run two different operating systems. Both Linux and Windows can run on one workstation.
This is done by virtualization. With virtualization, a single host computer can run specialized software that can create environments (stored in separate files) that clone other computers. These environments are called Virtual Machines (VMs) or “guests”.
I could install virtualization onto the workstation that we currently have and then install a standalone copy of Linux next to the copy of Windows that we already have. Both operating systems would never interfere with each other because they are contained within individual files. These files are the beating heart of virtualization.
Advantages of Virtualization
Virtualization offers a lot of benefits in modern-day society that heavily depends on computers and hardware.
Power saving
By placing multiple virtual servers or clients on one single workstation you can heavily reduce power consumption. Instead of running multiple machines at once for different systems, you can use one. Especially big hosting companies that run multiple systems for multiple clients can save a lot of energy by implementing virtualization because you don’t have to keep a single system up and running for every customer that wants to use a different mix of systems and applications.
Hardware consolidation
Consolidating multiple servers/clients into one single powerful server/client avoids purchasing additional (expensive) hardware. Like in the example I gave, hardware and space (square meters) are both expensive. By consolidating, you save a lot of hardware and space and therefore money.
System management and security
Virtualization gives system administrators a much easier time to manage systems as well. Virtual Machines are nothing more than simple files so they can be easily copied. In a company, a new employee can be quickly set up with a virtual machine on which all software has already been installed. This also gives a lot of security advantages. When you give an employee a traditional workstation, you need to restore the full system from a backup when the employee’s system breaks down (hacking, malware, physical damage, etc.). If you apply virtualization, your host machine and any other Virtual Machines will be unaffected and virus-free. You then only have to shut down the Virtual Machine and reload a copy of it (fully clean of course). Because Virtual Machines are just files you can easily store them. However, security-wise, be very cautious with these files and treat them the same as you treat any other physical system. A Virtual Machine still needs an Operating System (OS) to run in combination with firewalls, endpoint protection software, software patches, accounts with a strong password, and good general security procedures.
A Virtual Machine also gives the system administrator the possibility to take a snapshot/checkpoint. A snapshot/checkpoint saves the Virtual Machine’s current state. This gives you the chance to quickly return to the saved state at a later stage. A snapshot/checkpoint is a great tool in case a system admin has to do some tricky maintenance of the system. It provides a safety net in case a maintenance session goes south. It gives you extra room for errors/an opportunity to learn without making an OS unusable or opening up a system to vulnerabilities. However, each snapshot/checkpoint can reduce the performance of a system and you should remove it as soon as you are done with your maintenance session.
Research
Virtual Machines are great for research. This is done by setting up a “Sandbox Environment”. These virtual environments provide companies with an option to build, test and deploy software or to investigate a potential security threat (for instance suspicious software) in an environment that is completely disconnected from the rest of the organization. This way you are fully free to experiment because a sandbox setup will not affect the real environment. It’s a very safe and great way of learning without running the risk that any mistakes/errors will damage a company. After you are done you can simply clean up the environment and set up a new one the next time you want to experiment.
Implementing Virtualization
An operating system uses programming that is called “supervisor” to handle the simple interaction between hardware and software. Virtualization gives a physical machine (host) the option to run multiple guest operating systems at the same time. To do this, it needs an extra layer of programming, called a “hypervisor”. This programming manages the more complex interactions between hardware and software. The most well-known company that makes hypervisors is VMware. Additionally, there are other options as well like Microsoft’s Hyper-V and Oracle’s VM VirtualBox. Both Hyper-V and VirtualBox are completely free if you use them on a very small scale (for instance in my example where I want to run both Windows and Linux on the same workstation). For macOS, there is Parallels Desktop and VMware Fusion. Both cost money, also in the case of running it on a single workstation.
Virtualization uses the hardware of the host system and allocates a part of its power to individual Virtual Machines. If you have an AMD workstation, the hypervisor creates a Virtual Machine that performs in the exact same way as your physical (host) AMD system. You can’t set up your system like an Intel system though. It can only be an exact clone of your original system (AMD in case you have an AMD system).
This is the key difference between emulation and virtualization. Emulation software converts the commands of your physical (host) machine into a completely different platform. An example is of emulation software is running an Amiga environment on your physical system. Amiga (well known in the late 80s) is a completely different platform. Emulating a platform requires hardware that is far more powerful than the hardware of the actual platform that is being emulated, uses.
Client-side virtualization
Client-side virtualization is the most basic form of virtualization there is. If I would like to set up a Virtual Machine for the example I used at the beginning of this post (running two OS systems on my workstation), I would use client-side virtualization. In order to create a Virtual Machine on my workstation, I have to follow a basic set of steps
Step 1: Setting up the hardware
The first step is to set up the hardware of your system in order to be able to support Virtual Machines. Make sure to verify if your hardware can meet the resources that are required to run the system. In addition to this, a hypervisor will run better if you enable hardware virtualization support. Running a Virtual Machine is hard work for a CPU. If your CPU and BIOS support hardware virtualization, you should turn it on in case you are running a Virtual Machine. The most important part of running a Virtual Machine smoothly is RAM. A Virtual Machine needs as much RAM as your physical machine. Because of this, it is important to have a large amount of RAM available when running a Virtual Machine. The more Virtual Machines you run, the more RAM you will need. So (1) add enough RAM in order to keep every Virtual Machine you run at the same time to run smoothly (multiply your RAM with every machine you want to run) and (2) keep enough RAM available for the hypervisor itself to run smoothly. Check the internet for RAM requirements for every OS and for the hypervisor. And remember: better to overstock in RAM than to understock.
Step 2: Install a hypervisor on your system.
You can choose between the different hypervisors I mentioned. Personally, I would go for the simple option: Hyper-V which is free if you only use it for client-side virtualization.
Step 3: Create a new Virtual Machine
When you create a new Virtual Machine, make sure that it has the right virtualized hardware requirements for the guest OS (for instance Linux Ubuntu). Make sure to check the requirements of the version you want to install. For instance, the old workstation that I use for a bit of tinkering won’t be able to handle Windows 11 so it is not a good idea to install Windows 11 as a guest OS on that workstation.
Step 4: installing the OS
Start the new Virtual Machine and install the new guest OS in the exact same way as you would install it on a new physical machine.
Final Thoughts
I hope this post gives you a bit more insight into the basics of Virtual Machines and how you can set up the most basic form of virtualization on a single workstation. But this is only the start. I’m looking forward to learning/researching more about virtualization, especially how this is done on multiple systems in combination with a sophisticated network.
Feel free to contact me if you have any questions or if you have any additional advice/tips about this subject. If you want to keep in the loop if I upload a new post, don’t forget to subscribe to receive a notification by email.

