MooseFS is a fault tolerant distributed storage system. It is verry easy to configure, install and maintain.
It consists in one metaserver and multiple chunkservers installed over the network. Chunkservers can be added and removed at any time neither it requires to stop the the filesystem nor to reconfigure the metaserver.
MooseFS will split your files into chunk and distribute them across connected chunkservers. Assuming that each chunkserver is installed on a standalone computer it is possible to shutdown one or more servers and the filesystem will continue functioning normally.
The number of copies of each chunk they call it goal. Each folder has a goal attribute inherited from the parent folder or changed manually. When a file is created inside a folder it will have the goal of that folder. I think by default the main folder ( / ) gets goal 2.
The package also includes tools to change the goal of files and folders manually, individually or recursive.
When a chunkserver goes off (ie. network failure, hardware failure etc.) the metaserver will internally recalculate goals and start copying under goal chunks to other chunkservers until all files have the desired number of copies.
Each chunkserver will participate with storage space ( local folders ) and the total available space will be the sum of all participating chunkservers. For the space to be calculated correctly mfs developpers asks that no other files should be saved to those folders and also each folder should be the root mount point of the partition
Example:
if you have partition /dev/sdb2 and mount it in /mnt/sdb2/ you should not save any data in /mnt/sdb2/ and the folder shared to moose filesystem should be /mnt/sdb2/ not /mnt/sdb2/folderX/