  We study the capacity of heterogeneous distributed storage systems under
repair dynamics. Examples of these systems include peer-to-peer storage clouds,
wireless, and Internet caching systems. Nodes in a heterogeneous system can
have different storage capacities and different repair bandwidths. We give
lower and upper bounds on the system capacity. These bounds depend on either
the average resources per node, or on a detailed knowledge of the node
characteristics. Moreover, we study the case in which nodes may be compromised
by an eavesdropper, and give bounds on the system secrecy capacity. One
implication of our results is that symmetric repair maximizes the capacity of a
homogeneous system, which justifies the model widely used in the literature.
