10

Can't really find any info so I'm hoping someone here can shed some light.

I have a fresh copy of Windows 8 Pro installed. I want to use storage spaces with 4 internal HDD and 2 internal SSD's. Does Windows 8 utilize the SSD's in any special way (eg. caching) to enhance the speed of the storage pool?

Or will the SSD's just be part of the pool for data and no performance benefit given?

5 Answers 5

14

This somewhat extends TiernanO's answer - I've struggled to find good detailed background on all this, so I thought I'd write it up nicely for everyone:

SSDs can be used to speed up your pools, but it only works in certain situations and there's a number of conditions that must be adhered to.

Firstly, you can't simply just add SSDs to an existing pool and expect it to speed up your system. In fact, if you're mixing SSDs with HDDs in the same pool you're basically wasting the SSDs because each of your files is split up over the other disks, so half of your file might be on a SSD and the other half on the HDD -- so you're still going to need to wait for the HDD to spin up and seek the data before it can actually be used by your computer even though the SSD found the first half of the data long ago. [this is an oversimplification, in fact the data is split to different disks on a block level, not a file level]

So, you probably don't want to mix SSDs and HDDs in the same virtual disk -- have pools composed of only HDDs or only SSDs, not both. Incidentally, it's okay to have them in the same storage pool, just not working on the same virtual disk.

Now, getting back to your question -- yes, it's possible to use SSDs to speed things up by using Storage Space's 'journaling' feature -- but there's a few conditions:

  1. You must be using a virtual disk with a resiliency setting of 'Parity', journal disks cannot be used with 'Simple' or 'Mirror' virtual disks
  2. You must have at least two SSDs -- you can't override this (in the background, they're configured as a Mirror Space in itself in case one fails)
  3. All space on the SSD must be dedicated to journaling, you'll not be able to use either of the SSDs to store data
  4. None of this can be configured from Windows' UI in Windows 8 or Server 2012 -- you have to do it manually using PowerShell
  5. If you've manually increased the number of parity spaces in your pool then you should equally increase the number of journal disks (e.g. if you're using the default 1 parity space, you need 2 SSDs. If you've got 2 parity spaces, you need 4 SSDs etc.).
  6. It may be obvious, but adding Journal disks only increases the speeds of data writes to the virtual disk -- data read speeds will be unaffected

Assuming you're happy with those restrictions, here's what you'll need to do in an elevated PowerShell window:

For this example, I'm assuming you've not yet created your storage pool or virtual disks -- if you've got an existing set modify the instructions to suit.

# See what disks you've got available so you can set the below variables
Get-StoragePool -IsPrimordial $true | Get-PhysicalDisk `
    | Where-Object CanPool -eq $True

# Tell Windows which disk is a traditional HDD and which is an SSD
$HDDs = "PhysicalDisk1", "PhysicalDisk2", "PhysicalDisk3"
$SSDs = "PhysicalDisk4", "PhysicalDisk5"

# Create a new storage pool (these are fairly default options)
New-StoragePool -FriendlyName "Your Storage Pool" `
    -PhysicalDisks (Get-PhysicalDisk $HDDs) `
    -StorageSubSystemFriendlyName "Storage Spaces*" `
    -ResiliencySettingNameDefault Parity

