Storage subsystems have become one of the most important components in computer systems nowadays and have been expanded to include all three levels of memory hierarchy, namely the cache, the secondary and the tertiary storage. This paper presents a study of data block prefetching and caching over the two upper storage levels in a hierarchical storage model, by proposing techniques for data amortization from tertiary to secondary and from secondary to cache levels. Each level reserves a speci