Automatic design of dependable data storage systems

Constructing dependable storage systems is difficult, because there are many techniques to pick from that interact in often unforeseen ways. The resulting storage systems are often either over-provisioned, or provide inadequate protection, or both. We assert that automating our way out of this dilemma is both desirable and achievable, and we present some lessons we have learned from our initial efforts at doing so. The result is a first step down the path of self-managing, dependability-aware storage systems, including a better understanding of the problem space and its tradeoffs, and a number of insights that we believe will be helpful to others.