Return to Level1Techs.com

How to set up tiered storage on windows 10

#1

Hi there, I am interested in the store MI technology on the new X470 platform, but noticed from the recent video that tiered storage can be set up using storage spaces on windows 10. There doesn’t seem to be a huge amount of info out there as to how to do this. Some people say you need at least 2 SSD and 2 HDD to do it while others say one of each will do.

I have a 960 evo nvme as my boot drive and don’t want to involve it in the tier, but I also have a 500gb 840 evo and a 4Tb seagate storage drive I want to use. I also want to be able to add additional HDD to the storage space as more capacity is needed. A simple storage space is fine. I don’t need mirroring as all my data is stored in a network server as well as my desktop, I just like fast local access to the data as well.

I have seen a couple of guides on how to do this on google using powershell, but I have never used it before and don’t 100% understand what I am doing.

Has anyone else done this with one SSD and one HDD or have any thoughts.

Thanks

0 Likes

Open-Source/More tweakable alternative to StoreMI
#2

Wouldn’t it simply be transparent to storage spaces, because underneath it?

0 Likes

#3

I was planning of just using the windows 10 tiering rather than the ryzen store MI stuff as I don’t need it to be bootable, and it saves using any more software. I am just a bit unsure how to do it as there is no gui for tiering in win10 and I have never really used powershell before. I have found a few guides but some are pretty old and they contradict each other.

0 Likes

#4

I was not aware that Windows 10 have more than basic functions of Storage Spaces. After reading your question I have probably found the same tutorials/examples as you did. One of them was actually an example of 2 SSD and 2 HDDs - but I think it was only an scenario that author used as an example.

I have not tested tiered storage so far. But I have in my home two machines that have some volumes with storage spaces, and here are my recommendations for you:

  • Powershell is your only friend!
  • You do not need to learn PowerShell perse, just those commands for Storage Spaces. Powershell possibilities are just for more advance, scripted things you might need to use when creating the similar configurations on multiple machines.
  • I always end up studying sites like: https://docs.microsoft.com/en-us/powershell/module/storage/get-physicaldisk because tutorials/guides on internet always do things in narrowed way.
  • Do not use any UI application from MS for storage spaces. I have Windows 2016 Essentials and because it is both Server and “Essesntial” it has not one, but two, UI management applications for storage spaces. Both are nice to see the status and both are completely useless and dangerous to use (the application literally cannot calculate parameters for commands called in background to create disk pool/volume and fails with “unknown error” )
  • I assume that that if UI for Storage Spaces works in WIn 10 it is only because it is so limited that team behind it simply did not have opportunity to make the same mistakes like with Windows Server.
0 Likes

#5

Tiered storage spaces on win10 isn’t a supported feature as far as I know and definitely can’t be created via a GUI.

In older versions of win10 the posh commands to set this up failed. It did work on one of the builds last year as I did manage to get it running. To be honest the results were not impressive. I will see if I can dig out any more info.

0 Likes

#6

Cheers guys, there is no GUI in windows 10 for storage space tiering at all, it is very basic indeed. It allegedly does work via powershell and Wendell mentioned it in his store MI video, so I doubt he would be wrong on that. I was planning on just buying the $20 version of store MI to try but it only supports up to 250gb SSDs and I have a 500gb. You can buy the pro version which supports up to 1tb SSD and 4Gb RAM but it is $60 which is a little more than I would like to pay for an experiment. If I could do the same thing via windows 10 for free I would obviously try that first. I will have another look at the commands and see if I can understand it. better

1 Like

#7

I have found the suggested powershell commands if this makes sense to anyone.

#List all disks that can be pooled and output in table format (format-table)
Get-PhysicalDisk -CanPool $True | ft FriendlyName,OperationalStatus,Size,MediaType

