Jump to content

Tiered Storage Spaces Windows 10

I am attempting to create a tiered storage with Storage Spaces on Windows 10. I have a spare SSD 256GB and Spare 1TB HDD. I would like to create a tiered storage with those two drives so "hot" data gets stored on the SSD and "cold" data gets stored on the HDD.

I am using windows 10 so unfortunately I can't use the GUI to create this as it is unsupported. So to the powershell I go. I have never setup Storage Spaces before so hopefully it is just a dumb mistake I am making.

I have been following two instructions on how to do this and so far I have gotten stuck at the same spot

https://diywhitebox.com/how-to-configure-tiered-storage-spaces-on-windows-10/

 

https://forums.bit-tech.net/index.php?threads/howto-guide-storage-spaces-tiering-in-windows-10.336785/

 

 

I am getting stuck at the second to last step on the DiyWhiteBox.

 

Get-StoragePool Pool | New-VirtualDisk -FriendlyName Space -ResiliencySettingName Mirror –StorageTiers $SSD, $HDD -StorageTierSizes 400GB, 900GB -WriteCacheSize 10GB

 

Obviously my command is a little different as I am dealing with a smaller SSD looks like this

Get-StoragePool Pool | New-VirtualDisk -FriendlyName Space -ResiliencySettingName Mirror –StorageTiers $SSD, $HDD -StorageTierSizes 200GB, 900GB -WriteCacheSize 10GB

 

 

