ZFS will use RAM automatically to minimise disk activity via serialization of writes (e.g., lots of small random writes hit RAM first where they can turned into a big single stripe write to hit the disks) and as a read cache (i.e., no need to set up a RAM disk - ZFS will grab/use the RAM for that sort of thing itself).
ZFS really requires decoupling your thinking from “i have these disks and i plan to use them for these purposes”; it doesn’t work like a regular filesystem and is a bit more than a traditional FS. It integrates a logical volume manager and various other additional features to be able to make better use of resources (for storage purposes) than a traditional filesystem + raid controller + LVM/partition set up.
The concept with ZFS is that all system resources are used for storage as deemed appropriate by the kernel, which has a better idea of what is going on and what demands caching, etc. than the user does normally (and can do it on a block level rather than file or folder level).
The more spindles/cache/ram you can throw at a zpool the better the system can optimize use of resources as appropriate. Another way of saying that is that anything you take away from it for RAMDISK or different storage pool, etc. reduces its ability to make use of those resources, reducing performance.
For what you describe as your use case (headless storage), i’d seriously recommend FreeNAS with a ZFS mirror for your spinning rust, and look into using the SSD as an L2ARC (read cache) and/or LOG (write cache) device. FreeNAS is intended to be booted from USB stick (or other seperate storage) so that it is fully decoupled from your storage media. In the event your FreeNAS box dies, you can plug all your drives into any ZFS capable box (in any order, etc.) and get the data back. You also get performance monitoring, web GUI for ZFS, email alerts for disk failures, etc., etc. that you probably won’t get from a roll-your-own ZFS on lInux set up.
It’s not Linux, but from the sounds of it you’re planning to basically reinvent FreeNAS on linux if you go down that route…
edit:
All that said, unless you’re on some high speed network, SSD may be overkill. Gigabit ethernet won’t keep up with a pair of decent modern hard drives for large (singular) reads or writes. If your workload involves lots of small random reads and writes though (or you have many users) the SSD will help.
I’d maybe build it without the SSDs (keep them aside until you finish testing) and see if the system is fast enough without them. L2ARC or LOG devices can be set up with them afterwards without needing to reinstall or destroy your pool. That way if you find they aren’t required you can use them for something else
- whereas building with them from the outset you’ll never know if you could happily live without them in there.