Everything you always wanted to know about VDI but were afraid to ask (no, it's not an STD)
All you need to make virtual desktops go
The Golden Image
The key to a good VDI experience lies in the care and feeding of your golden image (aka parent or master) VMs. Most people just throw a Windows VM together with minimal customisation, toss it into a pool and hope for the best. This is the exact wrong way to go about handling your VDI deployment.
The key to a good golden image lies in understanding your use case and your potential user base. This will help you move towards deciding what needs to be in your initial golden image in the first place. It is also critical for deciding between persistent and non-persistent VMs.
VMs can be set up to be dedicated, where every user always logs into the same VM which they "own" (only possible with persistent VMs). VMs can also be floating, where VDI instances are logged into on a first-come, first-served basis (when using persistent VMs) or created and destroyed on an as-needed basis (when using non-persistent VMs).
Next you start applying best practises regarding security for the OS and the applications, doing your app installs and getting an initial feel for your environment. Use as few vCPUs as possible while still maintaining a good user experience. Use paravirtualised hardware drivers as much as possible. Remove unnecessary virtual components (such as parallel and serial ports) and make sure you install the hypervisor's integration tools. Make sure you install an anti-malware application that is supported by technologies like vShield so as to reduce I/O loading.
Consider where your users will have their personalisation stored (user virtualisation), as this will have a huge impact on how the above choices will impact the end user experience. Are you going to rely on Roaming Profiles, Folder Redirection, and Group Policy, or are you going to seek out third party tools? If Citrix is to your taste, they've been buying up companies for years now and have a user virtualization technology to meet any need. VMware Horizon View Persona Management is another option, and operates differently again from the above.
Among the third parties are companies like AppSense; their user virtualization is designed to ensure users always receive a consistent, personalized desktop, whether they're logging onto a physical Windows system or a VDI instance. Think Roaming Profiles on steroids.
This contrasts to the Unidesk approach. Unidesk is designed to allow you to provide everyone with persistent desktops without having to manage eleventy squillion individual VMs or deal with the storage footprint that would occupy. MokaFive has something similar and there are countless others offering many ways to make your user virtualisation dreams come true.
Once you've gotten something that you're mostly happy with – and you've documented exactly how you installed and configured everything – delete it and rebuild it from the documentation. It should work exactly like the one you just deleted. If not, your documentation is flawed and you need to rinse and repeat until you know everything there is to know about the configuration of that VM.
Once you've made your choices and have a well-documented golden image, it's time to start cloning. Start from one golden image and modify as many as you need to suit your different user groups.
Synthetic benchmark interpretation
As you can see from the above, a synthetic benchmark to model and test your design is only going to get you so far. The best of the best – LoginVSI – has decent approximations for most workload types, but even it is not a panacea for your VDI planning ills. You need to understand what your users will do. You need to tweak the benchmark workloads to appropriately model them.
Above all, you need to pay very close attention to which elements of your benchmarks are giving you what scores. What is the bit you need to change in order to achieve the best experience for your workload? Is it a new GPU, or do you need to tweak your storage? Are you running out your CPU, or have you managed to hit the wall on your memory bandwidth? If you are planning a mixed workload environment, you may need to run more than one tool simultaneously.
VDI isn't something you can reduce to a simple "cost per instance" equation. Even small VDI deployments will inevitably have more than one class of VM, each with their own cost. Additionally, the smaller the deployment the more that floor costs matter; you need to buy a minimum of equipment and licences to even play the game, making the $/VM of 1 VDI instance quite high, but $/VM of 1000 much lower.
Workload modelling can factor in to how much are you prepared to spend per host, and that jiggles the numbers on floor costs as well as $/VM. Some host-based caching solutions will ask $10,000 or more per host for the software and the SSD combined. Can you afford that? Does it provide enough of a boost to justify the cost? Would spending $1500 per host make more sense, even if the acceleration were slightly lower?
VDI is the ultimate in workload consolidation, and it requires the most intensive modeling and simulation efforts of any systems design excepting High Performance Computing (HPC). Just like the people building HPC supers, if you are going to do VDI you need to know how each element of a system interacts.
Good luck. ®
Sponsored: DevOps and continuous delivery