Method for operating a disk storage system which stores video data so as to maintain the continuity of a plurality of video streams
AssigneeStarlight Networks
InventorsFouad A. Tobagi, Randall B. Baird, Joseph Mark Gang, Jr., Joseph W. M. Pang
Life of this patent
Estimating the term…
Abstract
A method for increasing the storage capacity of a video server which utilizes an array of disks is disclosed. The server is operated so that the continuity of a plurality of bit streams is maintained. The inventive method has advantageous characteristics with respect to storage capacity, streaming capacity, start-up latency of new streams, amount of required buffer capacity, scalability, reliability and multiple bit rates.
Claims31
A method for operating an array of N.sub.d storage units which is organized into N.sub.s sub-arrays of N.sub.a storage units,
- wherein data from one or more fries is striped across the entire array, with one segment in each stripe being allocated to each storage unit,
- said method comprising the steps of defining a sequence of I/O cycles having a duration determined according to the equation N.sub.s N.sub.a S/W.sub.base, where W.sub.base is a bit rate, and scheduling I/O transactions by determining which segments are to be fetched or stored within said I/O cycles to maintain the continuity of a plurality of data streams, the I/O cycles of each sub-array being offset from that of an adjacent sub-array by (1/N.sub.s) of an I/O cycle,
- said streams having production or consumption cycles having a duration of N.sub.a S/W.sub.base and produce segments to be written into or consume segments from the N.sub.s sub-arrays in a cyclic pattern,
- wherein the consumption of segments fetched from a sub-array in a particular I/O cycle is restricted to begin no earlier than the beginning of the next I/O cycle for the sub-array and the production of segments to be written into a sub-array in a particular I/O cycle is restricted to end no later than the end of the previous I/O cycle for the sub-array.
A method for operating an array of N.sub.d storage units
- wherein data from each of a plurality of files is stored in the storage units in segments of S bits and striped across N*.sub.d storage units where N*.sub.d .ltoreq.N.sub.d and where N*.sub.d is different for different files,
- said method comprising the steps of defining a sequence of I/O cycles having a duration determined according to the equation N.sub.c S/W.sub.base, where N.sub.c is an integer and W.sub.base is a base rate of bits per second, and scheduling I/O transactions by determining which segments are to be stored in or fetched from said storage units in said I/O cycles so as to maintain the continuity of a plurality of streams,
- a stream having a bit rate W.sub.base having N.sub.c I/O transactions in said storage units in each cycle, a stream having a bit rate larger than W.sub.base having more than N.sub.c I/O transactions in said storage units in each cycle and a stream having a bit rate smaller than W.sub.base having less than N.sub.c I/O transactions in each cycle.
A method for operating an array of N.sub.d storage units
- wherein data from a plurality of files is stored in said storage units in segments of S bits,
- wherein N*.sub.d consecutive segments from a file are allocated to N*.sub.d of said storage units where N*.sub.d <N.sub.d,
- said method comprising the steps of defining a sequence of I/O cycles having a duration determined by the equation N.sub.d 'S/W.sub.base, N.sub.d '<N.sub.d and scheduling I/O transactions by determining which segments are to be fetched or stored within said I/O cycles to maintain the continuity of a plurality of data stream,
- a stream with a bit rate W.sub.base having N.sub.d ' I/O transactions in each I/O cycle.
A method for operating an array of N.sub.d storage units,
- wherein data from a plurality of files are stored in said storage units in segments of S bits,
- wherein N.sub.d consecutive segments from a file are allocated so that there is one segment on each of the N.sub.d storage units,
- said method comprising the steps of defining a sequence of I/O cycles having a duration determined according to the equation N.sub.d 'S/W.sub.base, N.sub.d '<N.sub.d, wherein W.sub.base is a base rate of bits per second and scheduling I/O transactions by determining which segments are to be fetched or stored within said I/O cycles to maintain the continuity of a plurality of data streams,
- during one I/O transaction, a stream with a bit rate of W.sub.base fetching from or storing to each of N.sub.d ' storage units one segment in each I/O cycle, and
- during one I/O transaction, a stream with a bit rate other than W.sub.base fetching or storing fewer or greater than N.sub.d ' segments in each I/O cycle.
A method for operating an array of N.sub.d storage units,
- wherein said storage traits are organized into N.sub.s s sub-arrays of N.sub.a storage units each,
- wherein data from one or more files are organized into substripes comprised of N.sub.a consecutive segments of S bits,
- wherein said substripes are allocated to said sub-arrays so that each substripe is allocated to one sub-array,
- said method comprising the steps of:
- defining a sequence of I/O cycles having a duration determined according to the equation N.sub.a S/W.sub.base, wherein W.sub.base is a base rate of bits per second and scheduling I/O transactions by determining which segments are to be fetched or stored within said I/O cycles to maintain the continuity of a plurality of data streams,
- a stream with a bit rate of W.sub.base having N.sub.a I/O transactions in each I/O cycle such that one substripe of N.sub.a segments is fetched from or written into one sub-array.
Dependencies are inferred from the claim text.