aufalien
Patron
- Joined
- Jul 25, 2013
- Messages
- 374
Maximizing the performance of the pool by disabling sync also opens you up to corruption during data transfers / writes should the power fail, etc while it’s happening.
I prefer allowing the OS to decide that which is sync required, and what is not sync required. But it all comes down to use case. My pool is primarily for dormant data, not scratch, etc. Hence the Z3, and so on.
Ah yes I see what you mean.
So back in the FreeNAS 9.x days I had implemented async and would on occasion yank power to various JBODs (I've between 4 to 8 on any given server), server head units etc... Keep in mind I've ~300 NFS clients which is very modest but I wanted to see what would happen.
I then power cycle everything cleanly and the worst that happened was a corrupt file that was in transit. The file system itself and data on it were fine.
I attribute this to ZFS being copy on write which is marvelous.
I also have no ZIL, L2ARC.
The thing I realized about ZFS which I don't think can ever be really remedied are that when Solaris developed it, there goals for a modern file system were;
Robust
Secure
Scalable
No were was speed/performance in the top 3.
Like you said, it's use case so if one has large writes in transits or hosting a database, then sync all the way as async during hardware failure would be a PITA.
But SATA sux. I would prefer SAS but they are not high density enough and using SSD for frequent writes in my env is not good either.