Exchange 2013 / Exchange 2010: Database availability groups with shared storage on Windows 2012 and Windows 2012 R2

Although Exchange no longer uses shared storage, it can be deployed in clustered environments where shared storage is used. The storage is not actually shared between nodes as was the case with traditional clustering. Instead, the storage is presented through traditional shared storage controllers including fibre channel and iSCSI.

 

When creating a cluster with Windows Server 2012 or Windows Server 2012 R2, storage found on a shared bus is not automatically added to the cluster. When adding a node to an existing cluster the administrator is presented with an option to add shared storage automatically.  

 

image

 

PS C:\> Add-ClusterNode -Cluster TEST -Name MBX-2

 

Allowing this option to remain checked, which is the default, will result in the Cluster service automatically adding all storage found on a shared storage bus to the cluster and clustered storage (even for disks that are not shared between nodes).  The same behavior is observed when using the Add-ClusterNode cmdlet. 

 

The disks can be observed within Failover Cluster Manager:

 

image

 

Physical disk resources can also be reviewed using Get-ClusterResource:

 

PS C:\Users\Administrator.EXCHANGE> Get-ClusterResource

Name State OwnerGroup ResourceType
---- ----- ---------- ------------
Cluster Disk 1 Online Cluster Group Physical Disk
Cluster Disk 2 Online Available Storage Physical Disk
Cluster Disk 3 Offline Available Storage Physical Disk
Cluster Disk 4 Offline Available Storage Physical Disk

Cluster IP Address Online Cluster Group IP Address
Cluster Name Online Cluster Group Network Name

 

Administrators can prevent the addition of the shared disks by unchecking “Add all eligible storage to the cluster” or by using the –NoStorage option with Add-ClusterNode.

 

image

 

PS C:\> Add-ClusterNode -Cluster TEST -Name MBX-2 -NoStorage
Report file location: C:\Windows\cluster\Reports\Add Node Wizard 6252c9cd-5117-474b-bb7f-d117a98759ee on 2014.07.20 At 05.31.26.mht

 

This configuration can be validated using Get-ClusterResource.

 

PS C:\Users\Administrator.EXCHANGE> Get-ClusterResource

Name State OwnerGroup ResourceType
---- ----- ---------- ------------
Cluster IP Address Online Cluster Group IP Address
Cluster Name Online Cluster Group Network Name

With Windows Server 2008 R2, storage found on a shared bus is not automatically added to a cluster during creation or when a node is added. The behavior is the same whether you are creating the cluster or adding the node with Failover Cluster Manager or with PowerShell. The confirmation dialog has no “Add all eligible storage to the cluster” option.

 

image

 

Additionally the Add-ClusterNode cmdlet does not have a –NoStorage option. 

 

PS C:\> Add-ClusterNode -Cluster Cluster -Name Node-2 -noStorage
Add-ClusterNode : A parameter cannot be found that matches parameter name 'noStorage'.
At line:1 char:57
+ Add-ClusterNode -Cluster Cluster -Name Node-2 -noStorage <<<<
+ CategoryInfo : InvalidArgument: (:) [Add-ClusterNode], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.FailoverClusters.PowerShell.AddClusterNodeCommand

 

As the membership is modified within the cluster, the lack of clustered disks can be validated with Get-ClusterResource, as well as with Failover Cluster Manager.

 

PS C:\> Get-ClusterResource -Cluster Cluster

Name State Group ResourceType
---- ----- ----- ------------
Cluster IP Address Online Cluster Group IP Address
Cluster Name Online Cluster Group Network Name

 

image

 

At this point, you’re probably wondering why I am writing a blog post about shared storage and Exchange, since database availability groups (DAGs) don’t use shared storage.

Over the course of the last few weeks, I have reviewed some DAG configurations where physical disk resources exist within the cluster. This is not a desired configuration. When disks are added to the cluster, it is the responsibility of the cluster disk driver to manage access to these resources. In these cases, checking Disk Management shows that the disks have a status of reserved. This status indicates that the storage is no longer under the control of Windows, but is instead being managed by the cluster disk driver.

 

image

 

Overall this causes several issues. For example, if the Cluster service fails for any reason, this makes storage in accessible to Exchange. The drive letters and mount point mappings are the same across each node even though they do not match the same physical disk. This causes confusion within the cluster and it can lead to storage instability.

 

Correcting this condition is as simple as removing the physical disk resources from cluster. This can be done using either Failover Cluster Manager or PowerShell. I recommend performing this operation during a maintenance period as it can result in the storage being temporarily inaccessible while it transitions from cluster control to Windows partition manager control.

 

At this point, you’re probably wondering how a DAG’s cluster can end up with storage shared that is controlled by the cluster.

There are actually a couple of causes. In some cases, it happens because the Exchange cmdlets failed (for example, Add-DatabaseAvailabilityGroupServer fails to successfully add a DAG member). In other cases, it happens because the cluster is rebuilt as part of a site activation process. When using Failover Cluster Manager to perform this operation you must ensure that the “Add all eligible storage to the cluster” option is unchecked in Failover Cluster Manager or that you use the –NoStorage option in PowerShell.

 

In the cases I have been involved with, it was determined that cluster membership was adjusted using Failover Cluster Manager without unchecking the add storage option. It is important for administrators to be aware of this new default option and ensure that if this condition is encountered, it is corrected as soon as possible.