Windows Storage Spaces, can I stripe across 3 disks and on top mirror to a 4th disk

raidstorage-spaces

I have 4 HDD drives and want to maximize read performance with 1 level of resiliency.

For that purpose I like to ask whether I can use 3 of the 4 drives in Storage Spaces and create a Simple Virtual Disk with 3 columns, essentially striping across the 3 disks and then on top of that create a mirror between this simple volume and the 4th disk? More importantly, can I specify settings in PowerShell to perform reads from the Simple Volume Stripe in order to maximize read performance?

I have looked very hard but have so far not found any solution in Windows that allows to create mirrors on all 4 disks and to then perform parallel reads across all mirrors similar to a Raid 0 stripe. FlexRaid and DrivePool came close to the desired setup but their reading across the mirrors when performing file transfers did not match the advertised performance.

Any ideas or solutions? Please note that I am happy to end up with a total capacity the size of a single disk. This questions concerns maximizing read performance, using 4 HDD drives, under the constraint to implement resiliency of a single disk failure.

Best Answer

A)

for 4 HDD Storage Space with 1 disk failure resiliency you want to create (in the Storage Space terminology) 4 column single parity virtual disk.

# Init
$storageSubSystem = Get-StorageSubSystem
$poolName = "POOL"
$poolDisks = Get-PhysicalDisk -CanPool $true | Where-Object {$_.MediaType -eq "HDD"}
$spaceName = "MyStorage"
$spaceSize = 1TB

# Create pool
$pool = New-StoragePool -FriendlyName $poolName -StorageSubSystemID $storageSubSystem.UniqueId -PhysicalDisks $poolDisks

# Create storage space
$spaceDisk = New-VirtualDisk -FriendlyName $spaceName -StoragePoolFriendlyName $poolName -NumberOfColumns 4 -NumberOfDataCopies 2 -ResiliencySettingName Parity -ProvisioningType Thin -Size $spaceSize
# or possibly
#$spaceDisk = New-VirtualDisk -FriendlyName $spaceName -StoragePoolFriendlyName $poolName -NumberOfColumns 4 -PhysicalDiskRedundancy 1 -ResiliencySettingName Parity -ProvisioningType Thin -Size $spaceSize

(I didn't test it, but you get the idea)

B)

However in your second paragraph you explicitly ask for 3 column simple/no-resiliency virtual disk to be used in two-way mirror with another physical drive.

This won't be possible as virtual disks cannot pool. I don't have documentation link that states this, but I do rely on:

C)

But you asked for ideas - what if you created 3 disk spanned or even striped dynamic volume and then put it in plain two-way mirror. With a bit of luck the dynamic volume could show up in Get-PhysicalDisk -CanPool $true, that would be neat (see my benchmark). Possibly pointless though and I don't have free disks to try.


More importantly, can I specify settings in PowerShell to perform reads from the Simple Volume Stripe in order to maximize read performance?

I don't know about any option to prioritize read access. Storage tiers (New-StorageTier) can't be used. I guess you could look into configuring one disk as Journal, i.e. Set-PhysicalDisk -Usage Journal. I doubt it could be used the way you want.

Related Topic