How to Set Up a Scale-Out File Server (SoFS) on Windows Server 2016

A Scale-Out File Server (SoFS) is a clustered file server role in Windows Server 2016 that provides continuously available file shares for application data. Unlike a traditional failover cluster file server which fails over from one node to another, a Scale-Out File Server provides active-active access from all cluster nodes simultaneously. This means all nodes in the cluster can concurrently serve read and write requests to the same SMB file shares, providing both high availability and increased aggregate throughput. SoFS is designed specifically for application storage such as Hyper-V virtual machine files and SQL Server databases accessed over SMB 3.0.

Scale-Out File Server requires a Failover Cluster with shared storage, which can be provided by a Storage Area Network (SAN), Storage Spaces with shared SAS enclosures, or Storage Spaces Direct (S2D). All cluster nodes must be running Windows Server 2016 and must have access to the same shared storage volumes (Cluster Shared Volumes). The file shares created on a SoFS use SMB 3.0 features including SMB Multichannel for performance and SMB Transparent Failover for continuous availability.

Prerequisites

Install the Failover Clustering feature on all nodes that will participate in the Scale-Out File Server cluster:

Install-WindowsFeature Failover-Clustering -IncludeManagementTools

Run the cluster validation wizard to verify all nodes meet requirements. This is mandatory before creating a supported cluster:

Test-Cluster -Node "FileNode1","FileNode2","FileNode3" -Include "Storage","Network","System Configuration"

Creating the Failover Cluster

Create the failover cluster with a cluster name and IP address. All nodes must be pre-joined to the same Active Directory domain:

New-Cluster -Name "SoFSCluster" -Node "FileNode1","FileNode2","FileNode3" -StaticAddress 192.168.1.50 -NoStorage

The -NoStorage flag is used when you will configure storage separately. Verify the cluster was created:

Get-Cluster -Name "SoFSCluster"

Add cluster disks or Storage Spaces to the cluster. If using shared SAS or SAN, the disks will be detected automatically once added to Available Storage:

Get-ClusterAvailableDisk | Add-ClusterDisk

Converting Cluster Disks to Cluster Shared Volumes

Scale-Out File Server requires Cluster Shared Volumes (CSV). Convert available cluster disks to CSV so all nodes can access them simultaneously:

Add-ClusterSharedVolume -Name "Cluster Disk 1"
Add-ClusterSharedVolume -Name "Cluster Disk 2"

Verify CSV volumes are available and healthy:

Get-ClusterSharedVolume

CSV volumes are accessible on all nodes at the path C:ClusterStorageVolume1, C:ClusterStorageVolume2, and so on.

Adding the Scale-Out File Server Role

Add the Scale-Out File Server role to the cluster. Unlike a traditional file server cluster role, SoFS does not require a specific IP address because it is accessed through all cluster node addresses simultaneously:

Add-ClusterScaleOutFileServerRole -Name "SoFSFileServer"

Verify the Scale-Out File Server role is online:

Get-ClusterResource | Where-Object {$_.ResourceType -eq "Scale-Out File Server"}

Creating SMB File Shares on SoFS

Create a new SMB share on a CSV volume. The path must be under ClusterStorage:

New-Item -Path "C:ClusterStorageVolume1VMShares" -ItemType Directory
New-SmbShare -Name "VMShares" -Path "C:ClusterStorageVolume1VMShares" -FullAccess "corpHyper-V-Admins" -ContinuouslyAvailable $true -CachingMode None -FolderEnumerationMode AccessBased

The -ContinuouslyAvailable flag is critical for SoFS shares — it enables SMB Transparent Failover so client connections survive node failures. The -CachingMode None setting disables client-side caching which is appropriate for server application storage.

Verify the share was created with continuous availability:

Get-SmbShare -Name "VMShares" | Select-Object Name,Path,ContinuouslyAvailable

Connecting Hyper-V to SoFS Storage

Point a Hyper-V virtual machine’s storage to the SoFS share. The UNC path uses the SoFS cluster role name:

\SoFSFileServerVMShares

In Hyper-V Manager or via PowerShell, create a new VM with its VHD stored on the SoFS share:

New-VM -Name "TestVM" -MemoryStartupBytes 2GB -NewVHDPath "\SoFSFileServerVMSharesTestVMTestVM.vhdx" -NewVHDSizeBytes 60GB -SwitchName "Production"

Monitoring SoFS Health

Check the health of all cluster resources including SoFS:

Get-ClusterSharedVolumeState
Get-ClusterGroup -Name "SoFSFileServer" | Get-ClusterResource

SoFS provides a compelling storage solution for Hyper-V environments because it eliminates the storage bottleneck of traditional active-passive file server clusters. With all nodes actively serving data, you gain both redundancy and the combined network bandwidth of all cluster node adapters, particularly when combined with SMB Multichannel.