I need a NAS for a company of ~30 people. We make games (a lot of large files, large git repositories, not much else.) I'm thinking of buying cheap components and building it myself, using something like FreeNAS. (Assume that it is a viable option, price-wise.)
I'll list my needs and concerns below, but my main question is this: is it easy enough to build and administer, or should I just buy a commercial NAS (I have used Synology and it fits all my needs.)
Data integrity is paramount (obviously!) but I don't need 100% uptime. If the CPU dies, I can take 2 hours to replace it.
It should not need constant tinkering and maintenance. I want to stick the box in a corner somewhere and just log into it once a month or so when I want to add a repo or user. That being said, I can tolerate a moderate amount of work and complexity to set up the box, or a new service; but after that I want it to "Just Work".
I want to start off with a bunch of different sized hard disks (basically what we have lying around,) and continue to upgrade them one by one with disks of different sizes as space runs low or they die. It is unacceptable for me to have to buy 8x4TB disks today and then replace them all at the same time with 8x10TB disks when the array runs out of space in two years. (Synology's Hybrid RAID does a great job here; a feature which I am yet to find in other commercial NAS boxes.)
Should have a graphical user interface (ideally, web-based or something) for common tasks for non-technical users.
The most important services I'll be running on this box will be Samba shares, and Git repositories. I need access control (nothing too fancy or complex) and good network support.
Is FreeNAS the right OS for this? I can run a Linux distro and set everything I want up using software RAID and LVM and whatnot, but that is a little out of my acceptable complexity range (or right at its edge,) and I prefer something simpler and more straightforward for the job.
If FreeNAS is the way to go, then I'll be worried about it being based on FreeBSD, with which I have no experience. Is it really too different from Linux? (I'm quite comfortable in almost any Linux terminal.) I have little problem with building software from source, but a good package manager (a la apt, etc.) is a huge plus. Should I expect any problems in hardware support? (basically the only special hardware that I can think of will be the NICs.)
Is ZFS the way to go? From what I read, ZFS (and RAIDZ) is pretty awesome and basically what I've been looking for my whole life! Is it? What are the gotchas and the most important things I have to keep in mind, coming from basic hardware RAID/LVM, and ext4/NTFS world?
I'm thinking that a cheap 2- or 4-core CPU, and ~4GB of RAM will be enough to run this. Is it? This is hardly critical, but I'd like to know if I'm way off.
Network link aggregation (NIC bonding) is pretty painless in Linux. I'm reading that FreeBSD is the same. Is it?
I'm going to be putting several terabytes of mostly irreplaceable data into this box; data that will be very hard to move if this doesn't work out. What else should I research, think about, or keep in mind?
I know I'm basically asking the community for consultation! But I'd really appreciate any and all help. Thank you.
UPDATE: One important question I forgot: in such a system, what would the process of replacing a hard disk be like? (either because of failure, or an upgrade.) Is it too hard? (please excuse the too obvious pun!)
UPDATE 2: Based on the answers below, and other "research," I've decided on the following strategy. I'm writing it here on the off-chance that it would be useful to someone else in my situation. (This is not a final decision; but rather a procedure for further investigation.)
I'm going to buy the hardware components (I'm going to use cheap stuff, since the only load will be I/O, and limited by a GbE pair) and with the free disks we have lying around, build a FreeNAS-based appliance (although with more RAM than I originally intended.) I'll build the storage array, and before putting any real data on it, will play around with it for a bit (We're in no rush.)
If the underlying FreeBSD proves too much of an alien beast, I'll probably switch the same test system to Linux and ZFS (and other software mentioned in the accepted answer below.)
If that doesn't satisfy either, I'll definitely give
unRAID a try.
If none of the above work out, I'll just re-purpose the box for something else, and buy an off-the-shelf NAS (probably Synology 1817 or something like that.)
At any point, if I'm sure that I can maintain and serve my data on/from any of the above solutions, I'll start moving our actual stuff over.