But I keep getting this error. :(

Quote

New-VirtualDisk : Not Supported

Extended information:
The storage pool does not have sufficient eligible resources for the creation of the specified virtual disk.

Recommended Actions:
- Choose a combination of FaultDomainAwareness and NumberOfDataCopies (or PhysicalDiskRedundancy) supported by the storage pool.
- Choose a value for NumberOfColumns that is less than or equal to the number of physical disks in the storage fault domain selected for
the virtual disk.

Activity ID: {649e43ef-aa02-4fa9-89d5-a1de902c23ff}
At line:1 char:1
+ New-VirtualDisk -StoragePoolFriendlyName "Storage Pool" -FriendlyName ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (StorageWMI:ROOT/Microsoft/...SFT_StoragePool) [New-VirtualDisk], CimException
    + FullyQualifiedErrorId : StorageWMI 1,New-VirtualDisk

 

 

I think it is because for some reason $SSD and $HDD doesn't have any space (Sorry looks like the formatting got a bit screwed up. But you get the idea 0 space)

 

Quote

PS C:\WINDOWS\system32> Get-StorageTier

FriendlyName TierClass MediaType ResiliencySettingName FaultDomainRedundancy Size FootprintOnPool StorageEfficiency
------------ --------- --------- --------------------- --------------------- ---- --------------- -----------------
HDD       Unknown   HDD       Simple                0                     0 B             0 B
SSD        Unknown   SSD       Simple                0                     0 B             0 B

 

Any ideas what I am doing wrong?

 

I have also deleted all of my pools and tried the other instructions, I had to modify it a bit to fit my needs but I am getting stuck at basically the same spot.

 

 

Edit
I found one issue with my command

Edit I typed that command wrong it should be Simple not Mirror

 

Get-StoragePool Pool | New-VirtualDisk -FriendlyName Space -ResiliencySettingName Simple –StorageTiers $SSD, $HDD -StorageTierSizes 200GB, 900GB -WriteCacheSize 10GB

 

But still didn't work, now I get a different error.

 

Quote

New-VirtualDisk : Failed to run CIM method CreateVirtualDisk on the MSFT_StoragePool (ObjectId =
"{1}\\ATLANTIS\root/Microsoft/Windows/St...) CIM object.  CIM array cannot contain null elements.
Parameter name: value
At line:1 char:34
+ ... age pool" | New-VirtualDisk -FriendlyName Tiered -ResiliencySettingNa ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (MSFT_StoragePoo.../Windows/St...):CimInstance) [New-VirtualDisk], CimJobException
    + FullyQualifiedErrorId : CimJob_ArgumentException,New-VirtualDisk

 

I don't think I have any null elements I checked on the $SSD and $HDD and they both are not null.

Link to comment
Share on other sites

Link to post
Share on other sites

31 minutes ago, Catsrules said:

I am attempting to create a tiered storage with Storage Spaces on Windows 10.

Tiering is only supported in Windows Server.

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, leadeater said:

Tiering is only supported in Windows Server.

You sure? From what I have read it is available in Windows 10 just not available in the GUI. 

 

Now I have only heard this from user posts I have yet to see any thing from Microsoft about this. So I would agree that it is probably not supported from Microsoft, However a few people have said they have gotten it working. They say Windows 10 works with all of the 2012 R2 features but only from powershell.   

https://answers.microsoft.com/en-us/windows/forum/windows_10-files/does-windows-10-support-tiered-storage/bd9df89c-572b-4630-96e9-4606de7c3162

 

Quote

https://www.reddit.com/r/Windows10/comments/3p11i0/10565_has_vastly_improved_storage_spaces/

 

Was playing around with 10565 and noticed that storage spaces has been vastly improved. The most noticeable is the control panel now has options to rebalance drives as well as a way to prep a drive for removal. Very nice. But under the hood I've also discovered that it now supports all the server 2012 R2 features - tiering, write back cache, etc. The only thing is that without a GUI, you need to configure it with powershell. But it works perfectly once you do. Hopefully they'll have a decent GUI for this soon, probably why they didn't announce it. Hopefully de-duplication and an improved ReFS are coming down from server in due time, but SS is finally good enough for everyday use.

 

https://forums.bit-tech.net/index.php?threads/howto-guide-storage-spaces-tiering-in-windows-10.336785/

 

Quote

Server 2012R2 (and up) has a technology called "Storage Tiers". Basically this is the software equivalent of a hybrid-SSD, you have a mixture of SSDs and HDDs in the same storage space, frequently used data is kept on the SSDs, with less accessed data on the HDDs. Theoretically this gets you the benefits of the speed of an SSD with the cheap space of an HDD.

Now this is normally only interesting to admins working with servers with lots of disks, but it turns out that, even though there's no indication in the GUI, all of the functionality is still part of Windows 10. The only problem is we have to do everything via PowerShell.

 

I guess I could bench up a spare computer and throw server 2016 and do the same thing and see if it works. But that is alot of work I was hoping I wouldn't have to do just for a test.

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, Catsrules said:

You sure? From what I have read it is available in Windows 10 just not available in the GUI. 

It was possible a while ago but I don't think it is anymore. You actually need to format the virtual disk with ReFS now for the tiering to work which has since been removed from the desktop editions.

 

If it's going to work you need to get the Get-StorageTiers working/showing correctly, without that creating that virtual disk will always fail.

Link to comment
Share on other sites

Link to post
Share on other sites

9 minutes ago, Catsrules said:

I guess I could bench up a spare computer and throw server 2016 and do the same thing and see if it works. But that is alot of work I was hoping I wouldn't have to do just for a test.

Could just enable the Hyper-V role and spin up a test VM with 4 10GB virtual disks and try it in that, wouldn't take long.

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, leadeater said:

It was possible a while ago but I don't think it is anymore. You actually need to format the virtual disk with ReFS now for the tiering to work which has since been removed from the desktop editions.

 

If it's going to work you need to get the Get-StorageTiers working/showing correctly, without that creating that virtual disk will always fail.

Ahh darn it that is too bad.
 

 

I will play around with it some more. Maybe if I install an older version of windows 10 that had the features enabled. Set it all up then upgrade to the new version of windows 10 see what happens. Probably would just loose access to the drive it is works at all.

 

Well thanks for you help, you saved me a lot of time trying to get it to work.  I guess I feel a little better I was probably doing the command correctly :)

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, leadeater said:

Could just enable the Hyper-V role and spin up a test VM with 4 10GB virtual disks and try it in that, wouldn't take long.

That is a good point. I will go that route. :)

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, Catsrules said:

