How to Configure High Availability for File Services on Windows Server 2012 R2
High Availability (HA) for File Services on Windows Server 2012 R2 uses the Failover Clustering feature to ensure file shares remain accessible even when individual servers fail. Unlike a Scale-Out File Server — which provides active-active file serving across all nodes — a standard Clustered File Server operates in active-passive mode: one node owns the cluster role and actively serves file requests, while other nodes stand by ready to take over if the active node fails. Failover occurs automatically and typically completes within a few seconds, reconnecting clients with minimal disruption. This approach is simpler to deploy than Scale-Out File Server and works with standard (non-CSV) shared storage. This guide covers deploying a Clustered File Server role on an existing Failover Cluster, assigning storage, creating highly available shares, and integrating with DFS for further resilience.
Prerequisites
An existing Failover Cluster with at least two Windows Server 2012 R2 nodes. Shared storage accessible from all cluster nodes (iSCSI, Fibre Channel, or SAS). The File Server role must be available as a cluster-capable role — it is included in Failover Clustering without additional installation. For SMB shares that need Transparent Failover (SMB 3.0 CA), a Scale-Out File Server is required — see the SoFS guide. The standard Clustered File Server provides SMB availability but with a brief reconnection during failover. Active Directory domain membership is required. Reserve a static IP address and a cluster computer name (virtual network name) for the File Server role.
Step 1: Prepare the Failover Cluster
Verify the cluster is healthy before adding the File Server role:
Get-Cluster | Select-Object Name, Domain
Get-ClusterNode | Select-Object Name, State
Get-ClusterQuorum | Select-Object QuorumResource, QuorumType
Ensure cluster shared storage is available:
Get-ClusterAvailableDisk | Select-Object Name, Size, BusType
Step 2: Add the File Server Role to the Cluster
Add a Clustered File Server role. This creates a virtual computer name and IP address that clients use to access file shares — they never need to know which physical node is currently serving files:
Add-ClusterFileServerRole -Storage "Cluster Disk 2" `
-Name "FS-CLUSTER01" `
-StaticAddress "192.168.1.60"
# Verify the role was created
Get-ClusterGroup | Where-Object {$_.Name -eq "FS-CLUSTER01"} | Select-Object Name, State, OwnerNode
The -Storage parameter assigns a cluster disk to the file server role. The -Name becomes the virtual network name (VNN) clients use to access the file server. The -StaticAddress provides the IP address for the VNN.
Step 3: Add Additional Storage to the File Server Role
If additional disks are needed for the clustered file server, add them to the cluster role group:
# Add more cluster disks to the file server role
Add-ClusterSharedVolume -Name "Cluster Disk 3"
# Or add to the file server role directly
$disk = Get-ClusterAvailableDisk -Cluster (Get-Cluster) | Where-Object {$_.Name -eq "Cluster Disk 3"}
$disk | Add-ClusterDisk
Move-ClusterGroup -Name "Cluster Disk 3" -Node (Get-ClusterGroup "FS-CLUSTER01").OwnerNode
Format the disk if needed (do this while the resource is online on the active node):
Get-Disk | Where-Object {$_.OperationalStatus -eq "Online" -and $_.PartitionStyle -eq "RAW"} | ForEach-Object {
$_ | Initialize-Disk -PartitionStyle GPT
$_ | New-Partition -UseMaximumSize -AssignDriveLetter
Get-Volume -DriveLetter (($_ | Get-Partition | Select-Object -Last 1).DriveLetter) | Format-Volume -FileSystem NTFS -AllocationUnitSize 65536 -Confirm:$false
}
Step 4: Create Highly Available SMB Shares
Create the directory structure and SMB shares on the clustered disk. Shares must be created within the directory on the disk assigned to the cluster role:
# Create department share directories on clustered storage
$shareDisk = "E:" # The clustered disk drive letter
New-Item -Path "$shareDiskFinance" -ItemType Directory
New-Item -Path "$shareDiskHR" -ItemType Directory
New-Item -Path "$shareDiskIT" -ItemType Directory
# Create SMB shares using the cluster file server virtual name as scope
New-SmbShare -Name "Finance" `
-ScopeName "FS-CLUSTER01" `
-Path "$shareDiskFinance" `
-FullAccess "Domain Admins" `
-ChangeAccess "Finance-Group" `
-FolderEnumerationMode AccessBased
New-SmbShare -Name "HR" `
-ScopeName "FS-CLUSTER01" `
-Path "$shareDiskHR" `
-FullAccess "Domain Admins" `
-ChangeAccess "HR-Group" `
-FolderEnumerationMode AccessBased
New-SmbShare -Name "IT" `
-ScopeName "FS-CLUSTER01" `
-Path "$shareDiskIT" `
-FullAccess "Domain Admins","IT-Staff" `
-FolderEnumerationMode AccessBased
Step 5: Configure NTFS Permissions
Set restrictive NTFS permissions on the share directories:
$acl = Get-Acl "E:Finance"
$acl.SetAccessRuleProtection($true, $false) # Disable inheritance
# Add specific permissions
$financeRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"CONTOSOFinance-Group", "Modify", "ContainerInherit, ObjectInherit", "None", "Allow")
$adminRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"Domain Admins", "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$systemRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
"SYSTEM", "FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($financeRule)
$acl.AddAccessRule($adminRule)
$acl.AddAccessRule($systemRule)
Set-Acl -Path "E:Finance" -AclObject $acl
Step 6: Test Failover
Test failover to ensure the cluster file server role moves to another node without losing data or share configuration:
# Move the file server role to another node
Move-ClusterGroup -Name "FS-CLUSTER01" -Node "Node02"
# Verify the role is active on Node02
Get-ClusterGroup -Name "FS-CLUSTER01" | Select-Object Name, State, OwnerNode
# Test share accessibility after failover
Test-Path "\FS-CLUSTER01Finance"
Get-ChildItem "\FS-CLUSTER01Finance"
Step 7: Integrate with DFS for Additional Resilience
Add the clustered file server shares as DFS folder targets for an additional layer of availability. If your organization uses DFS Namespaces, adding the clustered shares as targets provides both clustering failover and DFS namespace access:
# Create a DFS folder target pointing to the clustered file server share
New-DfsnFolderTarget -Path "\contoso.comfilesFinance" `
-TargetPath "\FS-CLUSTER01Finance" `
-State Online
# Verify DFS targets
Get-DfsnFolderTarget -Path "\contoso.comfilesFinance" | Select-Object Path, TargetPath, State
Clients that access files through the DFS namespace path benefit from both DFS Namespace referrals and Failover Cluster storage protection.
Summary
Configuring High Availability for File Services on Windows Server 2012 R2 using Failover Clustering provides automatic recovery from server failures with minimal client disruption. The Clustered File Server role presents a virtual network name that is independent of individual cluster nodes — clients always connect to the same name, and the cluster automatically manages which physical server is serving requests at any given time. Combined with DFS Namespaces, organizations can build a multi-layered file service architecture that handles both single-server failures and site-level outages.