Late last month, Citrix's Bill Carovano blogged about the new features in the upcoming version of XenServer known as "Cowley." One of the features he mentioned was:
XenDesktop platform enhancements. Provides local host caching of VM images to reduce storage TCO for XenDesktop VDI deployments. (Note: these platform enhancements will be enabled by a future version of XenDesktop)
This was perfect timing because ironically I had written The ultimate VDI storage option: "local" virtual storage. Does this product exist? just a few days prior. Of course when Bill's blog came out, we really didn't know anything real, but there was a lot of chatter about the possibilities via twitter nonetheless.
Then at Citrix Synergy Berlin last week, Citrix talked quite a bit about XenServer Cowley (which we learned will be made available as XenServer 5.6 Feature Pack 1 and is now available as a beta download). We also learned that this new local host caching of VM images feature is going to be called "IntelliCache" (and that it will be in every edition of XenServer, even the free one).
Digging in to XenServer's IntelliCache
The first thing that needs to be said about IntelliCache is that Citrix uses the word "IntelliCache" in another product, and that product has absolutely nothing to do with with XenServer's IntelliCache. (The "other" IntelliCache, in case you're wondering, is HDX IntelliCache -- a feature of the Branch Repeater that offered branch-level caching of XenApp streamed apps and caching of HDX bits across multiple users' sessions.)
The best way to describe XenServer IntelliCache came from Citrix Ian Pratt. (Ian and I also spoke about Intellicache for a few minutes when we sat down together at Synergy in Berlin.) Ian explained that the easiest way to manage storage in XenDesktop is to have a NAS with either a VHD or raw files, and then you can just use snapshots & clones to allow multiple VMs to simply "share" that image. Of course in real life that's a lot of load on the NAS (which limits the number of hosts and clients, etc.).
The alternative so far has been to copy these images locally to each VM host and do the whole thing locally, but then you have to deal with manual copying and syncing and it just gets pretty complex. (This is something we learned from the 70+ comments in my July 2010 F*** the SAN. VDI storage should be local! article.)
XenServer IntelliCache kind of combines the best elements of both of these situations together. You build a master VHD file and store it on a NAS (cheap NAS, not expensive SAN) and then as many VMs as you want can boot it. Then XenServer will automatically make use of local storage for an intelligent cache (and "IntelliCache," if you will :) to allow for good performance and to protect the NAS.
The local IntelliCache location can be physical disk (SSD or traditional, of course) or can be memory. In fact Ian mentioned that for desktop workloads, even 200mb of RAM cache is enough to soak up most of the IOPS you get with boot storms. (So to walk through that use case, you'd have maybe 50 desktop VMs on a single XenServer 5.6 FP1 host all sharing the same VHD file on a NAS. The first one to boot would be accessing 100% of it's initial disk blocks from the NAS, but the Intellicache feature would cache those locally, and since subsequent VM boots would request the same blocks from the same disk image, IntelliCache would know to pull those from local cache instead of the original remote VHD source file.)
A future without Citrix Provisioning Server?
In many ways the XenServer 5.6 FP1 Intellicache sounds like Citrix Provisioning Server, and certainly there are similarities. There are two big differences, however:L
First is that XenServer Intellicache is specifically designed for virtual machines running on VM hosts with local storage. It's totally integrated into the XenServer installation and VM creation process. Citrix Provisioning Server, on the other hand, was designed for physical machines booting across a physical LAN, so transferring that whole structure into the virtual world is clunky (to say the least). You have to deal with virtual MAC addresses, weird boot stubs, "LAN" connections even when your storage is on the same host, etc.
Second, and most important, is that the IntelliCache capabilities work across VMs. Citrix Provisioning Server does have the ability to cache disk blocks locally on client devices (whether they're physical or virtual). The problem with this though is that each Citrix Provisioning Server client operates in a vacuum. So that 50 virtual desktop on the same host example we talked about before? With Provisioning Server, each one of the 50 VMs would download the same boot blocks from the Provisioning Server, and the boot storm would still happen. (Sure, after that each VM will have cached some components local, but there is no ability for one VM to know that another VM just downloaded the same blocks.) So this is why Intellicache is as much of a feature of the hypervisor as it is the VM.
IntelliCache is v1
One important thing to remember about IntelliCache is the version of Intellicache that's included in XenServer 5.6 FP1 is the "v1" version, and since CItrix has recently redefined their v1s as essentially public betas, I guess we shouldn't get too excited about it yet.
In fact there are several limitations. The v1 capability is designed for shared images, not personal images. For example if you configured multiple VMs to each have their own VHD on a SAN (essentially using the v1 capability so that each VM had its own "master,") that would technically work, but (a) you wouldn't get the cross-VM cache-resuing capability, and (b) IntelliCache v1 has no way to save any changes that were made to the image back up to the original VHD on the NAS. Both of these shortcomings, however, are things that Citrix plans to enhance for future versions of XenServer Intellicache.
Also, interestingly, the new XenDesktop 5 will NOT support XenServer IntelliCache out of the box. We'll have to wait for an update sometime in 2011 for that. (But don't worry, XenDesktop 5 will support HDX IntelliCache out of the box. :)
The impact on the industry?
If you talk to Citrix folks, they believe that XenServer Intellicache is going to have a huge impact on the industry. Certainly they think it will kick VMware's butt, but they also believe that storage performance enhancing companies like Atlantis Computing won't be needed.
Time will tell. Like many cases these smaller companies have a several year head start over Citrix. But on the other hand, XenServer Intellicache seems like it will be simple to use and configure, and it's free.
(Well, "free" if you use XenServer. Look how that works out.)
I wonder what will happen with Windows Server 2008 R2 SP1 comes out with support for RemoteFX on Hyper-V only. Now you'll have to make a choice: Do you want Intellicache or RemoteFX? (Or vSphere? :)
I guess worst-case this might inspire VMware and Microsoft to release similar functionality? What do you think? Is this as big of a deal as Citrix says it is? Can we finally say good-bye to Provisioning Server?