Ahh darn it that is too bad.
 

 

I will play around with it some more. Maybe if I install an older version of windows 10 that had the features enabled. Set it all up then upgrade to the new version of windows 10 see what happens. Probably would just loose access to the drive it is works at all.

 

Well thanks for you help, you saved me a lot of time trying to get it to work.  I guess I feel a little better I was probably doing the command correctly :)

I have it setup on Server 2016 and it's really nice, got some virtual disks that are SSD only and some that are tiered. I'd like to use it in Windows 10 as well so if you do get it working let me know.

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, leadeater said:

I have it setup on Server 2016 and it's really nice, got some virtual disks that are SSD only and some that are tiered. I'd like to use it in Windows 10 as well so if you do get it working let me know.

Will do,

I will post back what I find.

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, Catsrules said:

Will do,

I will post back what I find.

Just heads up when using virtual disks in a VM you have to use powershell to set the media type to SSD or HDD after you add them in to a pool.

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, leadeater said:

Just heads up when using virtual disks in a VM you have to use powershell to set the media type to SSD or HDD after you add them in to a pool.

Thanks for the tip.

Link to comment
Share on other sites

Link to post
Share on other sites

7 minutes ago, Catsrules said:

Thanks for the tip.

To get list of disks

Get-PhysicalDisk

 

To set media type

Set-PhysicalDisk -FriendlyName <insert> -MediaType SSD or Set-PhysicalDisk -FriendlyName <insert> -MediaType HDD

 

 

Edit:

Sometimes you have to use Get-PhysicalDisk and filter using serial number as multiple disks have same friendly name then pipe to Set-PhysicalDisk

Link to comment
Share on other sites

Link to post
Share on other sites

I am an idiot, I think I was trying to add the wrong SSD to my pool this entire time. lol



I have two Samsung SSDs of the same model and size in my computer one was blank and the other was almost full. I am not sure why the blank one that I wanted to use wasn't available to pool and some how the full one was available to pool. Maybe the blank one wasn't inistilized or something Apparently I had a small 5GB unallocated space on the full SSD that Storage Spaces used. 

I was attempting to used 229GB of space on a 5GB partition lol.

 

But the commands I was using last time didn't work anyways, I tried on Windows 10 1703 Windows Server 2012 R2 and Windows Server 2016 no luck.

But I found some new commands that work.

 

Anyways assuming your not like me and pick the right disks these commands should work :) I have tried it on Windows 10 1703 and 1803 worked both times.

 

These are a modified commands I got from here

 

#Get physical disks that can be pooled
$pooldisks = get-physicaldisk | ? {$_.canpool -eq $true}
$storage = Get-StorageSubSystem


#Create new tiered storage pool 
New-StoragePool -StorageSubSystemId $storage.UniqueId -FriendlyName TieredPool1 -PhysicalDisks $pooldisks


#Now check if your disks are assinged as the correct media type with this command
get-physicaldisk

#If your disks are not assinged the correct MediaType change it now with the below command  (Repeat for each disk that is wrong) 
$missingDisk = Get-PhysicalDisk | Where-Object { $_.SerialNumber -eq 'PUT SERIAL NUMBER HERE' }
#If disk is HDD
$missingDisk | Set-PhysicalDisk -MediaType HDD
#If disk is SSD
$missingDisk | Set-PhysicalDisk -MediaType SSD



#Create SSD Tier 
$tier_ssd = New-StorageTier -StoragePoolFriendlyName TieredPool1 -FriendlyName SSD_TIER -MediaType SSD

#Create HDD Tier 
$tier_hdd = New-StorageTier -StoragePoolFriendlyName TieredPool1 -FriendlyName HDD_TIER -MediaType HDD

