I received a few interesting question related streaming desktop images via Provisioning Services. The question asks “What is the best option for storing the write cache when the target devices are disk-less?” One question asked about disk-less physical endpoints, while another question asked about virtual machines with no disks assigned.
This was a great question. In fact, we almost always talk about Provisioning Services from the standpoint of having a small, local disk assigned for the write cache and other log files, but you do not require this little disk. So what is the best option? As with all great questions, the answer is “It depends” J Let’s first look at our viable options
Option | Benefits | Concerns |
Local cache on local storage | Doesn’t require expensive SAN or shared storage Doesn’t add network traffic to PVS server Doesn’t impact PVS system cache Supports PVS high-availability |
Not possible in a diskless scenario No live migration Local disks might not support the IO load |
Local cache on shared storage | Doesn’t add network traffic to PVS server Doesn’t impact PVS system cache Live migration supported Supports PVS high-availability |
Requires a SAN or some type of shared storage Not a good option for physical endpoints due to complexity in configuration |
Local RAM | Doesn’t require expensive SAN or shared storage Doesn’t add network traffic to PVS server Doesn’t impact PVS system cache Works in diskless scenario Easy to setup and configure Supports PVS high-availability |
RAM is not cheap Need to estimate write cache size correctly or risk blue screen of target No live migration |
Server side on Provisioning services server | Easy to setup and configure Doesn’t require SAN or shared storage Live migration supported |
Adds network traffic for PVS server Negatively impacts PVS scalability due to NIC utilization No PVS high-availability Impacts PVS system cache Local disks might not support the IO load |
Server side on shared storage | Easy to setup and configure Live migration supported Supports PVS high-availability |
Requires SAN, NAS or some type of shared storage Potentially impacts PVS system cache |
I probably missed some of the benefits and concerns with the options, but hopefully you get the idea. So which do you choose?
- If you were in a smaller environment, I would end up using server side on Provisioning services. It is easy. It doesn’t cost much. And because the deployment is smaller, it shouldn’t have a major impact on the system cache settings on the Provisioning services server.
- For larger implementations, you will most likely end up going with server side on shared storage. This will allow you to better optimize the PVS system cache and have a more enterprise-scalable architecture supporting thousands of desktops. Plus, the shared storage is going to be better able to support the IO load of the write cache for your massive numbers of desktops. However, server side on Provisioning services is still viable if you can support the IO load (maybe with SSDs).
Daniel – Lead Architect
Hello Daniel,
Nice post! Just some questions:
– What is a “server side on PVS/Shared Storage”?
– What do you consider a “smaller environment” and a “larger environment”?
Thanks!
LikeLike
Hi Dan,
Another great article that should prove very helpful to customers in the planning and design phases of deploying Citrix XenDesktop and/or XenApp.
For those readers who are planning to follow your advise regarding the placement of device write cache files server-side on shared storage for mid- to large-sized implementations, I’d like to invite them to visit the following website to learn more about how they can take advantage of highly scalable, highly available shared storage: http://www.sanbolic.com/Citrix.htm
LikeLike
An excellent article and reference guide as well.
However (and assuming I have understood the config correctly) would the ‘Server side on shared storage’ still impact the PVS server network traffic if clients are still sending their cache to PVS for storage on a SAN?
LikeLike