poor performance after using 80%+.
Which, sadly, doesn't strike until they've gone through a bunch of write iterations on their virtual disk and fragmentation grabs them by the neck and starts shaking them.
8 disks total
4 for each vdev striped mirrors (raid10)
Then create a ZPOOL with two Vdevs
Useable space would be about 6TB right?
The description is wrong but the math is right. Bidule0hm summarized:
a pool of 4 vdevs striped together. Each vdev will be a mirror of 2 disks.
This is 24TB (3TB * 8) worth of raw space, which gives you 12TB (mirror tax) worth of pool space. The actual amount of usable space is debatable and depends extremely much on what the workload is.
The rule of thumb I would use says that 60% is the maximum you should try to use on a pool with VM storage. If you truly had a VM workload that did almost no writes ever, you might be able to push that towards 80%. More likely, you need to trim down from 60%, 50% being an intelligent guess for VM's that are doing modest writes. The problem is that if you get a VM that is doing truly heavy writes, fragmentation increases dramatically.
I present once again an
interesting discussion of the issue from Delphix.
Looking at the graph of % Pool Full vs Steady State Performance, you can see that lower percentages full have a dramatic impact on write performance. It is worth noting that all VM virtual disks over time will tend towards greater fragmentation as writes occur. Reducing unnecessary writes is an important tool in managing fragmentation. It may feel satisfying to do a buildworld on all your FreeBSD servers, but if it is being done on a VM with a ZFS-backed datastore, fragmentation++. Don't do that. And disable mostly-useless stuff like atime updates on your filesystems, because that's resulting in a perpetual trickle of trite writes.
Fragmentation is best combatted with large amounts of free space, which allows block allocation of contiguous regions. The only long-term fix to reduce fragmentation is to periodically rewrite a VM's virtual disks into fresh regions of contiguous space (stop VM, copy, start VM) but having sufficient free space greatly lengthens the amount of time it takes to reach the pain point.
So while I won't say that 6TB is a correct amount of usable space, I think it is at least a ballpark figure.