How the Test-StorageHealth.ps1 script checks for Storage Cluster health

I recently published the Test-StorageHealth.ps1 script to the TechNet Script Center, which checks for the health and capacity of a Storage Cluster based on Windows Server 2012 R2 Scale-Out File Servers. This blog post explains the portion of the script that checks for Storage Cluster health, which is labeled “Phase 1”.

To assess health, the script basically looks at the few objects using PowerShell, making sure they are being reported as healthy. That includes a few cluster objects (nodes, networks, resources, CSV volumes) and some storage objects (volumes, virtual disks, storage pools, physical disks, enclosures). The script also checks related items like deduplicated volumes, continuously available SMB file shares, SMB open files and SMB witness connections. The script also checks a minimum number of items (4 enclosures, 240 physical disks, 3 pools, etc.) which you will likely have to adjust for your specific configuration.

Here’s a table of the objects, the properties that indicate health and the number of expected items included by default in the current version of the script (version 1.5):

Object

PowerShell cmdlet

Health Check

Expected

Cluster Nodes

Get-ClusterNode

State –eq “Up”

4

Cluster Networks

Get-ClusterNetwork

State –eq “Up”

2

Cluster Resources

Get-ClusterResource

State –eq “Online”

Cluster Shared Volumes

Get-ClusterSharedVolume

State –eq “Online”

Volumes

Get-Volume

HealthStatus –eq “Healthy”

33

Deduplicated Volumes

Get-DedupStatus

LastOptimizationResult –eq 0

16

Virtual Disks

Get-VirtualDisk

HealthStatus –eq “Healthy”

Storage Pools

Get-StoragePool

HealthStatus –eq “Healthy”

3

Physical Disks

Get-PhysicalDisk

HealthStatus –eq “Healthy”

240

Storage Enclosures

Get-StorageEnclosure

HealthStatus –eq “Healthy”

4

SMB Shares

Get-SmbShare

Test-Path(SharePath)

SMB Open Files

Get-SmbOpenFile

>0

SMB Witness

Get-SmbWitnessClient

>0

It’s also important to note that, in general, the script looks at cluster objects and objects related to the scale-out file server, skipping local items. Here are a few examples:

When checking storage objects, it filters for objects in the Cluster Storage Subsystem

When checking volumes, it filters for volumes with the CSVFS File System

When check SMB shares, it filter for those marked as continuously available