Data ONTAP Virtualization: Hyper-V VHD Alignment Monitor

DataONTAP.Virtualization.HyperV.VHD.Alignment.Monitor (UnitMonitor)


This monitor checks the alignment of Virtual Hard Disks. For optimal performance, the file system of the VHD and the storage array should be in proper alignment.

Failure to make sure that all VHDs are aligned can result in mild to severe performance degradation depending upon the configuration and overall environment.

Knowledge Base article:

Summary

This monitor checks the alignment of Virtual Hard Disks. For optimal performance, the file system of the VHD and the storage array should be in proper alignment.

Failure to make sure that all VHDs are aligned can result in mild to severe performance degradation depending upon the configuration and overall environment.

Causes

This VHD has one or more of the following problems:

Resolutions

See NetApp Storage Best Practices for Microsoft Virtualization (TR-3702) for details on resolutions.

Element properties:

TargetDataONTAP.Virtualization.HyperV.VHD
Parent MonitorSystem.Health.AvailabilityState
CategoryCustom
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.3SingleEventLog3StateUnitMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Data ONTAP Virtualization: Hyper-V VHD Alignment
Event Description: {0}
RunAsDataONTAP.SecureReference.RunAsProfileVirtualization

Source Code:

<UnitMonitor ID="DataONTAP.Virtualization.HyperV.VHD.Alignment.Monitor" Accessibility="Public" Enabled="true" Target="DataONTAP.Virtualization.HyperV.VHD" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.3SingleEventLog3StateUnitMonitorType" ConfirmDelivery="true" RunAs="DS!DataONTAP.SecureReference.RunAsProfileVirtualization">
<Category>Custom</Category>
<AlertSettings AlertMessage="DataONTAP.Virtualization.HyperV.VHD.Alignment.Monitor_AlertMessageResourceID">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UIGeneratedOpStateIdf31399e37e7c4bfaa65104980b6b0d89" MonitorTypeStateID="FirstEventRaised" HealthState="Error"/>
<OperationalState ID="UIGeneratedOpStateIdef50c5fe72bf49839bbac2b8de5ad521" MonitorTypeStateID="SecondEventRaised" HealthState="Warning"/>
<OperationalState ID="UIGeneratedOpStateIdb42099f5bed14c6ea75a14d0cb20cace" MonitorTypeStateID="ThirdEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<FirstComputerName/>
<FirstLogName>OnCommand</FirstLogName>
<FirstExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">1662</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Data ONTAP Virtualization MP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>$Target/Property[Type="DataONTAP.Virtualization.HyperV.VHD"]/VHDPath$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>$Target/Property[Type="DataONTAP.Virtualization.HyperV.VHD"]/Host$</Pattern>
</RegExExpression>
</Expression>
</And>
</FirstExpression>
<SecondComputerName/>
<SecondLogName>OnCommand</SecondLogName>
<SecondExpression>
<And>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">1661</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">1671</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Data ONTAP Virtualization MP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>$Target/Property[Type="DataONTAP.Virtualization.HyperV.VHD"]/VHDPath$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>$Target/Property[Type="DataONTAP.Virtualization.HyperV.VHD"]/Host$</Pattern>
</RegExExpression>
</Expression>
</And>
</SecondExpression>
<ThirdComputerName/>
<ThirdLogName>OnCommand</ThirdLogName>
<ThirdExpression>
<And>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">1660</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">1663</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Data ONTAP Virtualization MP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>$Target/Property[Type="DataONTAP.Virtualization.HyperV.VHD"]/VHDPath$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>$Target/Property[Type="DataONTAP.Virtualization.HyperV.VHD"]/Host$</Pattern>
</RegExExpression>
</Expression>
</And>
</Expression>
</And>
</ThirdExpression>
</Configuration>
</UnitMonitor>