It all depends on your needs. A home NAS can be a simple external drive+ethernet or an 18-disk software RAID5 + journaling + encryption array on FreeBSD, such as in my case. The simplest option would be Windows with either onboard RAID or a hardware controller.
However, picking Linux or - my preference - FreeBSD can have certain advantages, especially if you start having more demands on your storage or data-reliability or you have heard about ZFS and want it for yourself. If you want to explore that road, i might be able to help you since there's not alot of info on the net. Even if you never worked with Linux and never heard about FreeBSD, a project known as FreeNAS is dedicated to serving files over a network and provides a very simple web-interface and easy installation.
The advantage of this is that you can use powerful Software RAID engines allowing RAID5 and even RAID6 with very fast write speeds and a much more reliable operation than possible with Intel MatrixRAID (where any due writes saved in RAM are lost when the system doesn't shutdown properly and NTFS' journaling is not able to protect all data in such a case). Normally dedicated Hardware RAID cards use a BBU (Battery Backup Unit) to keep power on the onboard RAM chips to prevent corruption/loss of data. Software implementations available on Linux, FreeBSD (mostly any OS that isn't Windows) allow you to save the need for an expensive controller and run a very modern and safe implementation of RAID5 (or RAID6) on the motherboard's SATA ports. You can also expand by using add-on controllers, which sell for 15 euro at the right place offering 2 ports on PCI-express X1 slot. Never buy a PCI controller, or it will be obsolete already. So even if you have 12 disks connected to 4 different controllers, Software RAID won't care; the controllers have no knowledge about the drives being in a RAID configuration.
That's just an option for you to consider, think about what would best suit your needs and what priorities to set:
- would the benefit of having a real controller outweigh the costs of such a solution?
- how much performance do you need?
- how much capacity do you need?
- how important is it to have expansion support?
- how important is your data, how much of a reliable system you need? (intel ICHxR driver fails here; NTFS is not suited to protect against RAM writeback cache)
- how much time and patience do you have to spend configuring a working storage system? (important if you consider running Linux or FreeBSD)
- will my needs change in the future?
You can go as serious as you want once you explore storage, but for people who want something simple an add-on controller with BBU using Windows makes your life free of hassle and worries. If you like storage alot, like me, and want to explore ways to build a cheap, low-power, ultra-performing, reliable NAS and use modern raid-engines and modern filesystems, a NAS based on Linux or FreeBSD/FreeNAS is highly recommended.
Question 1:
If you are only building a home/file server, you shouldn't worry with a dedicated card. Part of your processor will be used to calculate the file allocation in the array, so the higher the number of drives, higher will be the processor utilization. Also, RAID5 uses a lot more the processor than RAID0 or RAID1 for instance, due to the nature of the array. Dual Cores (and especially Quad Cores) have enough room to run the MB array with no major issues.
The CPU usage does necessarily have to rise as the array gets bigger. Modern drivers (at least geom_raid5 driver under FreeBSD) read only the metadata+datablock and not all the parity when this is not required; meaning the relative CPU usage of the raid5 driver does not grow as more disks are added to the array. It only grows because it is able to move data faster. A good method is to calculate the CPU time per 100MB/s of sequential write throughput, so if you get 50MB/s and the CPU usage is 2% the normalized CPU usage per 100MB/s is 4%. Those values you can compare between RAID-engines.
Also, many drivers, and i think virtually all on Windows, are not able to use more than 1 processor core. But RAID5 performance does not depend on your CPU but on the driver itself. There are dumb drivers (all that onboard fake RAID stuff with the exception of Intel ICHxR RAID5 being mediocre) and smart drivers (such as geom_raid5 on FreeBSD/FreeNAS or ZFS RAID-Z available native on FreeBSD and OpenSolaris).
Thus, you need a smart RAID5 driver in order provide high write speeds; nothing on Windows exists to my knowledge that comes close to the performance offered on FreeBSD.
I am currently running a RAID0 with 3 500 Gb drives and it is blazing fast, with CPU utilization around 1-4%. Same setup on RAID5 was using over 10% and with painful writing speeds, so I switched to RAID0 and now it's a rocket.
If the CPU usage while using RAID5 configuration was only 10%, then that's a clear confirmation the performance is not CPU-bound. Any single core would be fast enough to deliver 200MB/s+ of RAID5 performance, given a good driver.
Question 2:
AFAIK no. Once you have the array set up, you can hot swap a defective drive, but I believe you can't add more drives to the array. However, I am not 100% sure about this one, so maybe another opinion will be very wise.
Expansion support is also still missing for ZFS in RAID-Z configurations. I've written an expansion script for the geom_raid5 driver, but it's still experimental. Expansion on a controller like Areca works great though, just remember you need to grow the partition and filesystem afterwards, too.
Question 3:
(faster drives will slow down to match the weakest one)
If you configure an array right, so that 1 I/O requests always lands on one disk, then 3 fast drives + 1 slow drive will still be much faster than 4 slow drives. Tweakers.net also had benchmarks indicating an older WD Raptor with newer WD Raptor in RAID0 config, was still faster than two older raptors.
and they need to have (in RAID arrays) is the same capacity, otherwise the bigger drives will be set up with the size of the smaller drive. For instance, two 500 gb and one 320 gb will give you an array of 940 gb and not 1320 gb in RAID0, because it will "decrease" the capacity of the bigger drives to match the smallest one.
ZFS is a bit smarter here, and can use drives of varying capacity in RAID0 configuration without any capacity being lost. Though it might degrade performance for some parts because it reads from a single disk instead of multiple disks.
Sorry for the long post, once i get started...