It’s time for our Question of the Week. This time, Jacob Hayden asked:
While this sounds like a very subjective question, it gained quite some attention. Our long-term user William Hilsum added a great answer, explaining what virtualization even is, and how it became so useful these days.
Of course, virtualization is not the answer to every problem, but with current technologies such as Intel VT-x and AMD-V, the overhead of using an additional layer can be reduced. It is therefore a viable option to using “real” physical systems.
What kinds of virtualization are there? William explains:
Desktop (software based) Virtualisation – Generally designed for programmers, testers and IT pros - Speed is still very fast/near native on modern machines, but, at the mercy of the guest operating system it runs under, so, whilst I am running 3 VMs 24×7 on my machine for various tasks, it isn’t really “designed” for this - (e.g. Microsoft Virtual PC, VMware Workstation, Sun (Oracle?) Virtual Box). These emulate an entire virtual computer.
Server (software based) Virtualisation – this was quite a large market for a while, but, it was less capable than Hypervisor and is generally a dead market now. Basically it is desktop virtualisation that is just optomised for a server environment – (e.g. Microsoft Virtual Server, VMware Server.
Software Virtualisation – This is a specialised market which is usually for virtualising single programs (e.g. Microsoft App-V, VMware ThinApp). This creates a thin “layer” between your computer and the software – it basically intercepts all calls made by the program in order to redirect file/registry writes and basically sandbox the application. This has a few benefits such as the ability to run multiple versions of some complicated applications and makes deployment quite easy (all though, it can be a difficult area to understand/get in to).
Now, how is virtualization useful? What are its benefits? The most important ones are:
- administration time
If you’re a power user or working for a small company that uses many different “systems”, such as a print server, an SQL server, a Voice-over-IP system, et cetera, you only have two choices without virtualization:
- Run everything on one machine simultaneously
- Run everything on multiple boxes
Of course, this leads to problems. What if the operating system you’re running your software on does not support every client application? Maybe the SQL server works better on Linux, but the printers should be shared through Windows.
In the other case, you end up running a lot of machines, which costs energy – especially when the applications only use a minimal share of the performance a machine could offer. This is a very important factor to consider, given the huge amount of memory and processor speed even typical home computers have nowadays.
If you can consolidate everything on one machine, you can split its performance more efficiently. Every virtual machine will get what it needs, not more, not less.
- Testing software on different operating systems
- Saving disk space using different virtual hard disks
- Allocating space between virtual machines
- Snapshots, which enable you to create full backups of a machine’s state. This can also be useful for testing software you don’t want on your main system.
The last factor to consider is the support of legacy software. Do you have a version of a program that only runs on Windows XP? An application that does not support 64-bit operating systems? Just create a minimal virtual machine for it!