  A novel technique for construction of minimum storage regenerating (MSR)
codes is presented. Based on this technique, three explicit constructions of
MSR codes are given. The first two constructions provide access-optimal MSR
codes, with two and three parities, respectively, which attain the
sub-packetization bound for access-optimal codes. The third construction
provides longer MSR codes with three parities, which are not access-optimal,
and do not necessarily attain the sub-packetization bound.
  In addition to a minimum storage in a node, all three constructions allow the
entire data to be recovered from a minimal number of storage nodes. That is,
given storage $\ell$ in each node, the entire stored data can be recovered from
any $2\log_2 \ell$ for 2 parity nodes, and either $3\log_3\ell$ or
$4\log_3\ell$ for 3 parity nodes. Second, in the first two constructions, a
helper node accesses the minimum number of its symbols for repair of a failed
node (access-optimality). The generator matrix of these codes is based on
perfect matchings of complete graphs and hypergraphs, and on a rational
canonical form of matrices. The goal of this paper is to provide a construction
of such optimal codes over the smallest possible finite fields. For two
parities, the field size is reduced by a factor of two for access-optimal codes
compared to previous constructions. For three parities, in the first
construction the field size is $6\log_3 \ell+1$ (or $3\log_3 \ell+1$ for fields
with characteristic 2), and in the second construction the field size is
larger, yet linear in $\log_3\ell$. Both constructions with 3 parities provide
a significant improvement over existing previous works, since only non-explicit
constructions with exponential field size (in $\log_3\ell$) were known so far.