#Create a tiered Storage Space (virtual disk) with write-back cache enabled 
$vdisk1 = New-VirtualDisk -StoragePoolFriendlyName TieredPool1 -FriendlyName Tiered_Space -StorageTiers @($tier_ssd, $tier_hdd) -StorageTierSizes @(230GB, 930GB) -ResiliencySettingName Simple

#Initialize virtual disk, Create Partition and Volume, Assign Drive Letter 
Get-VirtualDisk -FriendlyName Tiered_Space | Get-Disk | Initialize-Disk –Passthru  | New-Partition –AssignDriveLetter –UseMaximumSize | Format-Volume -force -Confirm:$false

This is for 1 SSD 250GB  and 1 HDD 1TB.

I just got it work so I haven't tested the performance. That will be a test for another day 2:30AM it is pass bed time :)

Link to comment
Share on other sites

Link to post
Share on other sites

@LinusTech

@GabenJr

 

Would be cool to see how Intel Optane does to accelerate an HDD or even an SSD, not limited to only doing it on the C drive and I wonder if it works better than Intel RST does. Bit concerned it won't work to it's full extent without ReFS though, Multi-Resilient Virtual Disk, but a schedule task (defrag with correct switches) will move frequent used data to the fast tier.

Link to comment
Share on other sites

Link to post
Share on other sites

  • 1 month later...

Sorry to bump an older thread but I have figured this out.  I’ll post the power shell stuff when I get a chance. But your command is fine other than specifying the redundancy.  Remember your ssd their should be mirrored and your HDD tier is parity (set physical disk redundancy to 2, -physicaldiskredundancy 2 iirc) on the new-storagetier.  Then when you create the virtual disk with the tiers you just omit the resiliencysettingname altogether. Also set the writecachesize to 4gb and reduce your ssd tier size by that amount.  It’ll vastly improve performance.

 

This does increase the write performance degradation but you can pin vhd’s to the SSD tier so that’s not a big issue.  Plex also is mostly read intensive so it doesnt matter here as any write data will probably be on the SSD if it’s being actively used.

 

It seems that Data that is being actively written remains as “hot” (nvme > ssd) and if the last access time is before the timeout then it’s moved to “cold” (HDD).  If it is only being read intermittently then it will probably remain in the cold side of things.  This should be fine for media as the streaming bitrate will be below your disk speed (usually) and Plex’s buffer will use your ssd tier if you’ve set the cache to be on your virtual disk as well.  This is because as stated above the data actively being written/transcoded will be written to the ssd first.  

 

As for REFS vs NTFS use ntfs unless you need certain features from refs.  REFS still doesn’t support deduplication so at this point there’s no performance increase over NTFS.

 

However if you’re doing tiered storage then you don’t need refs as windows manages the parity via storage spaces.

 

overall storage spaces is actually getting quite good and I chose it over freenas as it utilizes the ssd’s in a way that I prefer.  Rather than maxing out my ram first I can get speed benefits with just a few extra ssd’s.

Link to comment
Share on other sites

Link to post
Share on other sites

On 6/22/2018 at 9:51 AM, ajnozari said:

As for REFS vs NTFS use ntfs unless you need certain features from refs.  REFS still doesn’t support deduplication so at this point there’s no performance increase over NTFS.

ReFS does now support dedup (1709 build) and the new proper tiering method, Multi-resilient Virtual Disk, only works with ReFS. In Windows Server 2016 and above ReFS should be the default used unless for some reason you cannot use it.

Link to comment
Share on other sites

Link to post
Share on other sites

  • 2 months later...
On 22/06/2018 at 7:51 AM, ajnozari said:

Sorry to bump an older thread but I have figured this out.  I’ll post the power shell stuff when I get a chance.

@ajnozari would Kindly post the powershell you used? I can't get @Catsrules's solution to work at all. For me the command (using @Catsrules script naming) should be:

 

