  In large scale distributed storage systems (DSS) deployed in cloud computing,
correlated failures resulting in simultaneous failure (or, unavailability) of
blocks of nodes are common. In such scenarios, the stored data or a content of
a failed node can only be reconstructed from the available live nodes belonging
to the available blocks. To analyze the resilience of the system against such
block failures, this work introduces the framework of Block Failure Resilient
(BFR) codes, wherein the data (e.g., a file in DSS) can be decoded by reading
out from a same number of codeword symbols (nodes) from a subset of available
blocks of the underlying codeword. Further, repairable BFR codes are
introduced, wherein any codeword symbol in a failed block can be repaired by
contacting a subset of remaining blocks in the system. File size bounds for
repairable BFR codes are derived, and the trade-off between per node storage
and repair bandwidth is analyzed, and the corresponding minimum storage
regenerating (BFR-MSR) and minimum bandwidth regenerating (BFR-MBR) points are
derived. Explicit codes achieving the two operating points for a special case
of parameters are constructed, wherein the underlying regenerating codewords
are distributed to BFR codeword symbols according to combinatorial designs.
Finally, BFR locally repairable codes (BFR-LRC) are introduced, an upper bound
on the resilience is derived and optimal code construction are provided by a
concatenation of Gabidulin and MDS codes. Repair efficiency of BFR-LRC is
further studied via the use of BFR-MSR/MBR codes as local codes. Code
constructions achieving optimal resilience for BFR-MSR/MBR-LRCs are provided
for certain parameter regimes. Overall, this work introduces the framework of
block failures along with optimal code constructions, and the study of
architecture-aware coding for distributed storage systems.
