Microsoft Virtual Academy (MVA) – Storage Spaces Deep Dive

I have been working with Windows Server Storage Spaces since it was invented. It is great technology and I love it! Recently I was asked to be a part a MVA session on Storage Spaces and I just could not resist. My idea was to do something that is based on our real experience building storage spaces solutions.

So, together with Markus Lassfolk and Ola Skoog we did a Microsoft Virtual Academy class with four parts,

  • Storage Spaces: Architecture

  • Storage Spaces: Design

  • Storage Spaces: Performance

  • Storage Spaces: Lessons From The Field

If you are into Storage Spaces and you would like to know from experienced MVP’s building Storage Spaces, this is for you, Enjoy!


4 replies »

  1. Hi Mikael,
    I have to say I’m so thankful you did all those videos with your partners it was indeed of great help for me, I learned a lot.
    I have been following every best practice regarding MS Storage Spaces but I still don’t get decent performances…
    If you have the chance to give a quick look to this, that would be much appreciated, I am mainly looking for hints so that I can solve this.

    So, I bought a MD1200 from Dell.
    I have bought SAS Constellation E.3 4TB (sas)
    I have tested SATA SSDs Crucial M500 and Samsung PRO 850
    Crucial were buggy if I had to restart the MD or Server (strange behaviour in writing performances… like 100MB/s seq write and 2MB/s 4K random writes when it was more of 400/150 before restarting the MD/Server).

    Samsung worked well and I tested them many many times, I also tested the HDDs and they looked normal in terms of performances so I was confident and went for 6 x 256 GB SSD and 6 x 4 TB HDD
    Then I configured SS with a mirrored space with 3 columns, mainly using your scripts. See below for the VDs I created:

    # 2 Tier 2 Way Mirror with 3 columns
    $vDisk01Name = “vDisk-VMs”
    $vDisk01 = New-VirtualDisk `
    -FriendlyName $vDisk01Name `
    -ResiliencySettingName Mirror `
    -NumberOfDataCopies 2 `
    -NumberOfColumns 3 `
    -Interleave 65536 `
    -StoragePoolFriendlyName $PoolName `
    -StorageTiers $SSDTier,$HDDTier `
    -StorageTierSizes 541165879296, 8884139851776 `
    –WriteCacheSize 25GB

    $vDisk02Name = “vDisk-Files”
    $vDisk02 = New-VirtualDisk `
    -FriendlyName $vDisk02Name `
    -ResiliencySettingName Mirror `
    -NumberOfDataCopies 2 `
    -NumberOfColumns 3 `
    -Interleave 65536 `
    -StoragePoolFriendlyName $PoolName `
    -StorageTiers $SSDTier,$HDDTier `
    -StorageTierSizes 183609851904, 3114925031424 `
    –WriteCacheSize 10GB

    Here are some more information regarding the configuration:

    PS C:\Users\administrator\Desktop\StorageSpaces> Get-PhysicalDisk | sort-object SlotNumber | select SlotNumber, FriendlyName, Manufacturer, Model, PhysicalSectorSize, LogicalSectorSize | ft
    SlotNumber FriendlyName Manufacturer Model PhysicalSectorSize LogicalSectorSize
    ———- ———— ———— —– —————— —————–
    PhysicalDisk0 DELL PERC 5/i 512 512
    0 PhysicalDisk12 ATA Samsung SSD 850 512 512
    1 PhysicalDisk11 ATA Samsung SSD 850 512 512
    2 PhysicalDisk7 ATA Samsung SSD 850 512 512
    3 PhysicalDisk10 ATA Samsung SSD 850 512 512
    4 PhysicalDisk9 ATA Samsung SSD 850 512 512
    5 PhysicalDisk8 ATA Samsung SSD 850 512 512
    6 PhysicalDisk1 SEAGATE ST4000NM0023 512 512
    7 PhysicalDisk5 SEAGATE ST4000NM0023 512 512
    8 PhysicalDisk6 SEAGATE ST4000NM0023 512 512
    9 PhysicalDisk3 SEAGATE ST4000NM0023 512 512
    10 PhysicalDisk4 SEAGATE ST4000NM0023 512 512
    11 PhysicalDisk2 SEAGATE ST4000NM0023 512 512

    PS C:\Users\administrator\Desktop\StorageSpaces> Get-Disk | select FriendlyName, PhysicalSectorSize, LogicalSectorSize | FT -AutoSize
    FriendlyName PhysicalSectorSize LogicalSectorSize
    ———— —————— —————–
    Microsoft Storage Space Device 4096 512
    DELL PERC 5/i SCSI Disk Device 512 512
    Microsoft Storage Space Device 4096 512

    Then I did a couple of CrystalDiskMark (version 5.0.3, hardware cache activated, no queue) tests with this fresh configuration, and I got decent performances:
    SEQ READ: 1 100 MB/s
    SEQ WRITE: 500 MB/s
    4K READ: 40 MB/s
    4K WRITE: 40 MB/s

    These are not mind-blowing performances but decent for my needs so I didn’t go further and deployed my VMs on it.

    2 months later, everything is smooth and VMs are performing OK, but I did some other testing and performances are now disappointing.
    Please note that I did the testing with shares disabled so no activity on the volumes.
    SEQ READ: 300 MB/s
    SEQ WRITE: 70 MB/s
    4K READ: 10 MB/s
    4K WRITE: 10 MB/s

    The drop in perfs is quite impressive…

    I went to Performance Monitor with Avg. Disk Write Queue Length and here is what I observed when performing a SEQ WRITE:
    Disk 1 to 4 (SSDs):
    Avg.DWQL Average: 0,03
    Avg.DWQL Max: 0,7
    Disks 5 and 6 (SSDs):
    Avg.DWQL Average: 0,25
    Avg.DWQL Max: 3,9
    Disk 7 to 11 (HDDs)
    Avg.DWQL Average: 5,5
    Avg.DWQL Max: 50
    Disk S: (Tiered) (volume on which the test has been run)
    Avg.DWQL Average: 10,7
    Avg.DWQL Max: 174,5
    Disk V: (Tiered) (volume on same StoragePool)
    Avg.DWQL Average: 0,5
    Avg.DWQL Max: 4,5

    Those Queue Lenght are enormous, and I don’t understand why.

    I have MPIO activated and set to LB and I think I got covered every trick of Storage Spaces but still… isn’t it surprising for you aswell?
    Would love to have your feedback :)
    Just to be clear, overall I’m satisfied by the performances of my VMs since my environment is not heavily loaded but still…

    If you don’t have time to look at this, could you point me to some better place?

    Thank you for your time and keep posting great stuff!

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.