Storage Spaces 2019 – Slow with parity

*** See the new updated posted here ***

I’ve written a lot about Storage Spaces and slow performance. You can find some of my articles here:

We’ve done a lot of work on Storage Spaces recently to try and find out why our new parity array on server 2019 was slow.

The hardware is the following:

  • Lenovo SR650
  • 32GB Memory
  • Xeon CPU
  • 12x 8TB 7200RPM 512e drives

When creating the Storage Space, the logical sector size is set from the disk. These disks are 512e drives with a 512 sector size. The default sector size created is 4k.

You can either buy native 4k drives at the outset, or set your Storage Space to 4k.

Here is our storage spaces before the change:

From my techs

By default when creating a storage pool, the logical sector size should match the highest physical sector in the disk pool, in this case it should be 4K, but maybe due to this drive is 512e drive, so the logical sector stays in 512. This will cause 8 times delay and performance delay due to the OS and disk controller is doing so called “RMW” operation. The picture below described how the performance get affected by this way.

Once we change our Storage Space to 4k, we started to get 120-160mb/s across the array, all the time. Before this, we were getting 30-60mb/s with many stutters.

I hope this helps.

8 thoughts on “Storage Spaces 2019 – Slow with parity”

  1. Link to the whitepaper is broken. Here’s the original:

    Besides that, I wasn’t able to improve my write performance with this trick. Using 3x 4TB WD Red drives in parity mode, sustained write speeds stay at around 30MB/s, sometimes peaking up to 65MB/s. Tried disabling cache, physical and logical sector sizes were already set to 4k by default (WD Red drives have 512e, so support 4k).

    Any suggestions?

  2. Good advice regarding sector size. I also discovered the “interleave” size has a huge affect on performance, especially write performance. It defaults to 256kb which gives good read performance but terrible write performance. Changing to 16kb (16384) which is the minimum allowed value increase write performance drastically (e.g. 45MB/s to 270MB/s with a 4 disk parity array).

  3. How did you manage to change the logical sector size? I’ve tried to implement this fix on my end, but even when i choose 4096 unit size, it still shows up as 512 afterwards 🙁 I’ve tried formating using the gui and diskpart. I’ve also tried to destroy the whole storagepool and building it back up again. Any tips?


  4. First i created the pool with virtual disk defaults
    $PhysicalDisks = (Get-PhysicalDisk -CanPool $True)
    New-StoragePool -FriendlyName Pool01 -StorageSubsystemFriendlyName “Windows Storage*” -PhysicalDisks $PhysicalDisks -ResiliencySettingNameDefault Parity -ProvisioningTypeDefault Fixed -Verbose -LogicalSectorSizeDefault 4KB

    After that i created the new disk
    New-VirtualDisk -FriendlyName “VD1” -StoragePoolFriendlyName “Pool01” -ProvisioningType Fixed -ResiliencySettingName Parity -UseMaximumSize
    Get-VirtualDisk|select friendlyname,physicalsectorsize,logicalsectorsize

    Maybe this will help you 🙂


  5. Wow Mister. Thanks for pointing this out.
    I was wondering why my pool was so terribly slow.
    After setting it up with 4K, speeds are much better.

Leave a Reply