Reliable/redundant array of independent/inexpensive nodes (RAIN) is an architectural approach to computing and network-attached computer storage (or NAS), that combines commodity or low-cost computing hardware with management software to address the reliability and availability shortcomings of non-redundant NAS systems.
While RAID protects data stored at the physical disk (or 'block') level, RAIN protects data stored at the file-system level, hence RAIN and RAID differ architecturally only in terms of the level of abstraction at which they are implemented. Instead of storing multiple copies of the same data on physically separate hard disks on a server, data is replicated to multiple servers. The software that manages the array of RAIN servers knows where each copy is and, in the event of a server failure, can make additional copies (RAID-1 or 'mirroring') or use a parity-based RAID scheme (RAID-5 or similar) as necessary to keep an appropriate level of redundancy.
RAIN can also be used with tasks which require many instructions per second to be processed. Instead of using a "tightly-coupled" computing cluster with specialized hardware, arrays of inexpensive RAIN nodes can be assembled. The management software transmits tasks to various computers and, in the event of a failure, will retry the task until a node responds. Many distributed computing projects utilize, to some degree, a RAIN strategy.
Many of the distributed file sharing services such as Gnutella and eDonkey are somewhat similar to RAIN systems, but they do not provide adequate redundancy by design—if none of the sharing users online have a copy of some part of a file, the file becomes inaccessible. A distributed hash table is a better basis for implementing such a service, and the few large-scale distributed file systems that exist are based on them (for example, the Chord, Coral, and Tahoe-LAFS projects).