Some notes I have on this. These are general recommendations based on my experience and not hard and fast rules.
Ensure L2 adjacency to your VM hosts, crossing L3 boundaries will increase latency in almost every circumstance zx
Use mirrors not RAIDZ
Trade your CPU in for 2667 v2 IPC will be more important than cores.
Install only 1 dimm per channel per cpu in your motherboard, use fastest RAM your motherboard supports. You will need to review your motherboard’s manual to find what slots to use to do this. RAM LATENCY MATTERS! And I don’t mean in the gaming sense of min maxing CAS, I mean you have to use the optimal configuration above.
only cache metadata in ARC.
Code:
zfs set primarycache=metadata <dataset>
If you are going to use NFS, you’re going to want something really fast as a SLOG, but no matter what you choose this will be your bottleneck for writes. Alternatively you can set sync=never.
Of course there is inherent risk to data in motion by doing this, but when you’re trying to hot rod an 8 year old server, you gotta have some give and take.
Benchmarks? Spin up some VMs and simulate your workload as best you can and monitor key performance indicators. CPU usage, disk activity, network bandwidth.