I want to create a simple file upload server. The server should be able to handle files of 10 GB size each, and around 10,000 files.
I wonder what is the best architecture for that – use file system or database?
Do I have to use RAID? Is there any way to implement this requirement for free?
What are the cheapest options I have?
You will need a database with a list of the files, and a file system that actually stores the files.
Basically, no. RAID is a collection of various schemas of setting up hard disk drives, for both speed and reliability at the expense of the extra cost associated with extra drives. If you’re looking to have a server that can hold 100 Terabytes, it could be worthwhile to have the drives striped together to form one very large logical disk instead of many smaller drives, with a parity drive for data security. RAID is either a built-in controller on the motherboard, or, if you’re looking to use a few dozen hardddisks, you will need a special power supply and dedicated RAID controller. At this point it’d be more cost-effective to look into renting storage space in the cloud, though I wouldn’t ask for a hundred terabytes yet, I’d try to scale as you grow.
No. Raid controllers are very costly (at minimum $300 for an 8-port) and so will any decent set of harddrives big enough for your requirement. You could start out with a 4-disk setup and use the motherboard’s built-in RAID tools (available on many higher-end motherboards) and when the time comes, move to using a bigger RAID card.
Look into cloud storage. It will cost a lot less overall, especially including two points that haven’t been brought up: power consumption and the cost of the network connection.