The goal of storage hierarchies is to combine several storage technologies in such a way as to approach the performance of the fastest component technology and the cost of the least expensive one. This paper presents optimization techniques for a storage hierarchy subject to quantity-sensitive component costs. It is assumed that a finite (and probably small) set of technologies is available. Each technology is characterized by an access time and two cost parameters. We assume that statistical summaries of address sequences are available. We present solutions to four problems of increasing complexity: 1) minimization of access time for a fixed cost and preassigned page sizes; 2) optimization of a generalized price-performance function under preassigned page sizes; 3) minimization of access time for a fixed cost when page sizes are allowed to vary; 4) optimization of a generalized price-performance function when page sizes are allowed to vary.