$vdisk1 = New-VirtualDisk -StoragePoolFriendlyName TieredPool1 -FriendlyName Tiered_Space -StorageTiers @($tier_ssd, $tier_hdd) -StorageTierSizes @(100GB, 250GB) -WriteCacheSize 25GB ( I added the write cache, want lots of that I think)

 

However I get:

PS C:\WINDOWS\system32> $vdisk1 = New-VirtualDisk -StoragePoolFriendlyName TieredPool1 -FriendlyName Tiered_Space -StorageTiers @($tier_ssd, $tier_hdd) -StorageTierSizes @(100GB, 250GB) -WriteCacheSize 25GB
New-VirtualDisk : Not Supported

Extended information:
The storage pool does not have sufficient eligible resources for the creation of the specified virtual disk.

Recommended Actions:
- Choose a combination of FaultDomainAwareness and NumberOfDataCopies (or PhysicalDiskRedundancy) supported by the storage pool.
- Choose a value for NumberOfColumns that is less than or equal to the number of physical disks in the storage fault domain selected for the virtual disk.

Activity ID: {e7cdb08e-4b61-468c-8d17-ab4dd3b8f13c}
At line:1 char:11
+ $vdisk1 = New-VirtualDisk -StoragePoolFriendlyName TieredPool1 -Frien ...
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (StorageWMI:ROOT/Microsoft/...SFT_StoragePool) [New-VirtualDisk], CimException
    + FullyQualifiedErrorId : StorageWMI 1,New-VirtualDisk

PS C:\WINDOWS\system32>

 

At the moment I'm playing around in a VM which might have something to do with it. However what I'm trying to achieve is I want to build a box with several independent 12TB (not striped) each with their own SSD WriteCache and hot block area. Kind of like a Mac Fusion Drive. I want to host plex and I want to serve 4K content and not have a write of say a 4K movie interrupt the 4K movie I'm watching.

 

What I would ultimately like to achieve is creating some VHDXs on a larger SSD and using them as the tiers on each disk pool (pool having only one VHDX SSD and a 12TB HDD), but given I can't make this work that seems unlikely so I was planning on buying small PCIe SSDs and a PCIE to SSD M.2 adaptor card.

Link to comment
Share on other sites

Link to post
Share on other sites

By the way, if LTT did a youtube video on this it would be totally awesome. Build the ultimate Plex Server!!!!

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, dgwharrison said:

@ajnozari would Kindly post the powershell you used? I can't get @Catsrules's solution to work at all. For me the command (using @Catsrules script naming) should be:

 

$vdisk1 = New-VirtualDisk -StoragePoolFriendlyName TieredPool1 -FriendlyName Tiered_Space -StorageTiers @($tier_ssd, $tier_hdd) -StorageTierSizes @(100GB, 250GB) -WriteCacheSize 25GB ( I added the write cache, want lots of that I think)

 

However I get:


PS C:\WINDOWS\system32> $vdisk1 = New-VirtualDisk -StoragePoolFriendlyName TieredPool1 -FriendlyName Tiered_Space -StorageTiers @($tier_ssd, $tier_hdd) -StorageTierSizes @(100GB, 250GB) -WriteCacheSize 25GB
New-VirtualDisk : Not Supported

Extended information:
The storage pool does not have sufficient eligible resources for the creation of the specified virtual disk.

Recommended Actions:
- Choose a combination of FaultDomainAwareness and NumberOfDataCopies (or PhysicalDiskRedundancy) supported by the storage pool.
- Choose a value for NumberOfColumns that is less than or equal to the number of physical disks in the storage fault domain selected for the virtual disk.

Activity ID: {e7cdb08e-4b61-468c-8d17-ab4dd3b8f13c}
At line:1 char:11
+ $vdisk1 = New-VirtualDisk -StoragePoolFriendlyName TieredPool1 -Frien ...
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (StorageWMI:ROOT/Microsoft/...SFT_StoragePool) [New-VirtualDisk], CimException
    + FullyQualifiedErrorId : StorageWMI 1,New-VirtualDisk

