A virtual machine is a software computer that runs on either a server or a desktop that is divided into a bunch of small computers using the software. Each piece has a fraction of the power of the main system.
Virtualization falls into three main categories:
It falls into three main categories:
Server virtualization involves the use of a class 1 hypervisor where the operating system running on the hardware is a small optimized piece of software where the only function of this operating system is to abstract the software from the hardware for the sake of dividing it up into smaller pieces that consist of fractions of the processing, memory, and storage power of the main system.
It does not provide a friendly user interface. On these systems, the configuration of the software is minimal from the local machine and web interfaces are built to manage the software from a remote location along with built-in scripting languages for administrators to remotely “program” day to day functions of the system.
Desktop virtualization involves the use of a class 2 hypervisor. In this case, there is a “host operating” system as well as the “Guest Operating” systems. The host operating system provides full function capabilities to the user and provides a desktop experience and the software that allows the dividing of the machine into smaller pieces runs as an application on the “host operating” system.
Host operating systems include Windows, OSX, Linux, BSD, OpenBSD, Solaris, and many more.
This is the most difficult kind of virtual machine to describe. To put it in the simplest terms it’s a program such as Firefox, Chrome, or Internet Explorer that is encapsulated to include some operating system programming code and functions in order to allow untrusted applications to run on an operating system with an added layer of security. When the application closes the entire container is removed from the operating system allowing one to have some level of guarantee that the operating system has been rolled back to a pre-application installation state.
Attributes of the Different Types of Virtualization
Because the desktop virtualization (class 2 hypervisor) is not optimized, it generally has poorer performance than the server virtualization (class 1 hypervisors) but allows the host operating system to be used as a desktop at the same time. Application virtualization has great performance but does not offer the level of abstraction and isolation that either of the other two types of virtualization offers.
Generally, the server virtualization has a narrower set of supported hardware. The hardware supported by server virtualization is an industrial grade set of hardware that is geared around performance.
The desktop virtualization generally supports most of the hardware that is supported by the host operating system and takes advantage of the drivers that the host operating system supports.
Application virtualization does not emulate any hardware but instead abstracts some of the programming interfaces that make the operating system run.
Server virtualization has much higher stability than desktop virtualization while desktop virtualization has a much higher level of stability than application virtualization.
Server virtualization tends to be more costly in both hardware, and for management software but offers a more developed user interface although the differences in this respect are shrinking as time goes on. While application virtualization tends to be the cheapest
An ever increasingly large set of hardware supports dividing up the processing, and I/O bus into smaller pieces and management by the hardware so less software based dividing up of the resources is needed, simplify the work of the virtualization software, bringing increased stability and security to virtualization.
With server virtualization provision is made for the ability to have a live standby copy of a guest operating system ready to be automatically or manually activated when the first copy of the guest operating system or host fails.
One of the main advantages of virtualization is the ability to easily move a machine from one physical machine to another. Instead of building systems from scratch or restoring from backups one can live to migrate a machine to another when using server virtualization.
This is made possible by the guest machines existing in an encapsulated container so they can easily be moved from one physical system to another. Although it’s more difficult, the increased portability is available with Desktop Virtualization but is less automated. We have an excellent example that demonstrates VM snapshots and VM Migration.
Snapshots allow one to roll back the entire guest to a previous time by taking “pictures” of what the guest operating system looks like at a given time.