How to set up Windows Server Failover Clustering for shared storage
Configure two Windows Server nodes to share storage using SMB 3.0 or iSCSI multipathing for high availability.
This tutorial explains how to configure two Windows Server nodes to share storage for high availability. The steps target Windows Server 2022 and 2025 with Hyper-V or physical hardware. You will create a cluster, add a shared volume, and ensure the quorum remains stable.
Prerequisites
- Two Windows Server 2022 or 2025 nodes (Standard or Datacenter edition).
- At least 16 GB RAM per node and 2 CPU cores per node.
- A shared storage device connected to both nodes (SMB 3.0, iSCSI, or Fibre Channel).
- Static IP addresses configured on all network interfaces.
- Administrative privileges on both servers.
- Windows Server Failover Clustering feature installed on both nodes.
Step 1: Install the Failover Clustering Feature
Open an elevated PowerShell window on both nodes. Run the following command to install the Failover Clustering feature if it is missing.
Install-WindowsFeature Failover-Clustering -IncludeManagementTools
Restart the server after the installation completes to ensure all services start correctly.
Restart-Computer
Step 2: Prepare Shared Storage
Connect the shared storage device to both nodes using iSCSI or SMB 3.0. For iSCSI, open the iSCSI Initiator on each node and add the target portal. Format the LUN as NTFS or ReFS on the storage controller before mounting. Ensure the storage is presented as a single LUN to both nodes.
On each node, open Server Manager and navigate to File and Storage Services > iSCSI. Add the target IP address and initiate the connection. Verify that the LUN appears in Disk Management as an online, healthy disk.
Step 3: Create the Cluster
Open Failover Clustering Manager on one of the nodes by running the command below. Select the "Create a cluster" option and follow the wizard.
FailoverClusterNew -Name "Cluster01" -Node "Node1", "Node2"
Enter a cluster name that is unique within your environment. Provide a cluster network name that resolves to an IP address. The wizard will validate that the nodes can communicate and that the storage is accessible from both nodes.
Step 4: Configure the Cluster Network
Open Failover Clustering Manager and navigate to Cluster > Configure Cluster Network. Add a new network interface for cluster communication. Assign a static IP address from a dedicated subnet. This interface is used for heartbeats and cluster traffic.
Ensure that the cluster network is set to use the "Private" network type for security. Disable the "Allow inbound connections" option for this interface unless required for management.
Step 5: Add the Shared Storage to the Cluster
In Failover Clustering Manager, navigate to Cluster > Configure Cluster Shared Volumes. Click "Add" and select the shared LUN from the list of available disks. Assign a friendly name to the volume for easier identification.
Verify that the volume is online on both nodes. If the volume is offline, run the "Bring Online" command in PowerShell. Ensure that the storage is not in a "Failed" state.
Get-ClusterResource | Where-Object { $_.Name -like "*Storage*" } | Bring-ClusterResourceOnline
Step 6: Configure Quorum Settings
Open Failover Clustering Manager and navigate to Cluster > Configure Quorum. Select "Node and Disk Majority" or "File Share Witness" depending on your storage setup. For SMB 3.0 shared storage, choose "File Share Witness" to avoid split-brain scenarios.
If using a file share witness, create a dedicated folder on a separate shared drive. Point the witness to this folder. Ensure that the witness folder is accessible from both nodes.
Step 7: Create a Cluster Role
Navigate to Cluster > Roles in Failover Clustering Manager. Click "Add Role" and select the shared storage volume. Assign a role name and configure the resource dependencies. Set the priority to ensure the role starts on the preferred node.
Configure the resource to start automatically on boot. Set the startup delay to 30 seconds to allow the network to stabilize. Ensure that the role is set to failover automatically if the primary node goes down.
Verify the installation
Run the following command to confirm that the cluster is active and all resources are online. Check that the shared storage resource is in a "Running" state.
Get-ClusterResource | Format-Table Name, State, Type
Verify that the cluster network is active and that the quorum settings are correct. Ensure that the cluster can failover resources between nodes without manual intervention.
Troubleshooting
If the cluster fails to start, check the event logs on both nodes for errors related to the cluster service. Use the "Get-ClusterLog" command to analyze cluster logs for specific issues. Review the storage controller logs to ensure that the shared LUN is not failing.
If the shared storage is not visible on both nodes, verify that the iSCSI initiator is correctly configured. Ensure that the storage controller is not in a "Failed" state. Check the network connectivity between the nodes and the storage device.
If the quorum is lost, check that the file share witness is accessible. Ensure that the witness folder is not full or corrupted. Restart the cluster service if necessary to recover from a quorum issue.
If a role fails to failover, check the resource dependencies and priorities. Ensure that the preferred node is running and that the shared storage is accessible. Review the cluster resource settings to confirm that automatic failover is enabled.