Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Looking to add a SSD cache to existing D drive.

I got a few projects I'm storing on my 6tb IronWolf drive, and while it's doing the job the same drive also stores data for other things as well like movies and music. I am currently building a NAS to properly store everything but I am going to be keeping a copy of my projects on my main PC. Either way transfer speeds are still a bit on the slow side and I would like to give it a performance boost. Is there a way to add a ssd cache to my 6tb D drive safely without loosing everything? I am going to backup everything before I even try so don't worry about losing data.

 

My workstation is a 2920x Threadripper on a ROG Zenith Extreme Alpha x399. 64gb 3200 memory, and I have 2 nvme drives, one for boot and one for seperate programs. I got one nvme slot left for the cache. The IronWolf is the only drive that needs a cache, but it would be cool if I got a 1tb nvme that is split for the other drives too.

 

OS is Win10 Pro.

Link to post
Share on other sites

There's two methods off the top of my head you can research but I don't think either of them will work.

 

You can try looking into Intel Optane. This semi-recently came out with a feature to speed up HDDs. The problem with this is I believe it was designed for only a select series of Intel chipsets. I don't believe it can be used on AMD but I could be wrong. Something to look into.

 

Another option is look into Windows Storage Spaces. I believe there is a feature in that which enables a SSD cache. The problem here is I believe the caching is a server feature. I don't know if it's included with W10 Home/Pro.

Guides & Tutorials:

How To: Access Remote Systems at Home/Work Securely from Anywhere with Pritunl

How to Format Storage Devices in Windows 10

A How-To: Drive Sharing in Windows 10

VFIO GPU Pass-though w/ Looking Glass KVM on Ubuntu 19.04

A How-To Guide: Building a Rudimentary Disk Enclosure

Three Methods to Resetting a Windows Login Password

A Beginners Guide to Debian CLI Based File Servers

A Beginners Guide to PROXMOX

 

Guide/Tutorial in Progress:

How To: Remotely Access Your Server/NAS

 

In the Queue:

How to Use Memtest86 to Diagnose RAM Errors

 

Don't see what you need? Check the Full List or *PM me, if I haven't made it I'll add it to the list.

*NOTE: I'll only add it to the list if the request is something I know I can do.

Link to post
Share on other sites
On 10/29/2020 at 9:50 PM, Windows7ge said:

There's two methods off the top of my head you can research but I don't think either of them will work.

 

You can try looking into Intel Optane. This semi-recently came out with a feature to speed up HDDs. The problem with this is I believe it was designed for only a select series of Intel chipsets. I don't believe it can be used on AMD but I could be wrong. Something to look into.

 

Another option is look into Windows Storage Spaces. I believe there is a feature in that which enables a SSD cache. The problem here is I believe the caching is a server feature. I don't know if it's included with W10 Home/Pro.

W10 pro does include windows storage spaces, but home doesn't. you can get pro licences on ebay for really cheap though, and you can link them to a microsoft account and use them forever.

 

do you want to have a raid0 type scenario (if one drive fails, everything fails, but it is fast AF) or raid1 (mirrored - if one drive fails, you just need to replace it then you're good)? if just storing games that you can redownload, or if you dont care about redudancy and already take regular backups, or if you store important stuff on a different drive, then go for raid0. in windows 10 storage spaces, raid0 is called 'simple' and raid1 is called 'mirror' (in the command line)

 

if you have just 1x ssd 1x hdd, your only option is a Simple tiered configuration. If you have 2x ssds 2x hdds, you can make a mirrored tiered configuration. either way, the performance is FANTASTIC, even if the hdd part of things is really slow, the ssd cache makes up for it.

 

the windows 10 storage spaces GUI doesn't allow you to make tiered storage spaces through it, so you have to make it through Powershell. but you can manage it through the GUI after its made (although the tiers wont be visible).

 

 

GUIDE: How to set up a tiered storage space (simple/mirrored) on windows 10 pro/education/enterprise/etc

 

First, you'll need: windows 10 pro, and at least 1x ssd and 1x hdd - make sure to back up all data that you care about on these drives before starting.

 

Step 1) Make sure all drives you want to add to the storage space are ready. To do this go to Disk Management, and remove all partitions from the drives. The whole drive should ideally be unallocated.

Step 2) Launch POWERSHELL as an administrator

Step 3) First you need to see what disks are available. If they don't show up, make sure you did step 1 properly. Run this command in powershell:

Get-PhysicalDisk -CanPool $True | Format-Table -Property FriendlyName, OperationalStatus, Size, MediaType

Step 4) Run:

$storage = Get-StorageSubSystem
New-StoragePool -StorageSubSystemId $storage.UniqueId -FriendlyName Pool -PhysicalDisks (Get-PhysicalDisk -CanPool $true)

If you don't encounter any errors, continue to step 5.

 

Step 5) Run:

Get-StoragePool Pool | New-StorageTier –FriendlyName SSD –MediaType SSD
Get-StoragePool Pool | New-StorageTier –FriendlyName HDD –MediaType HDD

