  Distributed storage systems need to store data redundantly in order to
provide some fault-tolerance and guarantee system reliability. Different coding
techniques have been proposed to provide the required redundancy more
efficiently than traditional replication schemes. However, compared to
replication, coding techniques are less efficient for repairing lost
redundancy, as they require retrieval of larger amounts of data from larger
subsets of storage nodes. To mitigate these problems, several recent works have
presented locally repairable codes designed to minimize the repair traffic and
the number of nodes involved per repair. Unfortunately, existing methods often
lead to codes where there is only one subset of nodes able to repair a piece of
lost data, limiting the local repairability to the availability of the nodes in
this subset. In this paper, we present a new family of locally repairable codes
that allows different trade-offs between the number of contacted nodes per
repair, and the number of different subsets of nodes that enable this repair.
We show that slightly increasing the number of contacted nodes per repair
allows to have repair alternatives, which in turn increases the probability of
being able to perform efficient repairs. Finally, we present pg-BLRC, an
explicit construction of locally repairable codes with multiple repair
alternatives, constructed from partial geometries, in particular from
Generalized Quadrangles. We show how these codes can achieve practical lengths
and high rates, while requiring a small number of nodes per repair, and
providing multiple repair alternatives.