# Add in your two (or more) Journal disks
Add-PhysicalDisk -StoragePoolFriendlyName "Your Storage Pool" `
    -PhysicalDisks (Get-PhysicalDisk $SSDs) -Usage Journal

# Create the virtual disk and get it ready for use
New-VirtualDisk -FriendlyName "Parity Protected & Journaled Data" `
    -StoragePoolFriendlyName "Your Storage Pool" -NumberOfColumns 3 `
     -ProvisioningType Thin -ResiliencySettingName Parity -Size 2TB `
    | Initialize-Disk -PassThru -PartitionStyle MBR `
    | New-Partition -AssignDriveLetter -UseMaximumSize `
    | Format-Volume -FileSystem NTFS `
        -NewFileSystemLabel "Parity Protected & Journaled" -Confirm:$false

You can now check it all worked using a Get-PhysicalDisk:

FriendlyName  CanPool OperationalStatus HealthStatus Usage            Size
------------  ------- ----------------- ------------ -----            ----
PhysicalDisk1 False   OK                Healthy      Auto-Select  10.25 GB
PhysicalDisk2 False   OK                Healthy      Auto-Select  10.25 GB
PhysicalDisk3 False   OK                Healthy      Auto-Select  10.25 GB
PhysicalDisk4 False   OK                Healthy      Journal      10.25 GB
PhysicalDisk5 False   OK                Healthy      Journal      10.25 GB

Sources:

2
  • Is point 4 still valid for windows 8.1 and 2012 r2?
    – Peter
    Mar 24, 2015 at 10:39
  • 1
    @Peter Still applies as far as I'm aware. Mar 24, 2015 at 14:45
5

I think this is improved on Windows server 2012 r2.

  • Write-back cache

Storage Spaces can use existing solid-state drives in the storage pool to create a write-back cache that is tolerant of power failures and that buffers small random writes to solid-state drives before later writing them to hard disk drives.

  • What value does this change add?

Small random writes often dominate common enterprise workloads, and they can impact the performance of other data transfers that are taking place. By using solid-state drives (which excel at random access) for a write-back cache, Storage Spaces can reduce the latency of the random writes and also greatly reduce any impact on the performance of other data transfers.

  • What works differently?

The write-back cache is transparent to administrators and users, and it is created on all new virtual disks if there are a sufficient number of solid-state drives in the storage pool, as determined by the following requirements for the associated storage space:

  1. Simple spaces require one solid-state drive
  2. Two-way mirror spaces and single-parity spaces require two solid-state drives
  3. Three-way mirror spaces and dual parity spaces require three solid-state drives

The write-back cache works with all types of storage spaces, including storage spaces with storage tiers.

Newly created storage spaces automatically use a 1 GB write-back cache by default when the storage pool contains enough physical disks with MediaType set to SSD or Usage set to Journal to support the specified resiliency setting. If there aren’t enough physical disks with these settings, the write-back cache size is set to 0, except for parity spaces, when it’s set to 32 MB.

1
  • 1
    Hello and welcome to superuser.com. Your example refers to Windows server, while the poster asked about Windows 8.1. Are you sure that what you are talking about also goes for Windows 8.1? If so, do you have references for that?
    – Mogget
    Nov 8, 2013 at 8:59
3

It depends, really. There's at least 4 ways you may utilize SSDs in a mixed setup, i.e. when there are both HDDs and SSDs:

  • You can just blindly add them all to the pool. This makes no sense whatsoever, because data will spread randomly across your disks, no matter how write-intensive it is. Note: this is the default setting, of course.
  • You can use the SSDs for journaling with parity (RAID5/6) spaces, i.e. caching during writes. This I would recommend wholeheartedly if parity spaces didn't suck so hard. No, really, it is BAD, avoid at all costs. For mirrored spaces a dedicated journal is useless as there's no parity involved, just a 1:1 copy.
  • You can set up tiered storage and let Windows automatically move frequently-accessed data to the faster SSDs. This may work decently, but it's really hard to benchmark so I can't say if it's good or bad.
  • You can also create 2 separate arrays, put the 2 SSDs in a 2-way mirror for program files and other write-intensive stuff, and put the 4 HDDs in another 2-way mirror for everything else. This is the one I recommend for you.

If you're curious why I'm so confident, it's because I've spent a few weeks (not kidding) testing the hell out of Storage Spaces. Check out my in-depth benchmarking series for all the numbers that back my statements:

Cheers.

2

There is very little documentation on this, but i did read somewhere that Storage Spaces has the option to add a disk to a pool for Journaling. I cant find the original article, but if you look at the Add-PhysicalDisk cmdlet, under Usage, there is an option for Journal... When I read about it, the guy mentioned that he used an SSD as a journal disk, and added it to a pool of 8 2Tb drives, and read and write increased by 40+%... Your Mileage may Vary, but it might be worth a shot...

As a third party option, you may also want to have a look at FancyCache. You can use memory and SSDs as a cache for your slower Media. I used it before, and it worked well, just have not had a chance to re-install since moving to Server 2012...

2
  • +1 for FancyCache hint, never heard of that one before, and might be worth a look. Feb 6, 2013 at 10:30
  • Journaling disks are only used for Parity spaces IIRC. For Mirrored spaces you need to configure the WBC.
    – Monstieur
    Aug 3, 2016 at 9:26
0

I'll just add this answer because Google ranks this question up really high in its search results for topics like storage spaces and SSD cache so that other interested people can find current information more easily.

In the past several years Microsoft has expanded the possibilities drastically. Here's a link to the comprehensive official Microsoft documentation regarding caches in Storage Spaces.

Understanding the cache in Storage Spaces Direct

So yes, nowadays you can use SSDs and SSD RAIDs as caches as intended.

1
  • 2
    Windows 8/10/11 Storage Spaces <> Windows Server Storage Spaces Direct. Jan 1, 2022 at 17:47

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .