If you plan on keeping this fileserver for a long, long, time, I would recommend the following;
1) Two Dual-port SATA controllers.
2) Four Hard Drives of the same model and size.
For starters,
*don't* use RAID5, use RAID 10.
Physically, here's what you want;
Code:
[Drive_0]----+
+[SATA_Controller_0]
[Drive_1]----+
[Drive_2]----+
+[SATA_Controller_1]
[Drive_3]----+
You'll create a software-based mirror (RAID1) between Drive_0 and Drive_2 (Example name: md10).
Another RAID1 between Drive_1 and Drive_3 (Example name: md11).
Then you'll "stripe" (RAID0) the two "mirrors", creating a RAID1+0 (aka RAID10).
So logically, you'll have this;
Code:
+---Drive_0 @ SATA_Controller_0
+--md10--+ (RAID1)
| +---Drive_2 @ SATA_Controller_1
md0--+(RAID0)
| +---Drive_0 @ SATA_Controller_0
+--md11--+ (RAID1)
+---Drive_2 @ SATA_Controller_1
Now, as for filesystems, you may (at some point) realize you don't need "one big filesystem". So I would suggest setting up "md0" as a volume group in LVM2. From there you can create any size of logical volumes you want.
Note that my example above doesn't cover the Operating System.
You might want a separate pair of disks in a RAID1 for that (using the OnBoard SATA controller).
I can speak to this method being both fast and durable, as you can survive two drive failures (one on each controller), and one controller failure.
I spent about $100 USD per hard drive, and about $80 per SATA controller (at that price, I bought an extra hard drive and an extra SATA controller so I'd be prepared for a failure).
EDIT: Word to the wise, make sure you use UUID numbers to identify the drives in your mdadm.conf file. If you ever start changing the order of the drives, that will save your bacon.