Windows Server File Systems FAQ for FlashArray
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.
Everpure 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 for SQL Server on FlashArray.
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.
Everpure 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 Everpure 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.