#Store all physical disks that can be pooled into a variable, $pd
$pd = (Get-PhysicalDisk -CanPool $True | Where MediaType -NE UnSpecified)
#Create a new Storage Pool using the disks in variable $pd with a name of My Storage Pool
New-StoragePool -PhysicalDisks $pd –StorageSubSystemFriendlyName “Storage Spaces*” -FriendlyName “My Storage Pool”
#View the disks in the Storage Pool just created
Get-StoragePool -FriendlyName “My Storage Pool” | Get-PhysicalDisk | Select FriendlyName, MediaType

#Create two tiers in the Storage Pool created. One for SSD disks and one for HDD disks
$ssd_Tier = New-StorageTier -StoragePoolFriendlyName “My Storage Pool” -FriendlyName SSD_Tier -MediaType SSD
$hdd_Tier = New-StorageTier -StoragePoolFriendlyName “My Storage Pool” -FriendlyName HDD_Tier -MediaType HDD

#New-VirtualDisk –SNtoragePoolFriendlyName “My Storage Pool” –ResiliencySettingName Simple –Size 10TB –Provisioningtype Thin –FriendlyName “Documents”
#Create a new virtual disk in the pool with a name of TieredSpace using the SSD (50GB) and HDD (300GB) tiers
$vd1 = New-VirtualDisk -StoragePoolFriendlyName “My Storage Pool” -FriendlyName TieredSpace -StorageTiers @($ssd_tier, $hdd_tier) -StorageTierSizes @(50GB, 300GB) -ResiliencySettingName Mirror -WriteCacheSize 1GB #cannot also specify -size if using tiers and also cannot use provisioning type, e.g. Thin

I see the write cache and provisioning are both set with the commands which seems a lot more powerful than the GUI can manage. I take it thin provisioning means morer discs can be added later.

1 Like

#8

