machine workloads. In Windows Server 2012, CSV was also supported for a special
type of cluster file share, a Scale-out File Server, which leveraged CSV as the storage
for a file share that could be shared by multiple nodes in the cluster simultaneously.
This was targeted to provide SMB 3 services for enterprise workloads such as Hyper-V
virtual machines running over SMB 3, but it also allowed SQL Server databases to run
over SMB 3. Windows Server 2012 R2 further adds to CSV-supported workloads,
including SQL Server databases, without connecting to storage via SMB 3.
With CSV, all nodes in the cluster can access the same storage at the same time. This
makes moving virtual machines between nodes simple, because no dismount/mount
is required of LUNs. However, it also means that you can reduce the number of LUNs
required in the environment, since virtual machines can now run across different
servers, even when stored on the same LUN.
Windows Server 2012 introduced additional features to CSV, specifically around
performance, with CSV Cache. CSV uses unbuffered I/O for read and write operations,
which means no caching is ever used. Windows Server 2012 introduced the ability to
use a portion of the system memory as a read cache for CSV on each node in the
cluster, which improves read performance. There are two steps to enable CSV Cache in
Windows Server 2012 and only one step to enable it in Windows Server 2012 R2.
First, the amount of memory that can be used by the host for CSV Cache must be
configured. In the following examples, I set a value of 4GB.
Windows Server 2012:
(Get-Cluster).SharedVolumeBlockCacheSizeInMB = 4096
Windows Server 2012 R2:
(Get-Cluster).BlockCacheSize = 4096
For Windows Server 2012, the CSV Cache must be enabled per disk. For Windows
Server 2012 R2, the CSV Cache is enabled by default. To enable a disk for CSV Cache
with Windows Server 2012, use the following command:
Get-ClusterSharedVolume "Cluster Disk 1" | `
Set-ClusterParameter CsvEnableBlockCache 1
The property is renamed EnableBlockCache in Windows Server 2012 R2 if you ever
want to disable CSV Cache for a specific disk. No reboot is required when changing the
CSV cache configuration.
In Windows Server 2012, the CSV Cache could be set to up to 20 percent of the system
memory only. In Windows Server 2012 R2, it can be set to up to 80 percent of the
system memory. The ability to set such a large cache is aimed at Scale-out File
Servers, where committing more memory to cache will result in great performance
gains. For Hyper-V clusters, typically it’s better to have memory available to virtual
machines, while some CSV cache will help overall performance.