For more technical explainers on PowerShell, read our PowerShell 101: A Technical Explainer for IT Pros report.
Health Service is a component that was first introduced in Windows Server 2016, as a tool for helping admins to monitor and manage Storage Spaces Direct Clusters. One of the nice things about the Cluster Health Service is that it is enabled by default. As such, you can begin using it without having to do any prep work beyond simply deploying one or more Storage Spaces Direct clusters.
One of the key components of the Cluster Health Service is a PowerShell cmdlet called Get-StorageHealthReport. As you would probably expect, this cmdlet generates Storage Spaces Direct health reports. To use this cmdlet, however, you will need to tell it what aspect of the storage infrastructure you wish to report on. Some of the more common use cases include reporting on cluster health, volume health and node health.
Here’s how to generate each of these three types of reports.
Reporting on Cluster Health
To generate a report on cluster health you will have to use the Get-StorageSubSystem cmdlet, and then pipe its output into the Get-StorageHealthReport cmdlet. Here is what the command looks like:
Get-StorageSubSystem Cluster* | Get-StorageHealthReport
As you look at the command above, you will notice that the Get-StorageSubSystem cmdlet is followed by Cluster*. The reason for this is that when you use the Get-StorageSubSystem cmdlet, you have to supply the friendly name of the storage subsystem component that you wish to examine. The friendly name for the clustering service is Clustered Windows Storage on
If you type this command by itself (without supplying the Get-StorageHealthReport cmdlet), you will get a summary of the cluster’s health, as shown in Figure 1.
You can use the Get-StorageSubSystem cmdlet to verify that the cluster is healthy.
Now, check out the full-blown storage health report shown in Figure 2. As you can see in the figure, there is a warning message indicating that the cmdlet is being deprecated. This warning is followed by a number of cluster-related statistics. We can see everything from the cluster’s CPU usage to its IO latency.
This is what a cluster health report looks like.
So what about that warning message shown in the figure above? The Get-ClusterPerformanceHistory cmdlet is a standalone cmdlet (it doesn’t require the Get-StorageSubSystem cmdlet) that produces output similar to what you saw above. You can see what this command looks like in the figure below.
This is what happens when you run the Get-ClusterPerformanceHistory cmdlet.
Reporting on Volume Health
As previously noted, you can acquire health data for an individual cluster volume. PowerShell includes a Get-Volume cmdlet that will show you each volume on the server. If you want to check Storage Spaces Direct volume health, however, you will need to append the -FileSystemLabel switch and the volume name. If you look at Figure 4, you can see that I used the Get-Volume cmdlet to retrieve a list of volumes. From there, I used the same cmdlet, but with the FileSystemLabel switch to focus on a Storage Spaces Direct volume.
This is how you can verify that a volume is healthy.
If you want to generate a full-blown report, simply append the Get-StorageHealthReport cmdlet, as shown in Figure 5.
This is a volume health report.
At first glance, this looks a lot like what you saw before. The difference is that the data is related to a specific volume rather than the entire cluster.
Reporting on Node Health
If you want to see the nodes that make up your Storage Spaces Direct cluster, enter the Get-StorageNode cmdlet. This cmdlet lists the node names and indicates whether the nodes are up.
These are just a few of the tools that are available within PowerShell to monitor the health and performance of your Storage Spaces Direct cluster.