  Maximum distance separable (MDS) codes are optimal error-correcting codes in
the sense that they provide the maximum failure-tolerance for a given number of
parity nodes. Suppose that an MDS code with $k$ information nodes and $r=n-k$
parity nodes is used to encode data in a distributed storage system. It is
known that if $h$ out of the $n$ nodes are inaccessible and $d$ surviving
(helper) nodes are used to recover the lost data, then we need to download at
least $h/(d+h-k)$ fraction of the data stored in each of the helper nodes
(Dimakis et. al., 2010 and Cadambe et al., 2013). If this lower bound is
achieved for the repair of any $h$ erased nodes from any $d$ helper nodes, we
say that the MDS code has the $(h,d)$-optimal repair property.
  We study high-rate MDS array codes with the optimal repair property. Explicit
constructions of such codes in the literature are only available for the cases
where there are at most 3 parity nodes, and these existing constructions can
only optimally repair a single node failure by accessing all the surviving
nodes.
  In this paper, given any $r$ and $n$, we present two explicit constructions
of MDS array codes with the $(h,d)$-optimal repair property for all $h\le r$
and $k\le d\le n-h$ simultaneously. Codes in the first family can be
constructed over any base field $F$ as long as $|F|\ge sn,$ where
$s=\text{lcm}(1,2,\dots,r).$ The encoding, decoding, repair of failed nodes,
and update procedures of these codes all have low complexity. Codes in the
second family have the optimal access property and can be constructed over any
base field $F$ as long as $|F|\ge n+1.$ Moreover, both code families have the
optimal error resilience capability when repairing failed nodes. We also
construct several other related families of MDS codes with the optimal repair
property.
