I've recently changed from a SATA SSD to NVMe SSD for my Windows PC and there's a format option for the NVMe SSD to use 4096 byte sectors for better performance.
The NTFS boot sector (at the start of the partition) contains references to the sector size of the disk. This is unnecessary information on more modern filesystems but NTFS is 28 years old. Changing the following little-endian values allows Windows to use the filesystem without needing to recreate it (instructions assume a 4K cluster size):
Offset | Size | Name | Modification |
---|---|---|---|
0x0B | 2 bytes | Bytes per sector | 0x0200 (512) → 0x1000 (4096) |
0x0D | 1 byte | Sectors per cluster | 0x08 (8 * 512 = 4096) → 0x01 (1 * 4096 = 4096) |
0x1C | 4 bytes | Hidden sectors | The number of sectors preceding the partition |
0x28 | 4 bytes | Total sectors | The partition size in sectors |