1. A distributed storage system comprising: memory hosts, each memory host having memory; and a curator in communication with the memory hosts, the curator managing striping of data across the memory hosts by: dividing a file into data stripes and replicating each data stripe; and allocating storage of the data stripes and data stripe replications on the memory hosts; wherein in response to a memory access request by a client in communication with the memory hosts and the curator, the curator providing the client a file descriptor mapping location information of the data stripes and the data stripe replications of the file on the memory hosts for remote direct memory access of the file by the client, wherein in response to the curator receiving a notification from the client indicating that one of the data stripe replicas on one of the memory hosts is corrupt during the remote direct memory access of the file, the curator attempting to reconstruct the corrupt data stripe replica, and when the curator is unable to reconstruct the corrupt data stripe replica, the curator replacing the corrupt data stripe replica with a new uninitialized data stripe replica.