  Fractional repetition (FR) codes are a class of regenerating codes for
distributed storage systems with an exact (table-based) repair process that is
also uncoded, i.e., upon failure, a node is regenerated by simply downloading
packets from the surviving nodes. In our work, we present constructions of FR
codes based on Steiner systems and resolvable combinatorial designs such as
affine geometries, Hadamard designs and mutually orthogonal Latin squares. The
failure resilience of our codes can be varied in a simple manner. We construct
codes with normalized repair bandwidth ($\beta$) strictly larger than one;
these cannot be obtained trivially from codes with $\beta = 1$. Furthermore, we
present the Kronecker product technique for generating new codes from existing
ones and elaborate on their properties. FR codes with locality are those where
the repair degree is smaller than the number of nodes contacted for
reconstructing the stored file. For these codes we establish a tradeoff between
the local repair property and failure resilience and construct codes that meet
this tradeoff. Much of prior work only provided lower bounds on the FR code
rate. In our work, for most of our constructions we determine the code rate for
certain parameter ranges.
