Server 2016-Storage Spaces: Setup Different Number of Columns per Tier?

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

DieHarke

New Member
Mar 16, 2017
19
0
1
32
Hello guys I have the following problem:

I have setup a storage pool with 6x8TB HDDs and 3x256GB SSDs. I managed to create a tiered parity space with the following commands:

Code:
# paramter section
$spName = "StoragePool0"
$vdName = "VirtualDisk0"
$cols_ssdTier = 3    # how to incorporate those value?
$cols_hddTier = 6    # how to incorporate those value?
$s_ssdTier = 350GB   # maximum possible size
$s_hddTier = 29700GB # maximum possible size
$s_WBC = 50GB        # maximum possible size accorsinf to above sizes

# create storage tiers
$ssdTier = New-StorageTier -StoragePoolFriendlyName $spName -FriendlyName "SSD_Tier" -MediaType SSD
$hddTier = New-StorageTier -StoragePoolFriendlyName $spName -FriendlyName "HDD_Tier" -MediaType HDD

# create and initialize the virtual disk
Get-StoragePool $spName | New-VirtualDisk -FriendlyName $vdName -StorageTiers $ssdTier, $hddTier -StorageTierSizes $s_ssdTier, $s_hddTier -ResiliencySettingName "Parity" -WriteCacheSize $s_WBC
Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName $vdName)
The problem is that the maximum available is only around 30TB. I think storage spaces is setting up both tiers with a column size of three, so that I loose the capacity for two HDDs.
The real capacity for the six 8TB HDDs is around 7.28 for each, wich will give us the following numbers:
  • 6 columns (loose one disk): 5 * 7.28TB = 36.4TB
  • 3 columns (loose two disks): 4 * 7.28TB = 29.12TB -> exactly what storage spaces is showing
My question is now how to setup the correct number of columns?
@cesmith9999: I have read on your posts that different column sizes are possible in Server 2016 now and that you are using such kind of configuration already. So could you maybe help me please?

Best regards
DieHarke
 
Last edited:

Jetlag

New Member
Jun 7, 2016
17
4
3
43
Move the resiliency settings to the New-StorageTier lines. You can even mirror the SSDs if you want.

Code:
# paramter section
$spName = "StoragePool0"
$vdName = "VirtualDisk0"
$cols_ssdTier = 3    # how to incorporate those value?
$cols_hddTier = 6    # how to incorporate those value?
$s_ssdTier = 350GB   # maximum possible size
$s_hddTier = 29700GB # maximum possible size
$s_WBC = 50GB        # maximum possible size accorsinf to above sizes

# create storage tiers
$ssdTier = New-StorageTier -StoragePoolFriendlyName $spName -FriendlyName "SSD_Tier" -MediaType SSD -ResiliencySettingName "Parity" -NumberofColumns $cols_ssdTier
$hddTier = New-StorageTier -StoragePoolFriendlyName $spName -FriendlyName "HDD_Tier" -MediaType HDD -ResiliencySettingName "Parity" -NumberofColumns $cols_hddTier

# create and initialize the virtual disk
Get-StoragePool $spName | New-VirtualDisk -FriendlyName $vdName -StorageTiers $ssdTier, $hddTier -StorageTierSizes $s_ssdTier, $s_hddTier -WriteCacheSize $s_WBC
Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName $vdName)
 
Last edited:

DieHarke

New Member
Mar 16, 2017
19
0
1
32
Thanks for your fast answer. The commands for creating the storage tiers seems to work. When I look into their parameters I can see the correct column sizes. But sadly the command New-VirtualDisk is returning the error, which give not really meaningful information. Surprisingly the error is not thrown immediately. The cmdlet is running a short time.

Code:
New-VirtualDisk : Invalid Parameter
Activity ID: {3a0b5e53-856f-498b-9225-f6e55491d27f}
In C:\Users\Administrator\Desktop\ccreateStorageSpace.ps1:17 Zeichen:27
+ ... l $spName | New-VirtualDisk -FriendlyName $vdName -StorageTiers $ssdT ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (StorageWMI:ROOT/Microsoft/...SFT_StoragePool) [New-VirtualDisk], CimEx
   ception
    + FullyQualifiedErrorId : StorageWMI 5,New-VirtualDisk
I also tested your commands you have posted in the other thread about how to configure a parity and mirror tier, which gave me a similar error.
 
Last edited:

Jetlag

New Member
Jun 7, 2016
17
4
3
43
I guess the fast tier has to be a mirror?

Code:
# paramter section
$spName = "StoragePool0"
$vdName = "VirtualDisk0"
$cols_hddTier = 6    # how to incorporate those value?
$s_ssdTier = 350GB   # maximum possible size
$s_hddTier = 29700GB # maximum possible size
$s_WBC = 50GB        # maximum possible size accorsinf to above sizes

# create storage tiers
$ssdTier = New-StorageTier -StoragePoolFriendlyName $spName -FriendlyName "SSD_Tier" -MediaType SSD -ResiliencySettingName "Mirror"
$hddTier = New-StorageTier -StoragePoolFriendlyName $spName -FriendlyName "HDD_Tier" -MediaType HDD -ResiliencySettingName "Parity" -NumberofColumns $cols_hddTier

# create and initialize the virtual disk
Get-StoragePool $spName | New-VirtualDisk -FriendlyName $vdName -StorageTiers $ssdTier, $hddTier -StorageTierSizes $s_ssdTier, $s_hddTier -WriteCacheSize $s_WBC
Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName $vdName)
 
  • Like
