SQL Server 2017 – Support for 8k Disk Sector Sizes

hardwaresql server

Disk (loosely worded to include not only rotational media but non-rotational media [SSD, NVMe, etc.]) drives are continuing to evolve in their underlying formats and hardware. Part of this was an "enhancement" from 512 byte physical sector sizes to 4k physical sector sizes, which changes the on disk layout (512n, 512e, 4kn).

This next evolution is in using 8k physical sector sizes, which some manufacturers are starting to produce and setup in production. Given this next step, is the 8k sector size disk supported in Windows? Does SQL Server care about sector sizes?

Best Answer

Is the 8k sector size disk supported in Windows?

Currently, no, it is not supported by Windows and has been documented.

Does SQL Server care about sector sizes?

Yes, SQL Server does care about sector sizes. In fact, SQL Server checks the underlying physical disk information as it has data structures and algorithms that work with current disk sector sizes for various reasons (data integrity, optimizations, etc.).

If you attempt to use a physical sector size above 4k (4096) you'll receive an error:

Msg 5179, Level 16, State 1, Line 1
Cannot use file 'S:\Folder\TestDB.mdf ', because it is on a volume with sector size 8192.
SQL Server supports a maximum sector size of 4096 bytes.
Move the file to a volume with a compatible sector size.

In this case, you can see that the error message is specifically telling you that the maximum sector size is 4096 (4k). This means that volume can't be used for SQL Server, and as noted above it wouldn't be supported in Windows either.

Solution

If you're receiving this error/issue, unfortunately you'll need to use a supported disk sector size such as 512 bytes or 4k. Other formats are unsupported and can't be used. You'll need to contact your hardware vendor for the Disk subsystem used and ask if there are any other options.

As eckes mentioned in a comment, on Linux you can emulate a 8k drive with the new logical blocksize option of losetup -b with 4.14 kernels.