I get asked about virtualization and terminal services-type environments quite often. When I answer questions of this nature, I like to start by saying that I envision a day where an organization will have just one really big computer in a room somewhere running workloads sliced up into specific duties. Hanging off that big central computer will be a number of client workstations - terminals - used to access the resources of the central computer. Virtualization, VDI and Terminal Services really are methods used to bring the past to the present. No longer do we talk about mainframes, though. Instead, we’re looking at virtual hosts. On the client side, big, bulky boxy green screen terminals succumb to sleek new terminals that each have more processing power of a 1950’s style mainframe computer. When you really think about the way the future looks, however, the past is a good guide.
One area gaining major traction today is desktop virtualization - virtual desktop infrastructure or VDI. The term VDI is thrown around for a lot of solutions and may not accurately represent the end goal of an organization that simply wants to simplify the desktop infrastructure, but the term is close enough for this article. In general, Windows desktop solutions are discussed here, although there are a number of Linux solutions out there, too.
To say that there are a lot of options on the market when it comes to replacing desktop computers with centralized solutions would be a massive understatement. I’m going to talk about a few of the overall options here. I can’t possibly present every single solution here, so if I don’t mention one, leave a comment and I’ll possibly come back to it at a later time. We are actively evaluating VDI solutions at Westminster College, so more information will be forthcoming.
For years, Microsoft and Citrix have provided terminal-based solutions designed to provide a single-image desktop environment to distributed clients. Using either the relatively inefficient RDP or lean ICA protocol, terminals communicate with a multiuser server which, other than the fact that multiuser components are installed, is identical to a normal server. On the upside, terminal solutions have relatively low overhead, making it possible to support a reasonably large number of users on a single server. Further, solutions from both Microsoft and Citrix have matured over the years and high availability is relatively easily achieved. Implementation for terminal server environments is also relatively simple and the components for this kind of environments actually ship with Windows Server 2003 and 2008, although licensing can be tricky.
On the downside, terminal environments have always suffered because of the shared nature of the resource. Many users share the same resources, making it possible that a single user can corrupt the system for all or that one user can consume all of the server’s resources. That said, there are a number of solutions available that can solve application collision. Application virtualization technology from Microsoft (AppV) or VMware (Thinstall) can easily overcome this problem.
Full virtual machines
Perhaps the easiest form of VDI to understand is the concept of running a 1:1 system whereby each users gets his or her very own full virtual machine. The upside to using a full virtual machine lies in familiarity and existing management tools. If desired, you can manage your virtual machine-based desktop images in exactly the same way that you manage the physical desktop. Of course, in many cases, one goal of VDI is to reduce the burden of managing all kinds of laptops. However, unlike in the physical world, you don’t necessarily have to worry about dozens of different desktop images. For physical machines, each year, your configuration changes, resulting in a new build. In the virtual world, your virtual machines can all be identical; they are all built on the same exactly virtualized and emulated hardware.
VDI vendors have realized that simply moving the physical to the virtual is not necessarily the best plan. After all, it still takes a lot of effort to manage hundreds of virtual machines. Remember, just like their physical counterparts, virtual machines require patching and general maintenance. Some vendors include tools to make the desktop image maintenance job easy.
Another downside to this VDI method lies in the sheer resource requirement. Suppose you have 100 virtual desktops. For each and every image, you need to provide emulated hardware, including a keyboard, mouse, processor, and RAM. On top of that, each virtual machine needs a full copy of Windows installed. Multiply that overhead by 100 and you can begin to see major processing requirements.
Finally, consider storage needs. With a full VM solution, each virtual machine has its own copy of Windows, its own complete setup. With enough virtual machines running, you can quickly saturate your storage, both from a capacity and a performance perspective. Suppose those 100 virtual machine images are each 15GB in size. There goes 1.5TB of storage.
Again, these kinds of downsides are being actively addressed. VMware View, for example, includes a feature called linked clones that allows an administrator to create a single master image for a particular type of desktop. From there, individual user VMs are created, but only file differences are written to disk. This saves both disk capacity and improves performance.
I’ve known about Virtuozzo for quite some time, but have recently begun to look at the solution with regard to VDI. From what I’ve read thus far, Virtuozzo provides a combination of both terminal and full VM-based environments. Administrators get the administrative ease of a terminal environment, but with much of the flexibility of a full virtual machine environment. It works by installing over an existing OS, such as Windows Server, and then partitioning that master operating system into smaller chunks. To the applications in each partition, only one Windows server exists, although all of the partitions share the same resources.
With only one exception, on the surface, I definitely see the OS virtualization method as a sort of Holy Grail for desktop virtualization. There is only a single OS instance to worry about for overhead and a low impact virtualization layer sitting between the OS and each partition. In short: each user appears to get their own full VM, but there is still only a single OS instance to manage. Each partition requires only a fraction of the RAM and other resources of a full VM.
The only downside that I can see in this solution - so far at least - lies in the choice of the host operating system. Although a 32-bit host will work, the 4GB memory limit for a 32-bit OS can eventually become a problem. A 64-bit host OS is an option, but there are still some client applications that have a hard time with 64 bits. The 64-bit problem could be overcome through the use of application virtualization tools, such as AppV or Thinstall, though.
These are a few ways by which desktop virtualization can be achieved. As I learn more, I’ll report back. We are meeting with VMware next week and will also be getting a Virtuozzo demo.