Virtualization is not a new concept. If you were to look at our Internet History Wiki, in the year 1972 you would read:
The first version of the VM (virtual machine)/CMS) which refers to a family of IBM virtual machine operating systems used on IBM mainframes System/370, System/390, zSeries, System z and compatible systems, including the Hercules emulator for personal computers, released in 1972, was the VM/370, or officially Virtual Machine Facility/370. This was a System/370 reimplementation of earlier CP/CMS operating system. Milestone versions included VM/SP. The current version is z/VM, and is still widely used as one of the main full virtualization solutions for the mainframe market.
So what is Virtualization? Essentially, virtualization is software (sometimes with hardware) that mimics an environment that allows packaged software (Server Operating Systems, Desktop Operating Systems, and even applications) and networks believe they are running on their native stand-alone environment. Instead of one computer running one operating system, that computer is actually hosting multiple operating systems that all think they are running alone on the machine. This idea is not limited to operating systems, however. There are five types of Virtualization:
- Server
- Desktop
- Application
- Network
- Storage
Server Virtualization
In Server Virtualization, software, called a Hypervisor (with Hardware Assist), allows multiple Operating Systems to run on the same hardware at the same time (similar to the way OSes multi-task apps). This software is installed on a “bare metal” system with no prior operating system on it. Each instance of an OS is called a “guest” or VM (Virtual Machine). Each Guest’s VM is stored as a file on a file-store (DAS, NAS, SAN). The Hypervisor makes OSes think they are running on their own hardware. Some examples of Hypervisors are VMware ESX/ESXi or Microsoft Hyper-V or Citrix Xen Server.
It is possible to install a Hypervisor on top of another operating system with similar capabilities. Examples include VMware Server and VMware Fusion / Workstation.
The justification for Server Virtualization are as follows:
- If server resource utilization is low, then combining physical servers into VMs results in higher, more efficient utilization of the server resources
- Lowers total power usage (greener)
- Rapid provisioning –VMs can be created in a fraction of the time it takes to install a comparable physical server
- Allows IT to manage OSes independent of hardware, improving flexibility
Desktop Virtualization
We think of Desktop Virtualization in two contexts:
- Putting multiple Desktop Operating System instances into VMs on VM hosts. This is analogous to the benefits to server virtualization. It allows users to have their own access appliance such as thin clients (e.g. Wyse), or tablets (e.g. iPad, Galaxy, etc.). Connectivity between the appliance and the virtual desktop is done via an efficient protocol (e.g. RDP).
- Running separate Operating System environments on top of a Desktop OS. This context allows non-compatible legacy or line of business applications to operate within a more current desktop environment by employing the same basic approach as server virtualization (e.g. create a Linux or DOS VM that runs on top of Windows 7, or create a Windows 7 VM that runs on top of Mac OSX). Further, this allows you to run multiple OSes on a desktop (provided there are sufficient resources). This arrangement provides a virtual network environment to the VMs via the Desktop OS such as NAT VMs behind OS connections, or bridging to OS connections, or allowing only intra-VM connections via policy or access control. This context is useful for tech support (recreate user’s experience in a VM), legacy application support, training, or just for consolidating physical computers (don’t carry a Mac and a Windows laptop, just carry one of them). Examples include: VMware Workstation, Parallels Workstation or Desktop for Mac or Microsoft Virtual PC.
Why utilize Desktop Virtualization? We offer the following justifications: a) Desktop Virtualization allows central administration of desktops, including rapid provisioning (e.g. from clones), consolidating of data (e.g. NetApp / EMC file consolidation solutions), and central access control and auditing; b) End-users only need relatively inexpensive, low power devices to be productive, meaning they can have very powerful (lots of RAM, CPU, fast disks, etc.) “desktops” while using low-power (tablet-like) UI devices; c) Desktop virtualization can mean greater security as data sits on servers, not on end-user devices (loss of device no longer means loss of data); and lastly, d) this allows apps to appear on “unsupported” devices (e.g. MS Office running on an iPad).
Application Virtualization
Application Virtualization is software that separates the application configuration layer from the Operating System to enable apps to run on clients without having to actually install the apps on the clients. That is, it makes apps think they are running in their hosted OS, even if they aren’t.
This technique allows centralized configuration and control of the apps, including centralized access control. It solves the problem of application incompatibility within an OS due to resource or configuration conflicts (e.g. two apps that want to “own” the memory or map objects at the same physical address). It should be noted that incompatibilities between an application and its operating system can be addressed by either server virtualization or presentation virtualization, but incompatibilities between two applications installed on the same OS instance can only be resolved with application virtualization.
Application Virtualization requires a network connection between the client device and the app server, with an efficient protocol managing the interface. Examples: VMware ThinApp, Microsoft Application Virtualization, Citrix XenApp, SUN Java Virtual Machine.
Why virtualize applications? Basically, the same reasons as desktop virtualization: greater security, aggregated administration, low cost thin-client UI’s with high-power back-ends, allowing apps to “appear” on unsupported platforms (e.g. Office for iPad). Applications can be server-based or desktop based and application virtualization resolves intra-OS incompatibilities between apps without having to create additional servers or VMs.
Network Virtualization
The network in most Virtualization software is essentially ignored by application developers today. It consists of a flat network topology interconnected inside the virtual environment by a virtual switch (Vswitch). The vSwitches support VLANs so basic separation of broadcast domains can be accomplished.
Some manufacturers have released more powerful “Virtual Appliances” that can either add to the Vswitch functionality ( like Firewalls) or replace the Vswitch entirely, providing more robust networking capabilities including VLAN, VRF, and VPN connectivity control.
Reasons that IT professionals will need this extended networking capability include control over logical network structure – location, access control (like access control lists) and performance optimization through routing to answer questions like “Where is the best place?” and “What is the best way to get there?”.
To date, users have not had “control” of the network to tune the network (e.g. backup operations bursting at certain times). If you want to do this, you must connect to multiple devices (routers and switches), and send hundreds of command line entries to these devices in a pre-planned, pre-tested environment. Granted, many scripts can be created to do this function, but it still requires time and individual control of the network nodes. As we move forward, Virtualization requires the “V-Network” to be “tunable”, like a joystick to adjust network based on application or time. Think of this as network clouds within network clouds that provide a framework for certain applications. This will cause us to translate and transcend network functions to a set of behaviors defined by application programming interfaces agreed by the network community. The result will be the creation of V-Network ecosystems, new intelligent and programmable networks with abstractions of network functions for programmers of applications. It is an exciting time to say the least.
Storage Virtualization
We define Storage Virtualization as the separation of logical location from physical location. For example:
- Host-based hardware RAID (controller does mapping)
- Host-based software RAID (volume manager / logical disk manager does mapping)
- Shared Storage such as Direct Attached Storage (DAS controller does mapping), or NAS with iSCSI, NFS, SMB (NAS hardware / software does mapping), or SAN – Mapping can be at various levels, or VSANs – Virtualized SANs similar to VLANs
Storage virtualization can be nested, such as:
- NAS iSCSI carves out a LUN from a RAID array
- SAN iSCSI target mapped to multiple storage boxes, each box has RAID array
Why would someone virtualize storage? One example is for Mobility where the physical location changes while logical location stays the same. Another is Replication where duplicate blocks can be created across disks / campus / metro area / wide area network) for high-availability and disaster recovery. From our experience, hosted solutions are least flexible, typically least expensive. SAN/VSAN solutions are most flexible. They can be more cost-effective than DAS/Hosted storage (once scaled). That said, SAN/VSAN often presents higher cost of entry (e.g. need for FC / FCoIP / FCOE switches such as Nexus / MDS).
Summary
Virtualization, although invented long ago, has made major strides in recent years to change the way we store, compute, and collaborate. Going forward, Virtualization is going to be in every system design. Virtualization provides users and IT managers the elasticity needed to interconnect systems, move them, and provide recovery. Virtualization is becoming the new Network Operating System upon which storage, networking and computing reside. As we see the ultimate killer application, “Cloud” based services, being further created, developed, and delivered, we expect the features and functions in the underlying virtualization layer to expand and provide clever new capabilities that will redefine networking technologies as we know them today.
You can learn even more in our Virtualization Technocal Overview/Briefing course.