  This paper addresses the problem of constructing MDS codes that enable exact
repair of each code block with small repair bandwidth, which refers to the
total amount of information flow from the remaining code blocks during the
repair process. This problem naturally arises in the context of distributed
storage systems as the node repair problem [7]. The constructions of
exact-repairable MDS codes with optimal repair-bandwidth require working with
large sub-packetization levels, which restricts their employment in practice.
  This paper presents constructions for MDS codes that simultaneously provide
both small repair bandwidth and small sub-packetization level. In particular,
this paper presents two general approaches to construct exact-repairable MDS
codes that aim at significantly reducing the required sub-packetization level
at the cost of slightly sub-optimal repair bandwidth. The first approach gives
MDS codes that have repair bandwidth at most twice the optimal
repair-bandwidth. Additionally, these codes also have the smallest possible
sub-packetization level $\ell = O(r)$, where $r$ denotes the number of parity
blocks. This approach is then generalized to design codes that have their
repair bandwidth approaching the optimal repair-bandwidth at the cost of
graceful increment in the required sub-packetization level. The second approach
transforms an MDS code with optimal repair-bandwidth and large
sub-packetization level into a longer MDS code with small sub-packetization
level and near-optimal repair bandwidth. For a given $r$, the obtained codes
have their sub-packetization level scaling logarithmically with the code
length. In addition, the obtained codes require field size only linear in the
code length and ensure load balancing among the intact code blocks in terms of
the information downloaded from these blocks during the exact reconstruction of
a code block.