Step 6) Here is where you choose if you want a Simple/Raid0/Fast storage space, or a Mirrored/Raid1/Redudant storage space. Either way performance will be great as you're using ssd as cache, but a 'simple' config will have slightly better performance with the downside of no redundancy. There is a way to do this with 1x SSD and 2x HDDs with redundancy aswell but i'm not sure if its reliable.

 

# CHOICE 1: IF you just have 1x ssd 1x hdd and want to make a simple config, run this command:

Get-StoragePool Pool | Set-ResiliencySetting -Name Simple -NumberOfColumnsDefault 1

# CHOICE 2: IF you have 2 ssds and 2 hdds and want to make a mirrored config, run this instead:

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

 

Step 7) Run:

$SSD = Get-StorageTier -FriendlyName SSD
$HDD = Get-StorageTier -FriendlyName HDD

Step Eight8) Now, this part is what I find annoying. Carry out the following steps:

 

Replace '%SETTING1' with your resiliency setting. If you're making a simple config, this would be replaced with 'Simple'. If you're making a mirrored config, this would be replaced with 'Mirror'.

 

Replace '%SSDSIZE' with the size of your SSD tier. If making a simple config, that would be the total size of your SSDs. If you're making a mirrored config, that would be the total size of your SSDs, divided by 2.

Replace '%HDDSIZE' with the size of your HDD tier. If making a simple config, that would be the total size of your HDDs. If you're making a mirrored config, that would be the total size of your HDDs, divided by 2.

Replace '%WRITECACHESIZE' with a number that you think is ideal for your write cache. For me, this was 20GB for 24TB of storage. If you don't know what to write here, just replace it with '10GB'.

 

Get-StoragePool Pool | New-VirtualDisk -FriendlyName Space -ResiliencySettingName %SETTING1 –StorageTiers $SSD, $HDD -StorageTierSizes %SSDSIZE, %HDDSIZE -WriteCacheSize %WRITECACHESIZE

 

EXAMPLE 1: if you had 1x 500gb SSD, and 1x 8TB HDD, and the 500gb detects as 464GB, and the 8TB detects as 7.64TB, and you wanted a SIMPLE config with a write cache size of 10GB, you would write:

 

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

EXAMPLE 2: if you had 2x 500gb SSDs, and 3x 8TB HDDs, and the 500gb's detects as 464GB each, and the 8TB detects as 7.64TB each, and you wanted a 2 WAY MIRRORED config with a write cache size of 20GB, you would first calculate the storage capacity of your HDD tier which would be (7.64TB * 3)/2 = 11.46TB, then you would write:

 

Get-StoragePool Pool | New-VirtualDisk -FriendlyName Space -ResiliencySettingName Mirror –StorageTiers $SSD, $HDD -StorageTierSizes 464GB, 11.46TB -WriteCacheSize 20GB

 

Step 9) After carrying out the previous step, you may encounter an error saying there is not enough space to create your storage space (if not, just skip to step 10). This is because your (for example) 8TB drive is actually detected as 7.64TB, and sometimes that value isn't accurate either - probably rounded or something. The way I fixed this was just with trial and error. Before anything, check what windows is detecting as the sizes for your HDDs/SSDs in Disk Management, so you know where to start. eg for my 500Gb ssd, its detected as 465 gb. and my 8tb hdd is detected as 7.64TB, so I would start at those values before beginning the trial/error process.

 

First, find out which storage tier is the one causing the space issue. You need to rule one of them out.

 

The way I did this was by drastically reducing the size of the SSD tier and trying again. If it still didn't work, that means the SSD tier is probably ruled out (either that or both values are wrong). But if it did work, then go to the storage spaces GUI, delete the storage space and drive pool, and start again from step 1 - this time keep trying and reduce the size of the SSD tier by 1-5GB every time until you hit that sweet spot where it decides to work.

 

If the SSD tier is ruled out, move onto the HDD tier. Reduce the size by 0.01TB every time until you hit the sweet spot where it decides to work.

 

if it still doesn't work, that means both of the size values were likely wrong. Start again and try to get the size of the ssd/hdd tiers as close as possible to what it should be, so you can make the most out of your storage. The only upside to using less space than you have, at least for ssds, is that they would likely last longer since less of the capacity is being used up.

 

Step 10) all done! now open up windows 10 storage spaces GUI, format the drive, and give your drive pool a name. benchmark with crystaldiskmark and post it here :)

 

If windows storage spaces gui doesn't display your storage space, delete the storage space and pool and try again from step 1. If not displayed in the GUI it is still usable, but will be annoying to manipulate without learning powershell.

 

Hope this helps. I fking love windows storage spaces. 1070MB read on some cheap ass smr hdds when you add a bit of ssd cache, it is fantastic. And with mirrored storage spaces I can use cheap amazon drives that are known to fail without worrying about it too much. 

 

PS. If you want your ssds to last longer, reduce the size of your ssd tier to maybe half the actual capacity of your ssd. That would stop the health from declining as fast as it would normally do.

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

×