This article builds on top of my previous two articles about Horizon View and VMware Virtual SAN. Here are the aforementioned articles: How does VMware VSAN help Horizon View?, and How is Horizon View configured for VMware VSAN?
The CBRC (Content Based Read Cache) was introduced with vSphere 5, allowing Horizon View administrators to leverage it the feature via the Horizon View administrative console. CBRC help administrators to address performance bottlenecks and the increase in storage cost for VDI.
In summary, CBRC is a 100% host-based RAM-Based caching solution that helps to reduce Read IOs issued to the storage subsystem and thus improves scalability of the storage subsystem while being completely transparent to the guest OS.
The feature has been primarily designed to help with read-intensive I/O storms, such as OS boot and reboot, A/V scans. Administrators commonly see significant reduction on the peak Read I/O being issued to the array for these workloads, approximately 60%. If you are interested in a CBRC deep-dive I recommend reading my previous article Understanding CBRC (Content Based Read Cache).
While VSAN provides a caching layer in SSD for reads and buffering for writes, CBRC’s content-based cache approach is essential to support peak Read IO load. CBRC allow common cached blocks to be served up to the virtual desktops in terms of microseconds, instead of millisecond. Additionally, and most importantly, during boot storms and host initialization, when using VSAN without CBRC the data blocks most frequently accessed have not yet been promoted to the SSD caching layer, potentially reducing end-user experience.
Due to the RAIN architecture implemented by VSAN the data blocks corresponding to virtual machines could be located anywhere in the cluster causing storage IO traffic to go through the network stack. Here is a good article by Duncan Epping on How do you know where an object is located with Virtual SAN?
There are few important interaction points between VSAN and CBRC during multiple parts of the desktop lifecycle management, including boot storms and CBRC digest computations. Find more information at Understanding CBRC – RecomputeDigest Method.
One of the common questions on VSAN interaction with CBRC refers to the fact that on VSAN the data block could be read from a different host than the one where the virtual desktop is actually running. Despite the change to where the blocks are located CBRC will cache common data blocks only on the host where the virtual desktop is running. If the virtual desktop is moved to a different host a new computational CBRC process will take place on the new host to ensure common blocks are cached.
vSphere hosts could effectively end up with similar blocks cached in SSD by VSAN, and in RAM by CBRC. However, the caching algorithms and methodology utilized by both features are completely different. While VSAN is looking for common LBA (Logical block addressing) blocks, CBRC is looking for common IO data block content across a range of different LBA blocks or virtual machines. Overtime the tendency is that less VSAN SSD caching is utilized given that most of the critical data set will be located in RAM.
For additional VSAN and VMware vSphere design considerations I recommend Duncan Epping’s article VMware vSphere Virtual SAN design considerations…
This article was first published by Andre Leibovici (@andreleibovici) at myvirtualcloud.net.