PS C:\WINDOWS\system32>

 

At the moment I'm playing around in a VM which might have something to do with it. However what I'm trying to achieve is I want to build a box with several independent 12TB (not striped) each with their own SSD WriteCache and hot block area. Kind of like a Mac Fusion Drive. I want to host plex and I want to serve 4K content and not have a write of say a 4K movie interrupt the 4K movie I'm watching.

 

What I would ultimately like to achieve is creating some VHDXs on a larger SSD and using them as the tiers on each disk pool (pool having only one VHDX SSD and a 12TB HDD), but given I can't make this work that seems unlikely so I was planning on buying small PCIe SSDs and a PCIE to SSD M.2 adaptor card.

Make the hard drive and SSD sizes a little smaller then what the disk size is, the error your getting is saying their isn't enough physical drive space to create the storage.

 

Try this.

$vdisk1 = New-VirtualDisk -StoragePoolFriendlyName TieredPool1 -FriendlyName Tiered_Space -StorageTiers @($tier_ssd, $tier_hdd) -StorageTierSizes @(70GB, 230GB) -WriteCacheSize 25GB

I don't know what your drive sizes are but it looks like you have a 100GB SSD and a 250GB HDD, so the sizes would probably be something like 90GB SSD and 230GB HDD.

I am too lazy to look up the exact drive space but for testing try the above command.

 

I am not positive but I think this has something to do with how hard drive sizes aren't exactly the advertised size. For each GB of space you loose like 70.3 MB of space.  For example a 1TB drive is actually 931GB, the bigger the drive the more you need to shave off. 

 

Also I believe the write cache size eats into your SSD size. So a 100GB ssd with a 25GB write cache should be more like  70GB.

 

Link to comment
Share on other sites

Link to post
Share on other sites

  • 4 weeks later...

Registered just to say that using your commands in Windows 10 build 1803 Ent, I was able to get to the last command before encountering the same

"The storage pool does not have sufficient eligible resources for the creation of the specified virtual disk" error. After some digging, I was able to determine that by default Windows will create the tiers with mirrored redundancy. You have to create them with 

Quote

-ResiliencySettingName Simple

so the original commands become,

Quote

#Create SSD Tier 
$tier_ssd = New-StorageTier -StoragePoolFriendlyName TieredPool1 -FriendlyName SSD_TIER -MediaType SSD -ResiliencySettingName Simple

#Create HDD Tier 
$tier_hdd = New-StorageTier -StoragePoolFriendlyName TieredPool1 -FriendlyName HDD_TIER -MediaType HDD -ResiliencySettingName Simple

Then the final command works as long as you give a GB or 5 of breathing room depending on drive sizes.

Link to comment
Share on other sites

Link to post
Share on other sites

  • 9 months later...

Hey all, sorry to revive this thread but I was successfully able to create a storage tier with my Storage Spaces pool in Windows 10 ver 1903 using 4x 2 TB hdd's and 1x 120 GB SSD as the performance disk.

First I use the Storage Spaces GUI to create a new pool and storage space, selecting all 4 2TB standard SATA hdd's (3x 2TB WD Green Cavier's at 3Gb/s 5400 RPM and 1x 2TB WD Red 6Gb/s so it drops to 3 GB/s to match the other 3 and I include the 1 single 120 GB SSD which is a Intel® SSD 520 Series.  In the GUI I'm forced to create the Storage space for the pool, so I just accept my defaults and click create storage space.  I then delete that storage space, keep the storage pool but rename it to "mypool".

I then ran these commands in powershell:

Get-StoragePool mypool | Set-ResiliencySetting -Name Simple -NumberOfColumnsDefault 1
Get-StoragePool mypool | Set-ResiliencySetting -Name Mirror -NumberOfColumnsDefault 2

