Memory

How much RAM do you need for a OmniOS/ Solaris ZFS server?

There is no special requirement for Solaris or ZFS.You should give a 64bit OS like Solaris or OmniOS at least 2 GB RAM and it is stable

But with this RAM, any disk request must be readed from disk. You cannot use the advanced caching mechanism of ZFS. If you add more RAM, this is used as a very sophisticated readcache. This is where performance comes from. It can be quite normal on a ZFS system that 80-90% of any read is answered from fast memory not slow disks.

For a general use filer with a few users, 4-16 GB RAM is quite normal. With many users, many or large files or special needs regarding IOPS, RAM can go up to 128GB RAM and more.

ATTENTION:

If you use ZFS realtime dedup! Now any datablock is hashed and only written to disk when it is unique on a whole pool. Otherwise only a reference is saved. This means that for every read or write, the whole hash-table must be processed. This must be done in RAM otherwise the whole system can become unusable slow (delete a snap can last days etc).

The RAM needs for dedup can go up to about 5 GB RAM per TB data. This RAM should be provided additionally to the RAM that you want as readcache. In any case, with dedup, you should add a fast SSD as L2ARC.

Is ECC desired for a ZFS server?

Yes it is, always prefer ECC whenever possible - but not only for a ZFS server but for any server. With Multi-GB RAM, you must otherwise expect undetected memory errors from time to time. They may result in a kernel panic, an application crash or in data corruptions. With ZFS this is a special problem as you have selected ZFS to repair or report any file errors. Undetected memory errors can produce undetected data errors on disk.

Is ECC mandatory (do not use ZFS without ECC)

While datacorruption can happen, without ZFS (ext4, HFS, NTFS) you will have undetected file errors more often as a silent disk error on a Multi-Terabyte array is more propable than a RAM error on a Multi-GB RAM.

There are discussions, that the self-healing feature can produce a damaged pool without ECC due to irregular fixes on any read. But if that would be true, the forums would be full of people loosing their pools. It would also need a RAM error on read and on repairing the data without a more probable kernel panic or crash. If you are concerned about this (and do not have the better option of secure ECC RAM), you can also disable checksums to enjoy all other features like Copy On Write (always consistent fs) and snaps.