  Modern distributed storage systems apply redundancy coding techniques to
stored data. One form of redundancy is based on regenerating codes, which can
minimize the repair bandwidth, i.e., the amount of data transferred when
repairing a failed storage node. Existing regenerating codes mainly require
surviving storage nodes encode data during repair. In this paper, we study
functional minimum storage regenerating (FMSR) codes, which enable uncoded
repair without the encoding requirement in surviving nodes, while preserving
the minimum repair bandwidth guarantees and also minimizing disk reads. Under
double-fault tolerance settings, we formally prove the existence of FMSR codes,
and provide a deterministic FMSR code construction that can significantly speed
up the repair process. We further implement and evaluate our deterministic FMSR
codes to show the benefits. Our work is built atop a practical cloud storage
system that implements FMSR codes, and we provide theoretical validation to
justify the practicality of FMSR codes.
