So im thinking of setting storage spaces to use 6 drives in windows 10 and setting the parity option for now.
If theres any other recommendations please let me know, Also on a side note does anyone think moving to windows server 2016 for my scenario will benefit in anyway, As I have a licence key available for free from work thats not being used.
It does not sound that you need 2016 server. It has more advanced manager application for each server feature. In case of Storage spaces it has cluster capabilities and redundancy among multiple servers. Storage leveling/tiering for hot data. Nothing that useful for home server.
However management application for storage spaces might give you a faster learning curve, as Windows 10 settings application are made in a way so the users would not hurt them self too much with thinking (obfuscate too much information and I always feel as I'm treated as an idiot).
The recipe for creating the volume would be:
- create the pool (Server Manager -> File and Storage Services)
- create virtual disk (manually by command line).
- format disk (I think I used good old Disk Manager for that).
I think in both cases Windows 10 and 2016 you can do everything by wizard (2016 Essentials has even two management applications, one like each Windows Server, the second comes with Essential edition - simpler - I do not recommend).
I actually played with every possible way to create storage spaces in 2016, including performance tests for my needs. And all setup wizards failed me, on creating the virtual disk, by using default settings that did not worked well for me).
The command for creating RAID6 equivalent (dual parity - virtual disk step) for me was:
New-VirtualDisk -StoragePoolFriendlyName MyPool -FriendlyName MyRAID6 -ResiliencySettingName Parity -NumberOfColumns 10 -PhysicalDiskRedundancy 2 -FaultDomainAwareness PhysicalDisk
-ProvisioningType Fixed -UseMaximumSize -WriteCacheSize 128GB
Most important settings are:
NumberOfColumns - how many physical disks will be used for the virtual disk
ResiliencySettingName - Simple (equivalent of RAID0), Parity (eq. RAID 5 or 6), Mirror (eq. RAID1).
PhysicalDiskRedundancy - for "parity"
NumberofDataCopies - for "mirror"
-ProvisioningType Fixed - important - allocates place on creation (else you will have growing virtual disk)
-WriteCacheSize - the most important parameter (default value is most probably not what you want). In case of RAID6 you want it too be big. In case of RAID0 you want it to be 0 (for best performance).
I had very bad performance in the begging (like 40MB/s writes on RAID6), until I fully understood that command line tool :
http://technet.microsoft.com/en-us/itpro/powershell/windows/storage/new-virtualdisk
There is also command for reading the settings - just in case you want to look what kind of nightmare was created by setup wizards based on your choices.
https://technet.microsoft.com/en-us/itpro/powershell/windows/storage/get-virtualdisk
I tried to find documentation about how exactly WriteCache is being used, but no luck. However I'm happy that with 128G value my 10 disk dual parity virtual disk performs at 300MB/s (sequential writes) which is close to what SMB can do via two gigabit NICs. I assume that writes are first done to cache area and then copied to permanent location with dual parity.
And as for formatting the virtual disk. Since idea behind Storage Spaces is to do layered storage system. I think you actually can format disk by Disk Manager and even create Dynamic Volumes over Storage Spaces (software RAID over software RAID). I think I created RAID0 over 2xRAID6 - I just have no free disks right now to confirm that.