These commands I'm not confident I needed to run, still learning the auto functions of Storage Spaces but in theory Storage spaces should automatically choose the appropriate resiliency setting based on the number of disks, but for my disks I wanted to be sure what I was getting, so the simple resiliency setting is meant for the single ssd disk (which I may change to a mirror with a 2nd SSD disk).

get-storagepool mypool | get-physicaldisk | FT FriendlyName, Size, MediaType

this command showed me my 4 SATA disks as an unspecified mediatype, so I have to change that to HDD, I use this powershell command:

get-storagepool mypool | get-physicaldisk | ? MediaType -eq "Unspecified" | Set-PhysicalDisk -MediaType HDD

Then I run get-storagepool mypool | get-physicaldisk   to show me that all disks either have SSD or HDD as MediaType.

Now that the mediatype of the SSD is showing as SSD already and now the SATA disks are showing as mediatype HDD I can now create the new storage tier using these commands:

New-StorageTier -StoragePoolFriendlyName mypool -FriendlyName SSD_Tier -MediaType SSD -ResiliencySettingName Simple
New-StorageTier -StoragePoolFriendlyName mypool -FriendlyName HDD_Tier -MediaType HDD -ResiliencySettingName Mirror
$ssd_tier = Get-StorageTier -FriendlyName SSD_Tier
$hdd_tier = Get-StorageTier -FriendlyName HDD_Tier
New-VirtualDisk -StoragePoolFriendlyName mypool -FriendlyName "VirtualDisk" -StorageTiers @($ssd_tier,$hdd_tier) -StorageTierSizes 108GB, 3700GB

Then back in the Storage Spaces GUI for this next part, Change Settings, and formatting the VirtualDisk, giving it a drive letter and using NTFS as file system.  In the GUI you'll notice that the VirtualDisk shows as "Simple (no resiliency)" this is fine because I have my resliency with my 4x 2TB hdd's in a mirror (or a sudo RAID 10).

I can then confirm that the performance tier is setup and working as I would expect and what the resiliencysetting is set to by running this powershell command:
Get-StorageTier

I see from my results that my HDD MediaType is the Capacity TierClass and my SSD is the Performance TierClass with the SSD having a 0 for the FaultDomainRedundancy which is ResliencySetting Simple or NumberofColumnsDefault 1 and the HDD has FaultDomainRedundancy as 1 or ResiliencySetting mirror and numberofcolumsndefault 2.  The StorageEffiency also shows correctly as I would expect in a simple volume and a mirrored volume.

I then went a step further, to confirm that resiliency is working, powered off my PC and disconnected the SATA power to one of my SATA HDD disks, powered back and in Storage Spaces it showed that the storage space was degraded, I then went into Windows Event Viewer (eventvwr) and in this log "Microsoft-Windows-StorageSpaces-Driver/Operational" event ID 203 was showing and in that event it told me that a disk may need to be replaced, it even displayed the correct drive model and serial # of the disk that was missing.  The only thing I didn't like about this is that Windows 10 didn't alert me to this, so I will be creating an event log monitoring event using task scheduler to run a batch file that will popup a message on my desktop as well as email me the output of the event.

Attached are my CrystalDiskMark results of what my Intel Z390 chipset hardware RAID 10 array was benchmarking at and what my new Tiered Storage Space was benching at.

All I hope is that someone finds my steps useful there aren't a lot of examples to use on the interwebs as most are for Windows Server 2016 but I'm almost certain all the powershell commands match up.  Storage Spaces is clearly, in my opinion, leap years ahead of standard RAID available in most consumer level desktop motherboards and with Storage Spaces I can easily add more disks to the pool should I need to expand my VirtualDisk.  So cool!

01 - Stroage Spaces GUI.png

02 - powershell1.png

03 - powershell2.png

04 - powershell3.png

