Stripe-sets via Storage Spaces
I had a bunch of spinning disks sitting around I wanted to stripe together as build output targets. The RAID hardware in my desktop is known to be flaky, so I decided to try out Storage Spaces. The default "simple" storage space doesn't actually span all disks in the pool - it attempts to keep copies of data together, and is optimized for making a volume that's larger than any individual disk.
Some bing-ing and stack-overflow later and I came up with the following powershell.
# Remove all pool members
Get-StoragePool -FriendlyName MyPool | Get-VirtualDisk | Remove-VirtualDisk
"x","y","z" | %{
$letter = $_
New-VirtualDisk -StoragePoolFriendlyName MyPool -ResiliencySettingName Simple -FriendlyName output_disk -Size 500gb -ProvisioningType Fixed -NumberOfDataCopies 1 -NumberOfColumns 4 | Get-Disk | Initialize-Disk -Passthru | New-Partition -DriveLetter $letter -UseMaximumSize
$driveletter = $letter+":"
format $driveletter /fs:ntfs /q /x /a:64K
}
Note that you'll need to have created the pool with the name "MyPool". Replace the "-Size" parameter with your desired size, and set "-NumberOfColumns" to the number of physical disks in the pool. (I'm sure I could determine that from the pool object in the future.
Et voila - a real actual stripeset! I had three builds, so I used x/y/z as the outputs.
FWIW, this setup got me within ~10% of the build time using an SSD for the output, without the SSD cost.