Reactions: Bill Leuze

DieHarke

New Member
Mar 16, 2017
19
0
1
32
Okay I have tested to setup a SSD mirror tier and a HDD parity tier. And what should I say it's actually working ;)! I tested it with 2 SSDs (kind of raid 1) and 4 SSDs (kind of raid 10) and in both cases it is setting up the tiers correctly. Now I'm struggling to use either 2 SSDs or 4 SSDs ...

But thank you very much!
 

Connorise

Member
Mar 2, 2017
75
17
8
33
US. Cambridge
Okay I have tested to setup a SSD mirror tier and a HDD parity tier. And what should I say it's actually working ;)! I tested it with 2 SSDs (kind of raid 1) and 4 SSDs (kind of raid 10) and in both cases it is setting up the tiers correctly.
Thanks for sharing this one.
 

Bill Leuze

New Member
Mar 8, 2018
3
0
1
64
Thanks for this thread. I struggled for quite a while and was finally able to get my New-VirtualDisk to run by following your and JetLag's examples.

The biggest difference between your setup and mine is that I have just 3 SSDs which means one is wasted in the required mirror setup - so I will likely be buying a 4rth SSD. I am curious about your "4 SSDs (kind of raid 10) " comment. So how do I use -NumberOfColumns to get the (kind of raid 10) performance with 4 SSDs? I basically have 2 choices, use 1 column or 2, and I am guessing one option will give me a plain mirror, and the other will give me a sort of striped mirror (kind of raid 10), but I am not clear which option makes which. Can anyone help with this?
 
Last edited:

Bill Leuze

New Member
Mar 8, 2018
3
0
1
64
how do I use -NumberOfColumns to get the (kind of raid 10) performance with 4 SSDs? I basically have 2 choices, use 1 column or 2, and I am guessing one option will give me a plain mirror, and the other will give me a sort of striped mirror (kind of raid 10), but I am not clear which option makes which. Can anyone help with this?
I found the answer here: https://social.technet.microsoft.co...ow_does_Storage_Spaces_decide_how_many_to_use.

4 disk mirrir with 1 column is mirror only (like RAID 1)
4 disk mirror with 2 columns is stripe of mirrors (like RAID 10)

From above linked wiki article:
Example 3: A Two-Column Two-Way Mirror Space
Another example is a two-column two-way mirror space. Mirror spaces add a layer of data copies below the stripe, which means that a two-way mirror space duplicates each individual column's data onto two disks.

For the first stripe of data in this example, Storage Spaces writes 256 KB of data to the first column, which is written in duplicate to the first two disks. For the second column of data, Storage Spaces writes 256 KB of data to the second column, which is written in duplicate to the next two disks.
 

Bill Leuze

New Member
Mar 8, 2018
3
0
1
64
The biggest difference between your setup and mine is that I have just 3 SSDs which means one is wasted in the required mirror setup - so I will likely be buying a 4rth SSD.
I also learned this is not true, one SSD is not wasted. I guess this mirror is not like a true RAID 1 because, with the 3 disks of 447 GB each, in a 1 column mirror storage tier, I get 670 GB of storage space. A true RAID 1 would use just 2 disks and I would only have 447 GB useable space. But storage spaces rotates the stripes amongst all three disks giving me 1.5 times the size I would with straight RAID 1
 

Jahan

New Member
Mar 18, 2018
1
0
1
44
As far as I understand, both SSD and HDD tier should have same number of columns, but can be of different resiliency.

Create Tiers

$PerformanceMirrorTier = New-StorageTier -FriendlyName PerformanceMirror -MediaType SSD -StoragePoolFriendlyName $StoragePoolName -ResiliencySettingName Mirror -PhysicalDiskRedundancy 1 -NumberOfDataCopies 2 -NumberOfColumns 3

$CapacityMirrorTier = New-StorageTier -FriendlyName CapacityMirror -MediaType HDD -StoragePoolFriendlyName $StoragePoolName -ResiliencySettingName Mirror -PhysicalDiskRedundancy 1 -NumberOfDataCopies 2 -NumberOfColumns 3

$CapacityParityTier = New-StorageTier -FriendlyName CapacityParity -MediaType HDD -StoragePoolFriendlyName $StoragePoolName -ResiliencySettingName Parity -PhysicalDiskRedundancy 1 -NumberOfDataCopies 1 -NumberOfColumns 3

$PerformanceParityTier = New-StorageTier -FriendlyName PerformanceParity -MediaType SSD -StoragePoolFriendlyName $StoragePoolName -ResiliencySettingName Parity -PhysicalDiskRedundancy 1 -NumberOfDataCopies 1

Create Volume

$VolumeName = 'Master'

New-VirtualDisk -StoragePoolFriendlyName $StoragePoolName -FriendlyName $VolumeName -StorageTiers @($PerformanceParityTier,$CapacityParityTier) -StorageTierSizes 440GB, 9600GB -WriteCacheSize 4GB
 

Connorise

Member
Mar 2, 2017
75
17
8
33
US. Cambridge
>4 disk mirrir with 1 column is mirror only (like RAID 1)
4 disk mirror with 2 columns is stripe of mirrors (like RAID 10)

This is true, the thing is that S2D basically stripes the data across the disks thus provides the 1.5 usable rather than 1x.