Accelerate Storage Spaces with SSDs in Windows 10 Storage Pool tiers

Create Storage Spaces in Windows 10

Windows Server O/S contains Storage Spaces support for Server Spaces tiered storage. You can front slower spinning disks with smaller faster SSDs. Windows 10 has a Storage Spaces GUI Control Panel that does not include the tiered storage GUI. This means Powershell must be used for all configuration.
Physical Disks
https://github.com/freemansoft/win10-storage-spaces contains scripts that create tiered storage pools that integrate SSDs as caching drives and HDDs as storage drives. They assume you have at least one SSD and one HDD.
  • The scripts automatically find all raw drives and add them to the pool.
  • Some HDDs have their types incorrectly identified. The script can coerce them to be MediaType:HDD
  • The entire virtual drive is added to the system as a single large volume
  • You need at least
    • 1 SSD and 1 HDD to run cached storage / Simple resiliency
    • 2 SSD and 2 HDD to run cached storage / Mirror resiliency /
    • 1 SSD and 2 HDD to run cached storage / Simple resiliency / striped storage (sum of HDD space)
Simple Mirrored Mirrored and Striped

Simple vs Mirror

The "Mirror" resiliency level attempts to mirror both SSD and HDD tiers so you would need 4 drives run mirror, to mirror both tiers

Scripts

new-storage-space.ps1

Creates a tiered storage pool and allocates all the disk space to a single drive
  • You can change the drive letter and label by editing the variables at the top.
  • the script can auto size the drive and cache. That didn't work for me so the script supports manual sizing.

remove-storage-space

Removes the virtual drive, the storage tiers and then the storage pool.
  • All drives are returned the Primordial pool

Sample configuration

new-storage-space.ps created a Virtual drive from 3 physical drives
Physical DrivesStorage Space Virtual Drive
two 2TB HDDsingle 3.6TB data volume striped across my two HDD
one 200GB SSD.with a 200GB read/write cache
Simple resiliency with striped drives

Win 10 Pro Storage Spaces Control Panel

The control panel does not display or manipulate tiers

Video


Meaningless Benchmark

All Storage Pool drives connected to 3Gb/s SATA. The write-back cache is not used with sequential writes over 256KB
[Read]                           *Single 2TB no cache*           *Two 2TB mirrored with 200GB cache*
Sequential 1MiB (Q=  8, T= 1):   160.497 MB/s [    153.1 IOPS]   282.983 MB/s [    269.9 IOPS]
Sequential 1MiB (Q=  1, T= 1):   156.766 MB/s [    149.5 IOPS]   254.605 MB/s [    242.8 IOPS]
    Random 4KiB (Q= 32, T=16):     1.748 MB/s [    426.8 IOPS]   175.272 MB/s [  42791.0 IOPS]
    Random 4KiB (Q=  1, T= 1):     0.527 MB/s [    128.7 IOPS]    21.189 MB/s [   5173.1 IOPS]

[Write]                          *Single 2TB no cache*           *Two 2TB mirrored with 200GB cache*
Sequential 1MiB (Q=  8, T= 1):   153.896 MB/s [    146.8 IOPS]   226.825 MB/s [    216.3 IOPS]
Sequential 1MiB (Q=  1, T= 1):   154.147 MB/s [    147.0 IOPS]   230.149 MB/s [    219.5 IOPS]
    Random 4KiB (Q= 32, T=16):     2.033 MB/s [    496.3 IOPS]   149.000 MB/s [  36377.0 IOPS]
    Random 4KiB (Q=  1, T= 1):     1.706 MB/s [    416.5 IOPS]    38.790 MB/s [   9470.2 IOPS]

Credits


Created 4/2020

Comments

  1. The script is great - I'm having problems with it, however.

    If I change the $DriveTierResiliency = "Simple" to $DriveTierResiliency = "Parity", the script fails at line 83 and won't initialize the disk. What am I doing wrong?

    I have a large drive set-up - 4 SSDs, 12 HDDs. Please help!

    ReplyDelete
  2. I've been planning on using this script to replace my NAS drive - I have 4 SSDs and 12 HDDs.

    When I change the script line 15 of the script from:

    $DriveTierResiliency = "Simple"

    to

    $DriveTierResiliency = "Parity"

    The script fails at line 83, saying Initilaize-Disk : Failed.

    The details below it say:
    + CategoryInfo : NotSpecified: (StorageWMI:Root/Microsoft/Windows/Storage/MSFT_Disk) [Initalize-Disk], CimException
    + FullyQualifiedErrorID:StorageWMI 4,Initialize-Disk

    Any thoughts?

    ReplyDelete
  3. Your https://github.com/freemansoft/win10-storage-spaces link goes to blogger.com

    ReplyDelete
  4. Trying this later this week. Do you know if you can Stripe 2 HDD (simple) and use 2 SSD for the cache. I want the larger size, have 2 SSDs and a good backup strategy to NAS+cloud+external drive.

    ReplyDelete
  5. With all respect the tiering is not the same with the caching.
    Clinet Win10 has no caching in storage spaces, only tiering is available.

    ReplyDelete

Post a Comment

Popular posts from this blog

Understanding your WSL2 RAM and swap - Changing the default 50%-25%

Installing the RNDIS driver on Windows 11 to use USB Raspberry Pi as network attached

DNS for Azure Point to Site (P2S) VPN - getting the internal IPs