Failover Clustering and Network Load Balancing Team Blog
Cluster Shared Volumes (CSV) is the clustered file system for the Microsoft Private cloud, first introduced in Windows Server 2008 R2. In Windows Server 2012, we radically improved the CSV architecture. We presented a deep dive of these architecture improvements at TechEd 2012. Building on this new and improved architecture, in Windows Server 2012 R2, we have introduced several new CSV features. In this blog, I am going to discuss one of these new features – the new Get-ClusterSharedVolumeState Windows Server Failover Clustering PowerShell® cmdlet. This cmdlet enables you to view the state of your CSV. Understanding the state of your CSV is useful in troubleshooting failures as well as optimizing the performance of your CSV. In the remainder of this blog, I will explain how to use this cmdlet as well as how to interpret the information provided by the cmdlet.
The Get-ClusterSharedVolumeState cmdlet allows you to view the state of your CSV on a node in the cluster. Note that the state of your CSV can vary between the nodes of a cluster. Therefore, it might be useful to determine the state of your CSV on multiple or all nodes of your cluster.
To use the Get-ClusterSharedVolumeState cmdlet open a new Windows PowerShell console and run the following:
Get-ClusterSharedVolumeState –Node clusternode1,clusternode2
Get-ClusterSharedVolumeState –Name "Cluster Disk 2","Cluster Disk 3"
Get-ClusterSharedVolume "Cluster Disk 2" | Get-ClusterSharedVolumeState
The Get-ClusterSharedVolumeState cmdlet output provides two important pieces of information for a particular CSV – the state of the CSV and the reason why the CSV is in that particular state. There are three states of a CSV – Direct, File System Redirected and Block Redirected. I will now examine the output of this cmdlet for each of these states.
In Direct Mode, I/O operations from the application on the cluster node can be sent directly to the storage. It therefore, bypasses the NTFS or ReFS volume stack.
In File System Redirected mode, I/O on a cluster node is redirected at the top of the CSV pseudo-file system stack over SMB to the disk. This traffic is written to the disk via the NTFS or ReFS file system stack on the coordinator node.
In Block level redirected mode, I/O passes through the local CSVFS proxy file system stack and is written directly to Disk.sys on the coordinator node. As a result it avoids traversing the NTFS/ReFS file system stack twice.
In conclusion, the Get-ClusterSharedVolumeState cmdlet is a powerful tool that enables you to understand the state of your Cluster Shared Volume and thus troubleshoot failures and optimize the performance of your private cloud storage infrastructure.
Thanks!Subhasish BhattacharyaProgram ManagerClustering and High AvailabilityMicrosoft
Thanks for a very interesting post.
I would love to see more of these truly in depth and technical blog posts about CSV.
Very nice read ; I am setting up and testing this technology as we are building our private cloud using Microsoft technology . The issue is that we are using storage tiering ; this is causing CSVs to switch to FileSystemRedirected state . when I stress CSV ; it sends some IOPS over network even on coordinator node itself. unfortunately MS support cannot help with design concerns like this .. would you be able to provide some more information about this behavior ?
As you can see from the section in this blog on File System Redirected mode, given that you are using Storage Spaces tiering, the behavior you are seeing is expected. You should see incoming SMB traffic over the network on the coordinator node. Therefore, you want to ensure that you provision appropriate network bandwidth between your coordinator node and the cluster nodes as well as spread the coordinator node ownership for your CSVs across the cluster (this will parallelize the updates). Also, refer to this presentation for some additional CSV networking considerations: channel9.msdn.com/.../MDC-B337