Saturday, August 25, 2012

Software: Why is virtualization useful?

  • Running multiple operating systems simultaneously.
    virtualization software allows you to run more than one operating system at a time.

    This way, you can run software written for one operating system on another (for example, Windows software on Linux or a Mac) without having to reboot to use it.

    Since you can configure what kinds of “virtual” hardware should be presented to each such operating system, you can install an old operating system such as DOS or OS/2 even if your real computer’s hardware is no longer supported by that operating system.
  • Easier software installations.
    Software vendors can use virtual machines to ship entire software configurations.
    For example, installing a complete mail server solution on a real machine can be a tedious task.

    With virtualization software, such a complex setup (then often called an “appliance”) can be packed into a virtual machine. Installing and running a mail server becomes as easy as importing such an appliance into virtualization software.
  • Testing and disaster recovery.
    Once installed, a virtual machine and its virtual hard disks can be considered a “container” that can be arbitrarily frozen, woken up, copied, backed up, and transported between hosts.

    On top of that, with the use of another virtualization software feature called “snapshots”, one can save a particular state of a virtual machine and revert back to that state, if necessary.

    This way, one can freely experiment with a computing environment. If something goes wrong (e.g.after installing misbehaving software or infecting the guest with a virus), one can easily switch back to a previous snapshot and avoid the need of frequent backups and restores.

    Any number of snapshots can be created, allowing you to travel back and forward in virtual machine time. You can delete snapshots while a VM is running to reclaim disk space.
  • Infrastructure consolidation.
    Virtualization can significantly reduce hardware and electricity costs. Most of the time, computers today only use a fraction of their potential power and run with low average system loads. A lot of hardware resources as well as electricity is thereby wasted. So, instead of running many such physical computers that are only partially used, one can pack many virtual machines onto a few powerful hosts and balance the loads between them.

Some terminology:
---------------------
  • When dealing with virtualization, it helps to acquaint oneself with a bit of crucial terminology, especially the following terms:

    1. Host operating system (host OS).
      This is the operating system of the physical computer on which virtualization software was installed.

    2. Guest operating system (guest OS).
      This is the operating system that is running inside the virtual machine. Theoretically, virtualization software can run any x86 operating system (DOS, Windows, OS/2, FreeBSD, OpenBSD), but to achieve near-native performance of the guest code on your machine, we had to go through a lot of optimizations that are specific to certain operating systems.

      So while your favorite operating system may run as a guest, the support and optimize can be applied.

    3. Virtual machine (VM).
      This is the special environment that virtualization software creates for your guest operating system while it is running. In other words, you run your guest operating system “in” a VM.

      Normally, a VM will be shown as a window on your computer’s desktop, but depending on which of the various frontends of virtualization software you use, it can be displayed in full screen mode or remotely on another computer.

      In a more abstract way, internally, virtualization software thinks of a VM as a set of parameters that determine its behavior. They include hardware settings (how much memory the VM should have, what hard disks virtualization software should virtualize through which container files, what CDs are mounted etc.) as well as state information (whether the VM is currently running, saved, its snapshots etc.).

    4. Guest Additions.
      This refers to special software packages which are shipped with virtualization software but designed to be installed inside a VM to improve performance of the guest OS and to add extra features.