During recent events there have been a lot of requests for XenServer IntelliCache. Some of the contacs knew pretty well what IntelliCache is doing under the hood and some of them didn’t. I would like to summarize a kind of the most frequent questions to give a better understanding of the technology. I just want to point out that IntelliCache today is a technology which is dedicated for XenDesktop using Machine Creation Services (MCS) only. Provisioning Server does not leverage IntelliCache technology today.

Local storage usage – sounds like going backwards half a century?

IntelliCache is all about leveraging the performance and scalability of local storage for virtual desktops. Some might think that we have worked so much driving projects to use shared storage environments and now we move backwards to local storage? Hmm. Sounds a bit like this, but indeed it’s very different.

When talking about local storage you might first think of limited scalability, limited space, de-central management, low flexibility and so on. This is true when you use local storage the traditional way. All major hypervisors and the desktop virtualization solutions like XenDesktop and some others can use local storage “the traditional way”. What does this mean? If you use a storage this way you provide a master image somewhere on the storage in the environment. Secondly you have to create a host group which includes all available local storages of each server. Finally you will create a catalog which refers to the local storage host group.

Host group with 2 servers and using local storage


Catalog creation for traditional local storage usage.


If done so, XenDesktop will create a base disk on each host which is a full copy of the master image. Subsequently all VMs will be created on the respective servers with a differencing disk pointing to the local master image. This works for hypervisors like XenServer, vSphere and Hyper-V. But what do you gain with that? Sure, you use local storage and you keep some kind of central management, but what about the other aspects?

Looking closer to the solution you have think about several factors:

What happens when I want to update my image e.g. with a newer service pack version?
For the update process the new image has to be fully copied to each single server. This might take some time as the whole image has to be transferred through the available network multiplied by the server number. So each update process has to be planned very well and might get a challenge for the network.

What about agility of the VMs? Can my VM be started on an arbitrary host?
No, the VMs will be hard coded to the hosts they have been created on. No on-boot placement is possible

Will this solution support individual / dedicated desktops that keep their image changes after reboot?
Well, in theory they could which would mean that all information changed to the image by users (e.g. application installation) will be stored on the local disks. But would you rely on the availability of local server disks when it comes to your user’s image customizations? This might be an individual question to answer. However if answered with “yes” you probably wouldn’t want to use lower levels for high availability than RAID 1 and might want to think about additional backup processes.

What will happen in case my local storage runs out of space e.g. by Thin Provisioning?
Well, guess what? Your desktop will blue screen and it will be hard to recover.

There are a couple of more points to think about, but the above mentioned will be the most important ones. When reading through them you probably want to re-evaluate the decision to use local storage. But wait one minute – What if there’s a technology which could compensate all these constraints and uses local storage? Right! This is where IntelliCache comes into the game.

IntelliCache – leveraging local storage for desktops in an intelligent way

IntelliCache is built-up on the same concepts used for XenDesktop in a shared storage environment. So it’s designed to use the local storage of the server transparently with no changes to the lifecycle operations of your XenDesktop deployment. After first start of a virtual desktop, IntelliCache uses the local storage cache of the server to cache blocks of the base image as far as they are accessed by the virtual desktop. In case a second VM is started on the host it uses the already cached bits on local storage and does not need to reach out to the shared storage. In a non-persistent desktop world the write caches will also be stored locally and discarded after logoff. As a result the shared storage is touched only during the initial read of the base image to get the cached data.

See more details on how to activate IntelliCache in http://support.citrix.com/article/CTX129052

Activation of IntelliCache in XenDesktop by a single "Klick"
Activation of IntelliCache in XenDesktop by a single "Klick"


So let us re-visit the questions we asked before now related to IntelliCache technology:

What happens when I want to update my image e.g. with a newer service pack version?
Well, this is like the normal XenDesktop lifecycle process for updating an image and it will take more or less the same time like it would take in a typical shared storage environment. The difference to normal local storage usage is that with IntelliCache the image does not need to be copied fully to the local storage. IntelliCache automatically fills the local cache when the first VM is started with the data that is essentially read by the VM. So the update process is much faster and uses much less bandwidth compared to “normal” local storage usage.

What about agility of the VMs? Can my VM be started on an arbitrary host?
Yes. As the single VMs have no hard-coded relationship to the servers they can be started on whatever host in the pool you would like to. IntelliCache takes care automatically about filling and using the local disk cache.

Will this solution support individual / dedicated desktops that keep their images changes after reboot?
In fact it does! Read more about it in the following paragraph as this is more to talk about J

What will happen in case my local storage runs out of space e.g. by Thin Provisioning?
This is something that is covered by IntelliCache. As there is a relationship to the shared storage system (think: It’s just a caching system, no copy process), IntelliCache can transparently fall back to shared storage usage in case local storage runs out of space. Certainly the local storage space sizing has to be done appropriately as nobody wants to design an IntelliCache solution which at the end serves 95% of the data from shared storage because of too small local disks. But everyone might want to do a pretty aggressive storage sizing with use of ThinProvisioning to save cost. With IntelliCache the risk of VM bluescreen because of filled-up local storage has vanished.

Sounds great, so I can leverage local storage by keeping the advantages of central management with IntelliCache? Yes, you absolutely can. Indeed you can also leverage the concept of building blocks much further. Just think of what would happen if you enhance your environment by a new server? Right! You get CPU performance as well as storage performance and scalability will increase linearly while you likely will not have to invest in new central storage. There are a lot of more discussions about how much savings you can get by IntelliCache on other places, that’s why I don’t want to go into more detail during this thread. Hopefully there’s a calculator available soon on that…

IntelliCache is fine for pooled desktops, but what about dedicated desktops?

Well, this is also something that has been considered in the IntelliCache concept. Most likely when using dedicated desktops you don’t want to rely on your local storage purely when talking about user customizations. Therefore IntelliCache writes all user changes of a desktop image locally as well as to the shared storage. This keeps your user customizations persistent even in the case of a local disk subsystem failure of your server. The desktop VM will simple be restarted on another server and here you go again!

As a positive side effect these VMs will also be fully agile! This means customers can use XenMotion functionality to live-move their desktops from one host to another getting further availability e.g. for maintenance purposes.

In the dedicated case you will not benefit from the write reductions to the shared storage like you would in a pooled world. However the read caching fully takes place which also massively reduces load on the shared storage system and hence saves cost.

Ever thought about using RAID 0 for local disks?

Many customers considering local storage for desktops, will notice that performance of the local storage subsystem gets more important. You might want to have a closer look at battery-backed RAID controllers as well as SSD disks to get best performance. Apart from that technology decision it’s also important to discuss the different RAID levels. For local installations often RAID 1 is used to create redundancy of the installation. Have you ever thought about using RAID 0 which could improve write performance by 100% compared to RAID 1? You probably wouldn’t think about moving to RAID 0 if you are talking about user desktop customizations and risk losing them by essentially relying on availability of a single disk. So the “typical” local storage use case as outlined some paragraphs above likely would stay at secure RAID solutions like RAID 1. But what about IntelliCache? We just learnt that pooled as well as dedicated desktops can easily and completely be recovered from shared storage in case local storage fails. So RAID 0 potentially is an option for IntelliCache configurations. Yes … another good reason to give IntelliCache a favour compared to standard local storage usage for virtual desktops.