1. A distributed file storage system configured to provide data recovery comprising: a plurality of storage modules in communication via a network, each of the plurality of storage modules configured to process at least one of read and write requests on behalf of the entire distributed storage system; file metadata that identifies the location of data blocks comprising a file stored on the storage system, wherein the data blocks are distributed across at least some of the plurality of storage modules, and wherein the file metadata is stored on at least two, but not all of the plurality of storage modules; and a data recovery module configured to reconstruct portions of the file corresponding to data blocks on failed storage modules, wherein the reconstructed data blocks are stored in available data storage locations on the storage modules, and wherein the file metadata is updated to identify the new data storage locations.