To ensure the formatting and the quotes don’t get messed up (plus I also expanded the aliases and added the named parameters.

I haven’t looked at the script itself any further, nor the actual cmdlets so I make no warranty or claims whether it actually works - but it looked interesting - and well I saw that the quotes were being messed up (happens often when copying/pasting from the web) so before anyone tries to run it and gets errors because of that I figured I’d clean it up a bit.

If someone else hasn’t jumped on it later on, I can have a crack at it if wanted/needed/asked (I am about to head in for the night) :slight_smile:

# List all disks that can be pooled and output in table format (format-table)
Get-PhysicalDisk -CanPool $True | Format-Table -Property FriendlyName, OperationalStatus, Size, MediaType

# Store all physical disks that can be pooled into a variable, $pd
$pd = (Get-PhysicalDisk -CanPool $True | Where-Object -FilterScript {$_.MediaType -NE 'UnSpecified'})
# Create a new Storage Pool using the disks in variable $pd with a name of My Storage Pool
New-StoragePool -PhysicalDisks $pd –StorageSubSystemFriendlyName "Storage Spaces*" -FriendlyName "My Storage Pool"
#View the disks in the Storage Pool just created
Get-StoragePool -FriendlyName "My Storage Pool" | Get-PhysicalDisk | Select-Object -Property FriendlyName, MediaType

# Create two tiers in the Storage Pool created. One for SSD disks and one for HDD disks
$ssd_Tier = New-StorageTier -StoragePoolFriendlyName "My Storage Pool" -FriendlyName SSD_Tier -MediaType SSD
$hdd_Tier = New-StorageTier -StoragePoolFriendlyName "My Storage Pool" -FriendlyName HDD_Tier -MediaType HDD

# New-VirtualDisk –SNtoragePoolFriendlyName "My Storage Pool" –ResiliencySettingName Simple –Size 10TB –Provisioningtype Thin –FriendlyName "Documents"
# Create a new virtual disk in the pool with a name of TieredSpace using the SSD (50GB) and HDD (300GB) tiers
$vd1 = New-VirtualDisk -StoragePoolFriendlyName "My Storage Pool" -FriendlyName TieredSpace -StorageTiers @($ssd_tier, $hdd_tier) -StorageTierSizes @(50GB, 300GB) -ResiliencySettingName Mirror -WriteCacheSize 1GB # cannot also specify -size if using tiers and also cannot use provisioning type, e.g. Thin
1 Like

#9

Thanks very much for that, much appreciated. I wasn’t going to run the script as a few of the parameters don’t apply to me, but it is a good idea in case anyone else did it. My scripting knowledge is limited to basic command line stuff and I have only used powershell once before. However it looks really powerful and I am keen to understand exactly what is happening before running anything. Any help would be much appreciated. I do use storage spaces at work but that is a simple mirrored array with 4 discs using the GUI. This stuff is much more sophisticated.

0 Likes

#10

Just found an interesting blog on the subject with the required powershell commands. I have located a spare 4tb data drive so will give this a go over the weekend.

1 Like

#11

Well I finally had a go at setting up the tiered space and it seems to be working well. The only snag I hit was when creating the new disc the “max size” commands for the tier sizes didn’t work and threw an error. I then tried manually specifying the sizes but got the same error as I think there must be some formatting overhead which reduces the available size a bit . In the end I had to go for 400GB SSD tier and 3.5TB HDD tier (for a 500gb SSD and 4TB HDD) before the volume would be created leading to a total tiered space of 3.88TB. I am now copying around 2TB of data onto the volume so will see how the performance goes.

0 Likes

#12

You’re very welcome! Sorry I didn’t get back here sooner, work has been busy.

For a bit more of an introduction to PowerShell I’d recommend; https://github.com/PowerShell/PowerShell/blob/master/docs/learning-powershell/powershell-beginners-guide.md

On top of that, pretty much >any< recent version of PowerShell has this great awesome cmdlet called Get-Help or its alias ‘help’ (or in some cases ‘man’ although I believe on PowerShell (core) that’s now removed - not sure though)

Type it in front of any command you want to know more about and it will give more info. My personal favorite is using it like this (requires PowerShell version 3 or higher, which any Windows version above 7 will have by default)
Get-Help New-StorageTier -ShowWindow

Additionally, you can use https://docs.microsoft.com to look up the commands as well; for example: https://docs.microsoft.com/en-us/powershell/module/storage/new-storagetier?view=win10-ps

Hope this helps - and great stuff on this thread so far!

You might want to mention that creating a new Storage Space does wipe the drive from what I quickly glanced - so better make sure there is nothing on there (you DO get warned about it so pay attention :slight_smile: )

0 Likes

#13

Yeah, the drives were well and truely wiped during the process. You have to delete all partitions before the drives can be pooled, and even then I had to run clean in diskpart and reboot the machine before it would work. I went back in and managed to get a bit more capacity out of the pool so I now have 4.06 TB of formatted space. Performance is hard to assess as I am still copying all my data over, but it is pegged between 110 and 120 MB/sec which is the max read speed of the source drive. I will try copying files off my NVME system drive which will give me a btter idea of the performance. Thank for those links. Powershell seems very powerful indeed, on another level to the normal command prompt.

0 Likes

#14

Are you doing this over the network? At 1gbps speeds?

0 Likes

#15

Nope over sata but the source drive in a 4TB seagate HDD which has a max seq read speed of about 150 MB/s so that is about the best I could hope for. All the data is now copied. I will try and get some large file copies from my nvme system drive to the tiered storage space as that will give a better indication of the performance.

1 Like

#16

Just an update to this, Windows 10 does (at-least now) have a GUI for Tiered Storage, just search the start menu for “Manage Storage Spaces”

2 Likes

#17

I thought they were depreciating storage spaces, so would new installs have it if windows doesn’t detect a space already active?

0 Likes

#18

I tried this on my Win 10 Pro 1803 machine with two HDDs and one SSD with simple resiliency. It’s working great for about a month now. Thanks!
I just had to use "Windows Storage*" instead of "Storage Spaces*" for –StorageSubSystemFriendlyName.

Does anyone know whether data is automatically striped across multiple drives of the same tier (assuming they all have the same capacity)? Or are they just treated as a SPAN?

2 Likes