Skip to main content
Pure Technical Services

Windows Server File Systems FAQ for FlashArray

Currently viewing public documentation. Please login to access the full scope of documentation.

KP_Ext_Announcement.png

This article is intended for Windows Server versions 2008 R2, 2012, 2012 R2, 2016, 2019, and 2022.

Overview

There are two different file systems that can be used when formatting disks in Windows Server: New Technology File System (NTFS) and Resilient File System (ReFS). ReFS is an option in Windows Server 2012 and later. This document will cover common aspects when dealing with NTFS and ReFS.

Running SQL Server on Linux is out of scope for this Windows Server-based article as it has specific disk recommendations and considerations that have nothing to do with NTFS and ReFS.

Supportability

For supportability of NTFS and ReFS file systems, refer to the Microsoft Support Matrix.

 

NTFS is recommended. As noted in the Microsoft Support Matrix, ReFS is supported but has caveats such as not supporting aspects such as TRIM, UNMAP, and Offloaded Data Transfer (ODX) all of which currently require NTFS. 

Allocation Unit

Both NTFS and ReFS support multiple allocation unit sizes. Allocation unit size is sometimes known as either cluster size or block size. In Windows Server 2022, NTFS supports up to a 2M allocation unit size. ReFS only supports two sizes: 4k and 64k.    

Pure Storage does not require a specific allocation unit size when formatting disks.Follow application-specific best practices to determine the proper allocation unit for each volume presented from FlashArray. For example, the best practice for Microsoft SQL Server workloads is a 64k allocation unit size which is not only Microsoft's documented best practice but also documented in the Pure article Best Practices: Microsoft SQL Server.

Partition Style

Windows Server has two partition styles when initializing disks: GUID Partition Table (GPT) and Master Boot Record (MBR). For a comparison of the two, see the section "Compare partition styles - GPT and MBR" in the Microsoft Learn article Initialize New Disks. Both are fully supported with FlashArray, but most modern disks should consider the use of GPT since it is enhanced and supports features such as disks larger than 2TB.

FlashArray Block Alignment

All of the Windows Server versions noted for this article do, by default, utilize a 1024 MB starting offset. 

Pure Storage uses a 512-byte geometry on the FlashArray and, as such, there should never be a block alignment issue. To determine block alignment, use the StartingOffset from Win32_DiskPartition and divide by the Blocksize from Win32_Volume. The resulting value should be an integer value.

StartingOffset / Blocksize = Integer Value

Example using the below values from three FlashArray volumes:

Disk #0     --  1048576 / 4096 = 256
Disk #1, #2 -- 34603008 / 4096 = 8448 

To check the StartingOffset of a Windows Server host, you could use the following Windows PowerShell.

Get-WmiObject -Class Win32_DiskPartition -ComputerName $env:COMPUTERNAME | select Name, NumberOfBlocks, Size, StartingOffset, Blocksize | Format-Table -AutoSize

Name                  NumberOfBlocks          Size StartingOffset Blocksize
----                  --------------          ---- -------------- ---------
Disk #0, Partition #0        1024000     524288000        1048576       512
Disk #0, Partition #1      313544704  160534888448      525336576       512
Disk #1, Partition #0     2147414016 1099475976192       34603008       512
Disk #2, Partition #0     2147414016 1099475976192       34603008       512

The Blocksize output above represents the physical block size at which the Pure Storage FlashArray is writing data. Disk #0 is a SAN boot volume for C:\ and Disk #1 and #2 are the ReFS and NTFS volumes respectively.

Get-WmiObject -Class Win32_Volume -ComputerName $env:COMPUTERNAME | Select BlockSize, Name, FileSystem | Format-Table -AutoSize

BlockSize Name                                              FileSystem
--------- ----                                              ----------
     4096 \\?\Volume{715e64e7-0000-0000-0000-100000000000}\ NTFS      
     4096 D:\                                               ReFS      
     4096 E:\                                               NTFS      
     4096 C:\                                               NTFS

The BlockSize output above represents the logical block size that is used for the formatting of the file system, ReFS or NTFS.