A storage server for efficiently retrieving data from a plurality of disks in
response
to user access requests. The server comprises a plurality of processors coupled
to disjoint subsets of disks, and a custom non-blocking packet switch for routing
data from the processors to users. By tightly coupling the processors to disks
and employing an application-specific switch, congestion and disk scheduling bottlenecks
are minimized. By making efficient use of bandwidth, the architecture is also capable
of receiving real-time data streams from a remote source and distributing these
data streams to requesting users. The architecture is particularly well suited
to video-on-demand systems in which a video server stores a library of movies and
users submit requests to view particular movies.