Windows Server 2012

Configuring Cluster Shared Volumes (CSV) Cache

In this post I will show you how enable Cluster Shared Volumes (CSV) Cache to improve the read performance of CSV in Windows Server 2012 (WS2012) and Windows Server 2012 R2 (WS2012 R2) by using just a little bit (or a lot if you want) of RAM from your server.

What Is Cluster Shared Volumes (CSV) Cache?

Primarily intended for Hyper-V, CSV Cache, sometimes referred to as CSV Block Cache, allows you to assign some of a memory of your server as a write-through cache to improve the read performance (read-only unbuffered I/O to be specific) of virtual machines’ virtual hard disks. That means that the server’s will cache virtual hard disk reads in RAM and hit that RAM instead of accessing the more latent disks on which the CSV is stored.

There are two designs on which CSV Cache is useful:

  • Hyper-V Hosts: Your hosts are directly connected to storage, such as a SAN (not SMB 3.0), and use CSVs to store virtual machines. In this case, you enable CSV Cache on the clustered Hyper-V hosts.
  • Scale-Out File Server (SOFS): You are using a Scale-Out File Server (SOFS), which uses CSV to have active-active disk for transparent failover and continuous SMB 3.0 service availability. In this situation, you enable CSV Cache on the nodes in the SOFS cluster, and not on the Hyper-V hosts.

Note: A SOFS that uses tiered Storage Spaces will not use CSV Cache.

Sponsored Content

Passwords Haven’t Disappeared Yet

123456. Qwerty. Iloveyou. No, these are not exercises for people who are brand new to typing. Shockingly, they are among the most common passwords that end users choose in 2021. Research has found that the average business user must manually type out, or copy/paste, the credentials to 154 websites per month. We repeatedly got one question that surprised us: “Why would I ever trust a third party with control of my network?

CSV Cache is best used in read-intensive scenarios. Examples of this might be:

  • VDI where virtual machines are mostly identical
  • Server virtualization where a CSV contains just operating system virtual hard disks (a very complicated design to automate and manage)

CSV Cache: RAM Requirements

This is the beauty of CSV Cache: Microsoft found that just 512 MB of RAM from each server connected directly to the CSV could make a big difference, particularly in the case of pooled VDI. WS2012 allows you to assign up to 20 percent of RAM in a server to CSV Cache. That was great for Hyper-V hosts. However, SOFS nodes might have much more content that could be optimized with caching. Twenty percent of 8 GB of RAM is not very much. That is why you can dedicate up to 80 percent of RAM in a server to CSV Cache in WS2012 R2.

Enable and Configure CSV Cache

In WS2012 there are two steps to enable and configure CSV cache:

  • Configure BlockCacheSize: BlockCacheSize is a cluster-wide property; this setting is zero by default and defines the amount of RAM in megabytes that is reserved by each cluster member for CSV Cache.
  • Set EnableBlockCache for each CSV: You turn on this setting for each CSV that will cache read-only buffered I/O using CSV Cache.

Note that WS2012 R2 has EnableBlockCache enabled by default for each CSV. You might want to consider disabling caching for some CSVs so that you focus your resources on other CSVs where read performance is more important.

CSV Cache is configure only from PowerShell – there is no GUI option. You can query the amount of RAM that is reserved on each cluster member for CSV Cache by running the following: (Get-Cluster).BlockCacheSize

The above command can be run on any of the cluster members; EnableBlockCache is a cluster-wide setting that is synchronized across each node in the cluster.

The following command will be run once per cluster to set the size of the CSV Cache. This setting is automatically synchronized by the cluster’s nodes. The next example will configure each cluster member to use up to 512 MB for caching: (Get-Cluster).BlockCacheSize = 512

In WS2012 you will have to enable selected CSVs to make use of this cache. WS2012 R2 CSVs will use the cache by default. To query a CSVs caching status you can run the following. A value of 1 indicates that caching is enabled and a value of 0 indicates that caching is disabled.

Get-ClusterSharedVolume | Get-ClusterParameter | where {$_.Name -eq "EnableBlockCache"}

The next command will enable CSV Cache for a CSV called “CSV1.” You can disable caching by changing the CsvEnableBLockCache value to 0.

Get-ClusterSharedVolume “CSV1” | Set-ClusterParameter CsvEnableBlockCache 1

CSV Cache Monitoring

A number of metrics are available to you to monitor the performance and usage of the CSV Cache. Each of these counters is available under Cluster CSV Volume Cache in Performance Monitor.

Selecting CSV Cache performance metrics.
Selecting CSV Cache performance metrics.

You can add these metrics to determine just how much optimization CSV Cache is providing and to help you tune the size of the CSV Cache for your cluster.

Monitoring the performance of CSV Cache
Monitoring the performance of CSV Cache.


CSV Cache is a fantastic feature that provides huge improvements to performance – for example, by reducing the length of a VDI boot storm. You can use a small percentage of RAM in your Hyper-V hosts to improve their CSV read performance, or you can assign 80 percent of the RAM in your SOFS nodes to greatly improve the performance of your SMB 3.0 storage.

Related Topics:

Aidan Finn, Microsoft Most Valuable Professional (MVP), has been working in IT since 1996. He has worked as a consultant and administrator for the likes of Innofactor Norway, Amdahl DMR, Fujitsu, Barclays and Hypo Real Estate Bank International where he dealt with large and complex IT infrastructures and MicroWarehouse Ltd. where he worked with Microsoft partners in the small/medium business space.
Live Webinar - Thursday, December 2nd! Active Directory Masterclass: AD Configuration Strategies for Stronger SecurityREGISTER NOW - Thursday, December 2, 2021 @ 1 pm ET

Active Directory (AD) is leveraged by over 90% of enterprises worldwide as the authentication and authorization hub of their IT infrastructure—but its inherent complexity leaves it prone to misconfigurations that can allow attackers to slip into your network and wreak havoc. 

Join this session with Microsoft MVP and MCT Sander Berkouwer, who will explore:

  • Whether you should upgrade your domain controllers to Windows Server
    2019 and beyond
  • Achieving mission impossible: updating DCs within 48 hours
  • How to disable legacy protocols and outdated compatibility options in
    Active Directory

Sponsored by: