  Distributed storage systems (DSSs) provide a scalable solution for reliably
storing massive amounts of data coming from various sources. Heterogeneity of
these data sources often means different data classes (types) exist in a DSS,
each needing a different level of quality of service (QoS). As a result,
efficient data storage and retrieval processes that satisfy various QoS
requirements are needed. This paper studies storage allocation, meaning how
data of different classes must be spread over the set of storage nodes of a
DSS. More specifically, assuming a probabilistic access to the storage nodes,
we aim at maximizing the weighted sum of the probability of successful data
recovery of data classes, when for each class a minimum QoS (probability of
successful recovery) is guaranteed. Solving this optimization problem for a
general setup is intractable. Thus, we find the optimal storage allocation when
the data of each class is spread minimally over the storage nodes, i.e. minimal
spreading allocation (MSA). Using upper bounds on the performance of the
optimal storage allocation, we show that the optimal MSA allocation approaches
the optimal performance in many practical cases. Computer simulations are also
presented to better illustrate the results.
