Spaces Health State Monitor

Microsoft.SystemCenter.OperationsManager.Storage.StorageSpaces.Status.Monitor (UnitMonitor)

Monitor for Storage Spaces Health State

Knowledge Base article:

Summary

Spaces Health State Monitor generates an alert when the health of a virtual disk is unhealthy.

Causes

A virtual disk is spread out over several of the physical disks within a storage pool. If one or more of the physical disks associated with a virtual disk go unhealthy, attempts to rebuild data are made by reallocating data to other healthy disks. If that attempt fails due to a lack of free capacity or for any other reason, the virtual disk may become unhealthy.

Resolutions

In order to restore the health of your virtual disk, replace physical disks within the storage pool of this virtual disk which have failed, or add extra capacity to the storage pool. In order determine which physical disks in the storage pool are unhealthy, use the following PowerShell cmdlets, examples of which are shown below:

Remove disk from storage pool:

$storagePool = Get-VirtualDisk -FriendlyName "VirtualDiskName" | Get-StoragePool  

Get unhealthy physical disks:

Get-PhysicalDisk –StoragePool $storagePool | Where-Object –FilterScript {$_.HealthStatus –ne “Healthy”}  

Run below cmdlets for each unhealthy physical disk:

$PDToRemove = Get-PhysicalDisk –FriendlyName “PhysicalDiskName”

Remove-PhysicalDisk -PhysicalDisks $PDToRemove -StoragePool $storagePool

Add disk to storage pool:

$storagePool = Get-VirtualDisk -FriendlyName "VirtualDiskName" | Get-StoragePool

$PDToAdd = Get-PhysicalDisk -FriendlyName PhysicalDisk5

Add-PhysicalDisk -PhysicalDisks $PDToAdd –StoragePool $storagePool

Element properties:

TargetMicrosoft.SystemCenter.VirtualMachineManager.Storage.StorageLogicalUnit
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SystemCenter.OperationsManager.Storage.StorageSpaces.Status.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Spaces Health State Changed
Health of storage spaces {0} has changed. It's current health is "{1}"
RunAsMicrosoft.SystemCenter.VirtualMachineManager.2012.VMMServerConnectionRunAsProfile

Source Code:

<UnitMonitor ID="Microsoft.SystemCenter.OperationsManager.Storage.StorageSpaces.Status.Monitor" Accessibility="Public" Target="SL!Microsoft.SystemCenter.VirtualMachineManager.Storage.StorageLogicalUnit" RunAs="PROV2Library!Microsoft.SystemCenter.VirtualMachineManager.2012.VMMServerConnectionRunAsProfile" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" TypeID="Microsoft.SystemCenter.OperationsManager.Storage.StorageSpaces.Status.MonitorType" Enabled="true">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SystemCenter.OperationsManager.Storage.StorageSpaces.Status.Monitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="System!System.Entity"]/DisplayName$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='StatusDesc']$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="SpacesCritical" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="SpacesWarning" MonitorTypeStateID="Warning" HealthState="Warning"/>
<OperationalState ID="SpacesHealthy" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
<StorageLogicalUnitId>$Target/Property[Type="SL!Microsoft.SystemCenter.VirtualMachineManager.Storage.StorageLogicalUnit"]/ID$</StorageLogicalUnitId>
<VMMServer>$Target/Host/Host/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</VMMServer>
</Configuration>
</UnitMonitor>