On-demand video servers based on hierarchical storage system offer high-capacity and low- cost video storage. In such a system, video files are stored in the tertiary level and transferred to the secondary level to be displayed. We have studied the architecture and performance of a hierarchical storage system for an on-demand video server. Our objectives are to understand its performance characteristics, and to design such a server to meet specific application requirements. The secondary level in the hierarchical storage system is characterized by its bandwidth and storage capacity, while the tertiary level is characterized by its number of drives, drive bandwidth and exchange latency. The performance measure we mainly consider here is user delay. We show that, given a certain delay requirement, non-uniform video popularity can reduce the secondary storage requirement tremendously compared with the uniform-popularity case. We also found that secondary bandwidth, secondary storage capacity and tertiary bandwidth can generally be traded with each other to achieve the same average delay performance. However, there is a limit in such 'trade-off.' Furthermore, our study indicates that increasing a system resource (e.g., secondary bandwidth, secondary storage capacity or tertiary bandwidth) in the hierarchical storage system does not always lead to better performance. Therefore, in designing a server based on hierarchical storage system, balancing various system resources is very important. We finally provide some methodologies in designing a server given a certain delay requirement, by taking into account current storage technologies.