In the computing world, virtualization by way of virtual machines is used to describe a method of avoiding the purchase of multiple physical computers or servers, one for each operating system.
A virtual machine is not a machine in the true sense of the word in that it has nothing to do with mechanical power, and has nothing to do with virtual reality (VR).
By using a virtual machine, end users with the necessary admin permissions can install an additional operating system (or indeed several) on the same physical machine. It’s not a multi-boot scenario where you choose your preferred OS at startup but instead a situation where the existing OS installation acts as a host OS for an additional guest OS. This is achieved either by installing virtualization solutions such as VMWare (variable pricing) or Oracle’s VirtualBox (open source) which allow the guest operating systems to share the hardware resources of the host. Mac users seeking a stable Windows environment can choose Parallels which seems to have excellent reviews. There are other virtual machine software solutions, both open source and commercial but these three are probably the most popular options.
What makes virtual machines an attractive option? What are the pros and cons for beginner geeks and power users?
There are several scenarios where virtual machines are necessary or can save time. You may be running Windows but wish to run some Linux programs that are not available for the Windows OS. Rather than create Linux partitions on your hard drive and install Linux (in any case, I understand it is best to install Linux first), you can instead run virtual machine software and manually install the second OS. Server virtualization is also possible. This saves money as a physical desktop is not required to run each operating system, something that may not be possible due to budgets or simply due to the office space required to ensure a dedicated computer for each OS.
Software developers routinely use virtualization software to check that their software is compatible with multiple operating system revisions, but most will agree that virtual machines also have some limitations in this area. More about these issues later but first let’s look at how a VM works.
A solution (whether software, hardware or firmware) that allows you to create and run virtual machines is known as a hypervisor. On running a VM, the hypervisor also allocates the correct hardware resources necessary to ensure smooth operation of the VM. This includes CPU resources, memory, bandwidth, disk storage space and any other requirements such as sharing of files between the host and guest OS.
In VirtualBox, such as sharing and copy/paste functionality or automatic logon is achieved by installing ‘Guest Additions’. Since hardware resources are shared, it is worth noting that it’s not a good idea to run several VMs at once, unless you have a lot of physical memory available.
You should also consider connectivity. If testing a script, do you need internet access? If so, then you will need to protect each virtual machine against online and network threats in the traditional manner.
Before delving into the pros and cons of usage, let’s look at VM setup.
Creating and Managing VMs
Creating a virtual machine can sometimes be problematic for novice users, but regardless of the hypervisor selected, the process is the same.
- Choose your preferred virtualization solution- This is often decided by your existing operating system or the functionality you desire. Review your options. For basic workstation use, I’ve found VirtualBox enough when investigating the merits of various Linux variants or distros as they are commonly known. I went with Ubuntu in the end, and with Edubuntu for my kids.
- Add any extras that will aid usability of the virtual machine– In Virtualbox, Guest Additions are added.
- Ensure that you have sufficient hardware resources to run a virtual machine- For example, if you have a desktop with 4Gb RAM running Windows 7 and you wish to add a virtual machine for Windows 8, you will need to add memory to the system. Windows 7 alone needs 4Gb so assume Win 8 will need at least that. The best course of action is to install the maximum amount of memory supported by your motherboard. This will ensure that the host and guest operating systems will run smoothly.
- Choose your target OS– In other words, decide the desired operating system of your virtual machine. This will depend on your requirements.
- Determine Licensing– I’ve noticed that posts on virtualization rarely reference licensing requirements. Therefore, let me emphasize the importance of doing so. In the ongoing business tradition of reducing risk, please verify that creating a virtual machine will not result in a software audit fail. Required licensing agreements can be tricky and even more so in a virtualized environment. Some licenses in this area are tied to the number of CPU cores, install instances, guests or per hypervisor or CPU socket. And I’m not being an alarmist, check out a TechTarget post on VMWare licensing to learn more about VM licensing.
- Obtain installation media– This can be a retail, OEM disc, a downloaded disc image, or an installation file. For a new virtual machine, the install process (after configuring specs such as storage space and other hardware details) is the same as a traditional install, with the same prompts, screen, and tedium of waiting for the install to complete. Alternatively, it is possible to save time by downloading ready to use VMs. Simply Google ‘ready-made VMs + desired OS’ to aid your search. ‘Ready-made VMs Linux’ will yield results for Linux, for example. These VMs are pre-configured and can save a lot of time.
- Verify functionality– In my experience, if you install from scratch or from a ready to use VM, there are often issues with settings – as hardware virtualization settings for your particular system can vary from the defaults provided. Sometimes the problem is with hardware detection– with sound, network, optical drives or USB devices. Each solution, whether VirtualBox or another, will have active forums and a large community of users to discuss problems with VM configuration. I have yet to find an issue that could not be solved with a simple online search. Simply state the problem or the provided error message, if any.
- Install your software or test your script– Once the VM is working correctly, install what you need for the task at hand.
When starting a VM in VirtualBox, VMWare ESXI Server or any other hypervisor, you will see a list of created VMs. Using hypervisor-based replication, you can create multiple copies. This is especially useful if you have multiple software developers working on different projects. Naming the VMs by user is perfectly acceptable – Win8-Jane and Win8-John allow Jane and John Doe to test their scripts in separate VMs without impacting on each other’s work.
Managing created VMs on a single desktop is easy since each VM can be deleted, renamed, copied or migrated as needed. You can also backup and restore VMs.
Once a VM is opened in a window or full-screen, use it as you would the standard OS. Shutting down and booting up is considerably faster in most cases. When finished, turn off the VM using the hypervisor.
Virtual Machines Have Limitations
Whether it’s a VM in VirtualBox, VMWare, Vagrant or any other hypervisor, once it’s created, you’re just using the desired OS, albeit in a ‘virtual’ environment, which can be a window or in a full screen. Vagrant offers portable development environments, which effectively means that your original OS is irrelevant.
Virtual machines are not equal to a standard OS installation as the virtualized hardware settings may not function on all systems, given that some operating systems are already difficult to configure, such as this example from Debian (look at the limited number of motherboards tested for VGA Passthrough-necessary to enable hi-res graphics).
Look how many features are unsupported in Microsoft Azure virtual machines.
After speaking to Android app developers, it’s clear that VMs have their limitations as they prefer to use actual smartphones and tablets to verify their work for different Android versions, even though emulators and development kits are readily available.
In a company-wide setting, is virtualization the way forward? When certain tools cannot offer all standard features because of third-party restrictions, is virtualization the way forward?
It’s debatable, but it has some advantages, not least of which is the cost reduction in traditional IT infrastructure. Why buy four servers, when you can buy one and run as many virtual servers as the hardware can handle?
However, while you may be saving on hardware expenditure, software licensing costs are a different story. You may face a situation where you’re choosing lower spec servers to combat virtualizations licensing requirements by CPU core or by CPU socket type. Your kickass 8-core server motherboard will cost you, even if all cores are not used. Personally, I don’t like this strategy by some software companies, where hardware purchased is influenced by possible licensing costs. It’s no wonder more and more businesses are seeking open-source alternatives that do not restrict hardware selection or stifle consumer choice with vendor lock-in policies.
Suffice to say, whether your business adopts virtualization or not, it needs to be evaluated from all perspectives beforehand. Consider the costs and possible benefits by each company department and determine where the use of virtual machines can enhance existing processes. Perhaps there’s an ideal balance of virtualization and physical hardware? Regardless of what you decide, there are some tradeoffs, as hardware devices are virtualized with resources shared from the host OS to the VM, with basic functionality applied in most cases. Do not expect to enjoy Dolby sound, or 4K graphics (at least at the time of writing), for example.
If you roll out virtual machines company-wide, then you need to get involved in permission management. Who can create VMs? Can you limit usage to a defined set of VMs and prevent unauthorized use or migration? Without such control of VM usage and creation, you could fail a software audit, or indeed lose data if data is shared through an unmonitored VM or by software installed inside it. When cybersecurity is so important these days, the use of VMs can introduce additional risks. All these points are worth considering before adopting VMs in the workplace.
Who Uses Virtual Machines?
If we ignore common users of virtualization (such as service providers that offer shared hosting, virtual private servers, and virtual desktops), in a common office environment, who uses virtual machines? I’ve already covered software developers and have also mentioned that some of these (especially in app development) prefer to use complete installs on a physical device.
Let’s be honest, apart from large enterprises, data centers and the like; virtualization is not a priority. Some companies will outsource such requirements to SaaS or Infrastructure as a Service (IaaS) providers rather than deal with the nightmare of licensing requirements and configuration as described earlier.
For the rest of us, sure, we use virtual machines to evaluate future complete OS installs or to run desirable programs that are not released for our primary OS. It saves partitioning drives in different formats and allows us to run programs that are otherwise unavailable. I’ve been a Windows user since the heady days of Windows 3.1 and have stuck with it all through the years. However, I do like to check out the competition and have found that Linux is growing more and more user-friendly. Thanks to my use of VirtualBox on Windows 7, the end result is that I can now run Linux distros on my home computers. It is worth noting that I didn’t need to install a hypervisor to create a virtual machine on some machines as Windows 10 comes with its own built-in solution – the Windows Subsystem for Linux (WSL). You need to enable it using PowerShell.
I have never considered multiple Windows installs on the same machine as it is not free or open source and virtual installs would require a license or activation for each VM. A regular virtual machine backup to an external drive ensures that my latest activities can be restored at any time. However, if migrating a VM to another system, expect to have some configuration issues (unless both systems have identical hardware specs).
Therefore, for casual users who merely wish to run the available software, work on documents, or perhaps view movies or play music, a VM will work fine but for power users, gamers or developers, a virtual machine lacks the features necessary to utilize the full potential of the OS.
In conclusion, I don’t believe a business needs to use virtual machines. In fact, I would say, only use virtual machines when other solutions are expensive or time-consuming. In all other cases, stick to the complete operating system. In addition, don’t be under any illusion that virtual operating systems or VMs do not require licensing. Commercial software installed on a VM is subject to licensing as if you installed it on another physical computer. To avoid additional costs, only use free and open source solutions and make sure your hypervisor does not add to licensing complexity. If not, managing your VMs and other virtualized solutions become problematic, and you will need to utilize VM managers to keep track of VMs and ensure ongoing software compliance.
What do you think? Are virtual machines essential to your operations? Will they save you time or money? Do they introduce additional risk regarding potential for data loss or cyber-attacks? These and other questions will be answered in the comments… coming soon to a page near you.