Here's what I have observed after some testing with regards to Veeam 9.5 integration with ReFS and Storage Spaces.
For my environment.
### ReFS is only good for any method that synthesizes VBKs. Use cases:
1) Backup Copy Job with GFS policy as the GFS VBKs will be synthesized and they will also benefit from space saving. Thanks to Veeam's integration with Windows 2016 BlockCloning technology.
2) Primary Backup Job that synthesize VBKs instead of Active Full. I don't trust synthetic VBKs for my primary because I am also doing replication and BCJ from this source. Active Full does not take that long in my environment, a little over two hours for all the VMs.
### Since I am using method #1 (BCJ with GFS) above, creating full VBKs from scratch (requirement for Veeam to work with BlockCloning) on the newly formatted ReFS volume took some workaround as I didn't want to do an active full through the WAN again. If you have your old BCJ VBKs already at your DR Site, you can trick Veeam B&R to use those as source Backup Job Repo for the BCJ. Then once that is completed, you can point the BCJ's source back to your Production. If anyone wants to know how to do this, let me know.
### Storage Spaces sucks!
1) Parity Space in Windows 2016 is still as useless as the Windows 2012R2 version. It is super slow in terms of throughput/performance even if you use 2x SSD drives as Write Back Cache for a parity space with around 5 columns (more or less columns didn't matter much). It can not beat my good old hardware RAID with WBC/battery. Even at RAID 6, the hardware RAID still beats Storage Space parity with no sweat. Don't waste your time testing Windows 2016 Storage Space Parity. Search the web, there are updated articles about this. I've run through my own tests and confirmed this.
2) Mirror Space performance is on par with hardware RAID. Good for Veeam primary backup but wastes 50% of hard drive space if used for Veeam archival backup.
3) Storage Space (parity or mirror) with how it works with "column" are totally inefficient in terms of expansion. You have to expand by adding the exact amount of hard drive/columns. Make sure you understand columns thoroughly before venturing into Storage Space. Have to plan your column configuration in relation to expansion and enclosure available slots. With hardware RAID, just add one drive at a time in the case of parity (i.e. RAID6). For two-way mirror, just add two drives at a time. With Storage Spaces, good performance is recommended at around 4 columns, so you have to add 4 drives at a time! Additionally, as an example, say you use 5 columns parity space (5 hard drives) and expand with another 5 hard drive for a total of 10 drives, you are still only able to have one hard drive failed! Are you kidding me? Talk about inefficiency. I will stick with my hardware RAID 6, thank you.
4) What happens when a hard drive failed, does the failed drive on your enclosure blink red? Remember, Storage Spaces is software, so is it smart enough to work with your enclosure? With hardware RAID, even your boss can replace a failed hard drive.
Please correct me if I am wrong on the Storage Spaces observation above.
I decided that Storage Spaces is not worth the trouble just to have Integrity Stream benefit with Veeam 9.5 and ReFS. I do active full once a month anyway so I am not worry about the integrity of my backups.
I was looking forward to testing Storage Spaces Direct (aka Hyper Converge) but since expansion is so inefficient, I feel rather disappointed.
BTW, I have a NAS box using ZFS and it's totally awesome in terms of flexibility (iSCSI, FC, NFS) and performance. If only Microsoft would adopt ZFS instead of Storage Spaces...