05 - eventvwr scr.png

06 - mypool and storage space.png

07 - RAID10-Intel-CrystalDiskMark.-withNotes.png

08 - StorageSpaces Tiered Bench.png

Link to comment
Share on other sites

Link to post
Share on other sites

  • 4 weeks later...
On 7/24/2019 at 10:05 PM, anoteco said:

New-VirtualDisk -StoragePoolFriendlyName mypool -FriendlyName "VirtualDisk" -StorageTiers @($ssd_tier,$hdd_tier) -StorageTierSizes 108GB, 3700GB

every time I try this command or some variation I get the following error:

  • image.png.acaac644533a4088787dd4c3f0f246fb.png

it doesn't seem to like the variables and I have no idea how to fix it.

Link to comment
Share on other sites

Link to post
Share on other sites

14 minutes ago, teknohpile said:

every time I try this command or some variation I get the following error:

  • image.png.acaac644533a4088787dd4c3f0f246fb.png

it doesn't seem to like the variables and I have no idea how to fix it.

 

I don't think you need to create an array. So would be more like below

New-VirtualDisk -StoragePoolFriendlyName mypool -FriendlyName "VirtualDisk" -StorageTiers @($ssd_tier,$hdd_tier) -StorageTierSizes 108GB, 3700GB

New-VirtualDisk -StoragePoolFriendlyName mypool -FriendlyName "VirtualDisk" -StorageTiers $ssd_tier,$hdd_tier -StorageTierSizes 108GB, 3700GB

 

Spoiler

Desktop: Ryzen9 5950X | ASUS ROG Crosshair VIII Hero (Wifi) | EVGA RTX 3080Ti FTW3 | 32GB (2x16GB) Corsair Dominator Platinum RGB Pro 3600Mhz | EKWB EK-AIO 360D-RGB | EKWB EK-Vardar RGB Fans | 1TB Samsung 980 Pro, 4TB Samsung 980 Pro | Corsair 5000D Airflow | Corsair HX850 Platinum PSU | Asus ROG 42" OLED PG42UQ + LG 32" 32GK850G Monitor | Roccat Vulcan TKL Pro Keyboard | Logitech G Pro X Superlight  | MicroLab Solo 7C Speakers | Audio-Technica ATH-M50xBT2 LE Headphones | TC-Helicon GoXLR | Audio-Technica AT2035 | LTT Desk Mat | XBOX-X Controller | Windows 11 Pro

 

Spoiler

Server: Fractal Design Define R6 | Ryzen 3950x | ASRock X570 Taichi | EVGA GTX1070 FTW | 64GB (4x16GB) Corsair Vengeance LPX 3000Mhz | Corsair RM850v2 PSU | Fractal S36 Triple AIO | 12 x 8TB HGST Ultrastar He10 (WD Whitelabel) | 500GB Aorus Gen4 NVMe | 2 x 2TB Samsung 970 Evo Plus NVMe | LSI 9211-8i HBA

 

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, Jarsky said:

I don't think you need to create an array. So would be more like below

I had the same thought. But got the same error either way. I just made new variables and now I have a new error. I'm using parity instead of mirroring. I think I haven't figured out exactly how many columns I need to make it work.

image.png.cfdcdd1cac1ec56fd994a3e8939e1527.png

Link to comment
Share on other sites

Link to post
Share on other sites

16 hours ago, teknohpile said:

I had the same thought. But got the same error either way. I just made new variables and now I have a new error. I'm using parity instead of mirroring. I think I haven't figured out exactly how many columns I need to make it work.

image.png.cfdcdd1cac1ec56fd994a3e8939e1527.png

Try and put the size a little bit below the actual size. I am not positive but I think this has something to do with how hard drive sizes aren't exactly the advertised size. For each GB of space you loose about 70.3 MB of space.  For example a 1TB drive is actually 931GB, the bigger the drive the more you need to shave off. 

 

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×