WikiPatents - Community Patent Review
Create Free Account  |  License or Sell Your Patent  |  WikiPatents Marketplace  |  WikiPatents Blog
Username:  Password:  
    
Advanced Search
Method for operating a disk storage system which stores video data so as to maintain the continuity of a plurality of video streams    
United States Patent5732239   
Link to this pagehttp://www.wikipatents.com/5732239.html
Inventor(s)Tobagi; Fouad A. (Los Altos, CA); Baird; Randall B. (San Jose, CA); Gang, Jr.; Joseph Mark (Saratoga, CA); Pang; Joseph W. M. (Fremont, CA)
AbstractA 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.
   














 Title Information Submit all comments and votes
 
Patent Text Patent PDF Print Page Summary File History
Plain text PDF images Print Summary File History
Inventor     Tobagi; Fouad A. (Los Altos, CA); Baird; Randall B. (San Jose, CA); Gang, Jr.; Joseph Mark (Saratoga, CA); Pang; Joseph W. M. (Fremont, CA)
Owner/Assignee     Starlight Networks (Mountain View, CA)
Patent assignment
All assignments
Publication Date     March 24, 1998
Application Number     08/246,220
PAIR File History     Application Data   Transaction History
Image File Wrapper   Patent Term   Fees
Litigation
Filing Date     May 19, 1994
US Classification     711/114 710/6
Int'l Classification     G06F 013/20 G06F 012/08
Examiner     Chan; Eddie P.
Assistant Examiner     Ellis; Kevin L.
Attorney/Law Firm     Meltzer, Lippe, Goldstein, et al.
Address
Parent Case     RELATED APPLICATION A patent application entitled METHOD OF OPERATING A DISK STORAGE SYSTEM has been filed for Fouad A. Tobagi, Joseph M. Gang, Jr., Randall B. Baird, Joseph W. M. Pang, and Martin J. McFadden on Nov 17, 1992, bears Ser. No. 07/977,493, now U.S. Pat. No. 5,581,784, and is assigned to the assignee hereof. Another patent application entitled VIDEO APPLICATION SERVER has been filed for James E. Long, Joseph M. Gang, Jr., Charles J. Bedard, Randall B. Baird, and David A. Edwards on Jun. 24, 1993, bears Ser. No. 08/082,227, now U.S. Pat. No. 5,556,982, and is assigned to the assignee hereof. The above-identified applications contain subject matter related to the subject matter of the present application and are incorporated herein by reference.
Priority Data    
USPTO Field of Search     395/441 395/440 395/439 395/826
Patent Tags     operating disk storage which stores video data so as maintain continuity plurality video streams
   
Enter a comma (,) or semicolon (;) between multiple tag words/phrases.
Describe this patent:
 Amusing   
 Clever   
 Complex   
 Efficient   
 Historic   
 Important   
 Innovative   
 Interesting   
 Practical   
 Simple   
[no votes]
Patent WIKI

Share information and news about this patent, including information and news about the technology, inventors, company, ligation and licensing.

 References Submit all comments and votes
 
*references marked with an asterisk below are user-added references
 U.S. References
 
Add a new US reference:  
ReferenceRelevancyCommentsReferenceRelevancyComments
5448315
Soohoo
348/722
Sep,1995

[0 after 0 votes]
5440683
Nally

Aug,1995

[0 after 0 votes]
5331417
Soohoo
348/584
Jul,1994

[0 after 0 votes]
5301297
Menon
711/114
Apr,1994

[0 after 0 votes]
5263145
Brady
711/114
Nov,1993

[0 after 0 votes]
5261072
Siegel
710/22
Nov,1993

[0 after 0 votes]
5220653
Miro

Jun,1993

[0 after 0 votes]
5218695
Noveck

Jun,1993

[0 after 0 votes]
5197143
Lary
710/305
Mar,1993

[0 after 0 votes]
5140683
Gallo
711/117
Aug,1992

[0 after 0 votes]
5008819
Gorbatenko

Apr,1991

[0 after 0 votes]
4688168
Gudaitis
710/107
Aug,1987

[0 after 0 votes]
4636946
Hartung
711/136
Jan,1987

[0 after 0 votes]
4536836
Dodd
711/113
Aug,1985

[0 after 0 votes]
 Foreign References
 Other References
 Market Review Submit all comments and votes
   
Market Size
Estimate the gross annual revenues of the relevant market sector:
> $10B
$5B - $10B
$2B - $5B
$500M - $2B
$100M - $500M
$10M - $100M
$1M - $10M
$500K - $1M
$100K - $500K
< $100K
[No votes]
$0
 
$0   $2.5B   $5B   $7.5B   $10B
Market Share
Estimate the percentage of the relevant market sector this invention will capture:
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Reasonable Royalty
What percentage of gross sales should the inventor or assignee be paid?
75% - 100%
50% - 74.99%
25% - 49.99%
10 - 24.99%
5 - 9.99%
2 - 4.99%
1 - 1.99%
< 1%
[No votes]
0.0%
 
0%   25%   50%   75%   100%
Public's "Guesstimation" of Royalty Value
Market SizeN/A[No votes]
xMarket ShareN/A[No votes]
xReasonable RoyaltyN/A[No votes]

N/A

License Availablity
If you are NOT the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
License Availablity
If you ARE the owner or assignee, answer here:
Yes, license is available for purchase

No, license is not currently available



[No votes]
Competitive Advantage
Does this invention have a significant competitive advantage over similar technologies?
Yes

No



[No votes]
Most helpful competitive advantage comment
[No comments]

Commercial Alternatives
Are there viable commercial alternatives for this invention?
Yes

No



[No votes]
Most helpful commercial alternative comment
[No comments]

 Technical Review Submit all comments and votes
 Claims Submit all comments and votes
 


We claim:

1. 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.

2. 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.

3. 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.

4. The method of claim 3 wherein N*.sub.d is different for different files.

5. 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.

6. The method of claim 5 wherein for each I/O cycle, all of the I/O transactions scheduled within each such cycle from said plurality of streams are sorted separately according to locations of the segments on each storage unit.

7. The method of claim 5 wherein each of said storage units is a disk.

8. The method of claim 5 wherein said cycles are grouped into super-cycles comprised of N.sub.super cycles, and in cycle i of a super-cycle, stream j has L.sub.i,j I/O transactions where L.sub.i,j is an integer.

9. The method of claim 5 wherein the number N.sub.d ' is different for different streams.

10. The method of claim 5 wherein each of said storage units is an array of disks.

11. The method of claim 10 wherein a server is associated with each array of disks.

12. The method of claim 5 wherein said segments from said files are allocated to said storage units in a regular cyclic pattern.

13. The method of claim 6 wherein N.sub.d consecutive segments from a file have the same physical address in said N.sub.d storage units.

14. The method of claim 5 wherein each of said cycles is divided in G subcycles.

15. The method of claim 14 wherein said plurality of streams is divided into G groups and in each subcycle N.sub.d ' I/O transactions are scheduled for the streams in one group.

16. The method of claim 14 wherein said plurality of streams is divided into groups and in each subcycle one I/O transaction is performed for each stream in each of each of N.sub.d ' groups.

17. 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.

18. The method of claim 17 wherein for each I/O cycle, the I/O transactions scheduled within each such cycle from said plurality of streams are sorted separately according to locations of said segments on each sub-array.

19. The method of claim 17 wherein each of said storage units comprises a disk.

20. The method of claim 17 wherein all of the substripes from at least one file are allocated to one sub-array.

21. The method of claim 17 wherein substripes from one or more files are randomly assigned to said sub-arrays.

22. The method of claim 17 wherein substripes from one or more of said files are cyclically allocated to said sub-arrays in a regular pattern.

23. The method of claim 17 wherein said I/O cycles are organized into super-cycles of N.sub.super cycles and in the i.sup.th cycle of a super-cycle a stream j has L.sub.i,j substripes written into or fetched from said sub-arrays, where L.sub.i,j is an integer.

24. The method of claim 17 wherein said streams are organized into groups which are desynchronized from one another.

25. The method of claim 17 wherein the number of sub-arrays and the number of storage units in a sub-array is different for different files.

26. The method of claim 17 wherein the division of said arrays into sub-arrays is different for different files.

27. The method of claim 17 wherein each of said storage units comprises an array of disks.

28. The method of claim 27 wherein a server is associated with each array of disks.

29. The method of claim 17 wherein said cycles are divided into G subcycles.

30. The method of claim 29 wherein in each sub-cycle, one substripe is fetched or written into a sub-array for each stream in one of G groups.

31. The method of claim 29 wherein in each sub-cycle, one substripe is fetched from or written into a sub-array for each stream in N.sub.a groups.
 Description Submit all comments and votes
 


RELATED APPLICATION

A patent application entitled METHOD OF OPERATING A DISK STORAGE SYSTEM has been filed for Fouad A. Tobagi, Joseph M. Gang, Jr., Randall B. Baird, Joseph W. M. Pang, and Martin J. McFadden on Nov 17, 1992, bears Ser. No. 07/977,493, now U.S. Pat. No. 5,581,784, and is assigned to the assignee hereof. Another patent application entitled VIDEO APPLICATION SERVER has been filed for James E. Long, Joseph M. Gang, Jr., Charles J. Bedard, Randall B. Baird, and David A. Edwards on Jun. 24, 1993, bears Ser. No. 08/082,227, now U.S. Pat. No. 5,556,982, and is assigned to the assignee hereof. The above-identified applications contain subject matter related to the subject matter of the present application and are incorporated herein by reference.

FIELD OF THE INVENTION

The present invention relates to a method for operating a disk storage system which stores video data so as to maintain the continuity of a plurality of video streams. In particular, the present invention provides a method for operating a disk storage system which is flexible with respect to storage capacity, streaming capacity, the start up latency of new streams, and the amount of buffer capacity required. The inventive method also has advantageous properties with respect to scalability (the addition of more disks), reliability, and multiple bit rates.

BACKGROUND OF THE INVENTION

The demand for networked digital audiovisual systems is expected to grow considerably over the next few years as businesses, government and other institutions increasingly turn to digital networks to distribute audiovisual information for education, presentations and reference applications. These customers expect systems that will allow a number of people to be able to view audiovisual information from a server simultaneously, while fully retaining their other network functions.

The characteristics of files, file access and network traffic in digital video applications differ substantially from those encountered in data applications. With data applications, whenever a user makes a file access request to a server, or requests that data be transmitted on a network, the user expects a fast response--fast compared to the time it takes it to place the next request. As a result, the capacity of a server and the overall bandwidth must both be large compared to the average demand placed by a single user. Accordingly, the design of a file server aimed at supporting data applications and the design of a network to support data traffic have been based on the principle of bandwidth sharing and statistical time multiplexing. File servers have furthermore taken advantage of the property of locality in file access, and incorporated appropriate caching mechanisms. In all cases, as the overall load on the shared resources increased, the average response time experienced by all users also increased.

Consider now digital video. A video signal is analog in nature and continuous over time. It is digitized by first sampling it at regular intervals, and then by quantizing each sample. This digitization process results in a data stream which is of relatively constant and very high rate (NTSC signals result in data rates in the neighborhood of 100 Mb/s and an HDTV signal, 600 Mb/s.) However, given that the sampled data exhibits a great deal of redundancy, compression is applied, thus significantly reducing the stream's rate. Depending on the bandwidth of the original analog signal, the sampling rate, the quantization step size, the encoding method, and the desired image quality, the resulting data rate for a digital video signal ranges from 64 Kb/s to tens of Mb/s. For example, CCITT Recommendation H.261 specifies video coding and decoding methods for audio visual services at the rate of p.times.64 Kb/s, where p is in the range of 1 to 30 (i.e., 64 Kb/s to 2 Mb/s). The MPEG standard specifies a coded representation that can be used for compressing video sequences to bit rates around 1.5 Mb/s. Advances in compression techniques and their VLSI implementations are among the important reasons why video services over LANs and WANs are becoming practical.

Two important observations can be made. The first is that the volume of bits corresponding to a digitized video segment of useful duration (even compressed) is large. A ten minute MPEG video segment requires over 100 Mbytes of storage; ten hours requires over 5 Gbytes. Thus video servers where such video information is to be stored must have relatively large storage capacity.

The second observation is that the communication of digital video data between two nodes on a local area network (e.g., a server and a desktop station) requires that data be transmitted in a stream fashion. This means that video data packets must be delivered to the destination on time, and failure to deliver video data packets on time would result in video quality degradation. This has two main implications: (i) from a network's point of view, one requires the availability, on a continuous basis, of a bandwidth at least equal to the signal's data rate; (ii) from a file and storage system point of view, one requires streaming capabilities which guarantee the continuity of each stream being retrieved or stored. Thus, in order to support multiple independent video signals, the network must have the necessary aggregate bandwidth as well as means to guarantee the bandwidth required for each video stream, and the file storage system must be of the streaming type and must have a capacity sufficient to handle all video streams. By the same token, there is a maximum number of video steams of a given data rate that a network and a server can support, and means are provided to prevent additional requests from overloading the system.

It is thus clear that the characteristics of video traffic differ substantially from those of traditional data traffic to the point that servers and local area networks designed primarily to support data applications are not appropriate to effectively support video services. New capabilities in servers and networks must be offered.

The focus in this application is on the design and operation of a storage system suitable for a video server, noting again that the storage requirements for video data are different from the storage requirements for typical LAN data in two respects:

(i) the size of video files is an order of magnitude greater or more; even with compression techniques, the physical storage needs are large.

(ii) when serving a video stream, be it for recording or playback, it is desirable to maintain the continuity of the stream. In the case of playback, data must be retrieved from the storage medium, transmitted over the network, and made available to the decoder no later than the time at which it is needed so as to avoid letting the decoder run dry. Similarly, when a stream is getting recorded, the writing of data on the storage medium must keep up with the rate at which it is getting produced so as to avoid buffer overflow and data loss.

A server's storage system preferably satisfies the following requirements:

(i) provide random access capability for both recording and playback;

(ii) have the storage capacity required by the application;

(iii) have the I/O throughput required to support simultaneously a target maximum number of users (streams); and

(iv) guarantee a start-up latency for new streams within a specified maximum tolerable threshold.

Due to their random access read and write capability, wide availability, and low cost, magnetic disk drives emerge as very appropriate storage components for this purpose. Multiple drives can be used in order to provide the necessary storage capacity and/or to achieve an aggregate throughput larger than that achieved with a single drive.

A magnetic disk storage system 20 is illustrated in FIG. 1. The disk storage system 20 comprises a plurality of disk drives 200. Each disk drive 200 comprises a disk 21 and a controller 210. The disk drive 200 is shown in greater detail in FIG. 2. As shown in FIG. 2, the disk 21 of the disk dive 200 comprises a plurality of platters 22. Each platter 22 has one or two magnetic surfaces, a bottom surface 23 and/or a top surface 24, for recording. Associated with each recording surface 23 or 24 is a read/write head 26. In the disk 21 of FIG. 2, let h denote the number of heads, and thus, usable surfaces. The heads 26 are moved to particular locations on the platter surfaces 23,24 by the actuator 28 which is controlled by a controller 210. Thus, the controller 210 controls the proper positions of the read/write heads 26 and the transfer of data in both directions between the magnetic surfaces and a local buffer 30 which forms part of the controller 210. The controller 210 also manages the transfer of data across the SCSI bus 220 (see FIG. 1) into and out of a buffer internal to the adapter 230. The adapter 230 is then in charge of the transfer of data, via the system bus 250, into and out of the server computer system 26 which includes the memory 260, CPU 270, and network interface 280. In the case of a stand-alone system, the computer system 26 may not be a server and may not include a network interface.

As shown in FIG. 3, each recording surface 23, 24 is divided into a number of concentric tracks. Tracks on all surfaces which are located at the same radius form a cylinder. The number of tracks in a cylinder is thus equal to h. Let c denote the number of tracks per surface (and thus also the number of cylinders), and consider the tracks (and thus cylinders) to be numbered sequentially 1, . . . , c, starting with the outer track (cylinder). Each track is divided into a number of fixed size sectors. Due to the circular geometry of the surface, the number of sectors in a track is not the same for all tracks; there being more sectors in outer tracks than in inner tracks.

As shown in FIG. 4, the cylinders in the disk are divided into subsets of contiguous cylinders called zones, such that the number of sectors per track in a zone is the same for all tracks in the zone. We let Z denote the number of zones, and consider the zones to be numbered sequentially from 0 to Z-1 starting with the outer zone on the disk. In FIG. 4, the number of sectors in a track of zone i is designated .sigma..sub.i, and the number of cylinders in zone i is designated k.sub.i. Note that not all disks are organized into zones.

The disk rotates permanently at a constant speed of R rotations per minute, and the read/write heads are moved all together from one cylinder to another, as needed. All I/O transactions are for an integral number of sectors, the specific number of which depends on the application. To limit the overhead caused by head movement when writing or reading a block of data, the sectors on the disk are used consecutively and sequentially, going from sector to sector on a given track, from track to track in a given cylinder, and from cylinder to cylinder.

An example of a disk drive is the HP C2240 drive which has h=13 read/write heads, a total of c=2051 cylinders, and rotational speed of R=5400 rotations/minute. The 2,051 cylinders comprise 1981 data cylinders, 69 spares, and one for logs and maintenance information. They are organized into eight zones.

When a request for an I/O operation is placed on the disk storage system (say a read or write operation for some number of consecutive sectors), the heads are first moved under the control of the controller 210 to the cylinder where the first sector is located; the delay incurred in this operation is referred to as the seek time (X.sub.seek). The head corresponding to the appropriate track then waits until the first sector appears under it, incurring a delay referred to as the rotational latency (X.sub.ro). Once the first sector is located, the head begins reading or writing the sectors consecutively at a rate determined by the rotational speed; the time to read or write all sectors constituting the block is referred to as the transfer time (X.sub.transfer). Note that if the block of data spans sectors located on more than one track is a given cylinder, then a switch from one head to the next is made at the appropriate time, thus incurring a so-called head switch time. If the block spans sectors located on multiple cylinders, then a head movement from one cylinder to the next takes place, thus incurring a track-to-track seek time each time this occurs. Accordingly, in performing an I/O operation, a certain amount of time is required. To assess the performance of a disk supporting an application, an analysis of the time required in each transaction must be undertaken.

The total time required in performing a read or write operation for a block T.sub.I/O (block), is the sum of seek time, rotational latency, and transfer time.

T.sub.I/O (block)=X.sub.seek +X.sub.ro +X.sub.trans

FIG. 5 shows how the total time T.sub.I/O for a block is divided into, seek time, rotation latency, and transfer time. As shown in FIG. 5, the transfer time includes some head switch times and/or track-to-track seek times. It should be noted that seek times, rotational delays and transfer times may be random and not known a priori.

Note that to get the total time required to get the data transferred into the system's memory, one should also account for any additional time that may be incurred in contending for the SCSI bus and in transferring the data from the controller's buffer to the system's memory. However, as these operations take place to a large degree simultaneously with the transfer of data off the disk into the controller's memory, such additional delay is negligible and may be ignored.

In the patent application entitled METHOD OF OPERATING A DISK STORAGE SYSTEM filed for Fouad A. Tobagi, Joseph M. Gang, Jr., Randall B. Baird, Joseph W. M. Pang, and Martin J. McFadden on Nov 17, 1992, bearing Ser. No. 07/977,493, now U.S. Pat. No. 5,581,784, a method for operating a disk storage system comprising one or more disks is described. The disk storage system is operated so as to simultaneously maintain the continuity of a plurality of data streams. The disk storage system may be located in a network such as a local area network and maintain the continuity of a plurality of streams in the network. The network server which includes the video storage system, and a plurality of user stations are connected via a shared transmission medium. In this case, a plurality of video streams may be transmitted simultaneously between various users and the server via the shared transmission medium. Alternatively, the disk storage system may be part of a stand-alone system in which a plurality of video streams are retrieved from storage and displayed locally on a monitor, or received from an external source and locally stored in the disk storage system. (Thus, the inventive method is described below in connection with a network such as a LAN, but it should be understood that the method of operating a disk storage system is not restricted to use in such a network. In addition, it should be noted that the inventive method is described below in connection with an array of disks. However, the invention is equally applicable to arrays of other storage units. For example, each storage unit may itself be a server and an associated array of disks). Disks may be optical disks, magnetic disks, other storage media or instead of disks, random storage media may be used such as semiconductor memories. The storage units may also be tape drives.

In accordance with the method described in U.S. patent application Ser. No. 07/977,493, now U.S. Pat. No. 5,581,784, I/O transactions take place in I/O cycles. For streams produced by (i.e., read out of) the disk storage system, the data is consumed by the network in consumption cycles which follow one another without gaps. For streams produced by the network to be written into the disk storage system, the data is produced in production cycles which follow one another without gaps.

Illustratively, the disk storage system comprises one disk. Each data stream is either produced by the network (e.g., produced by a video coder in the network) at a constant base rate of W.sub.base bits per second and consumed by the disk, or produced by the disk and consumed by the network (e.g., consumed by a video decoder in the network) at a constant base rate of W.sub.base bits/sec. One I/O transaction is performed for each stream in each of a plurality of successive I/O cycles of duration S/W.sub.base =T.sub.play. In each I/O transaction, a segment of S bits is stored in or retrieved from the disk. Illustratively, W.sub.base =1.2 Mbits/sec and S=40 Kbytes. It should be noted that T.sub.I/O, the total time for each I/O transaction (T.sub.I/O =X.sub.seek +X.sub.ro +X.sub.trans), is much shorter than T.sub.play which is the time it takes the network to produce or consume a segment of S bits of a stream.

The number of streams whose continuity can be simultaneously maintained is limited by the number of I/O transactions which can be performed in an I/O cycle of duration T.sub.play. This depends on the locations of the retrieved and stored segments in the disk (as T.sub.I/O for each transaction depends on the location) as well as the order in which the I/O transactions are scheduled.

Two modes of operation can be considered. The first mode of operation, known as the synchronous mode is such that the I/O transactions for the active streams are Scheduled in a particular predetermined order in each I/O cycle, but the production or consumption cycles of duration T.sub.play in which the data segments of the active streams are produced or consumed by the network are not necessarily aligned with each other.

The second mode of operation is known as the gated operation and is the preferred mode. The order of I/O transactions for the active streams may vary from one I/O cycle to the next. The advantage of allowing the order of the I/O transactions to vary from cycle to cycle is that the I/O transactions to be performed in a cycle may be sorted according to their locations on the disk so as to minimize the total I/O overhead. In order to be able to let the order of I/O's to vary from cycle to cycle, it is important not to allow the consumption of segments fetched in a given I/O cycle to take place earlier than the end of the given I/O cycle or to allow the production of segments to be stored in a given I/O cycle to take place later than the beginning of the given I/O cycle. If consumed (produced) at the earliest (latest) time, then the consumption (production) cycle for a segment fetched (stored) in a given I/O cycle for a given stream would coincide with the following (preceding) I/O cycle. If this is the case for all streams, then the consumption and production cycles for all streams are aligned with each other, as well as with the I/O cycles.

One way of implementing the gated operation described above is as follows: a sequence of I/O cycles of duration T.sub.play is defined, i.e., T.sup.1.sub.play, T.sup.2.sub.play, . . . In each cycle T.sup.i.sub.play, each stream has one I/O transaction In addition, in each cycle T.sup.i.sub.play, for each stream, one data segment S is consumed or produced by the network. Segments which are consumed by the disk in cycle T.sup.i.sub.play are produced by the network in I/O cycle T.sup.i-1.sub.play. Segments which are produced by the disk in cycle T.sup.i.sub.play are consumed by the network in cycle T.sup.i+1.sub.play. FIG. 6 illustrates the I/O cycles of three streams (stream 1, stream 2, and stream 3) and the corresponding consumption and production cycles.

Recall that the advantage of allowing the order of the I/O transactions to vary from cycle to cycle is that the I/O transactions to be performed in a cycle may be sorted according to their locations on the disk so as to minimize the total I/O overhead. Such sorting enables the number of I/O transactions performed in an I/O cycle of a given length to be optimized for a given segment size S.

To achieve a performance which is not dependent on the particular selection of files being played back or recorded (as pertaining to the location of the files on the disk), the locations of the segments belonging to each file can be randomized over the entire disk. The advantage of this is that the total I/O time (T.sub.I/O) for any segments fetched in a cycle of duration T.sub.play is a random variable which is independent of the I/O time of all other segments to be fetched in the same, as well as in other, I/O cycles of duration T.sub.play. As a result, the sum of the I/O times for all segments is the sum of independently and identically distributed random variables.

In order to increase the number of streams beyond that which is possible with a single disk, an array of multiple disks may be utilized. The number of disks in the array may be designated by N.sub.d.

The array of N.sub.d disks (or other storage units) is operated according to the following criteria (in accordance with U.S. patent application 07/977,493, now U.S. Pat. No. 5,581,784 which is incorporated herein by reference).

1. Video data is stored and retrieved from each disk in the array in the form of fixed size segments. The fixed segment size of S bits simplifies the tasks of storing and retrieving data from the disks, and the tasks of managing the system memory where video data is buffered (e.g., in memory 260 of FIG. 1) before it is stored on the disks or after it is retrieved from the disks.

2. Segments belonging to a video stream are striped across the disk array (e.g., consecutive segments are allocated to the disks forming the array in a cyclic fashion). Thus, when a video stream is being recorded or played back, all disks in the array are accessed equally and thus incur the same load. (Note that this assumes that all disks have the same storage capacity; otherwise, the disk with the smallest storage capacity dictates the overall storage of the array). FIG. 7 is an example of a horizontal stripe.

3. Segments within a disk (and thus horizontal stripes within the array) are randomly layed out on the disk (the array). Thus, when the disks are of the zoned type, the disk transfer time for a segment belonging to a stream being recorded or played-back is independent of the particular stream in question or the particular segment within that stream. Thus, the performance of a disk (and thus the array) in terms of the number of streams that it can serve is independent of the particular streams being served. It is not necessary that all the segments which form a stripe across the array have the same physical address in the corresponding disks. Rather, segments in each disk can be placed in segment bins independently of the other disks.

4. I/O transactions for each disk are scheduled in cycles, whereby the cycle time is equal to the time it takes a stream to consume or generate as many segments as there are disks in the array, assuming, for example, that all streams are of equal constant data rates. For each stream being served, one I/O transaction is scheduled for each disk in each cycle. Assuming all streams have a production or consumption bit rate W.sub.base, then the cycle time is N.sub.d S/W.sub.base, where N.sub.d is the number of disks in the array and S is the segment size. This corresponds to the fact that the rate at which data is generated must be equal to the rate at which data is consumed. The maximum number of streams N.sub.max that can be served (maintaining continuity at all times) is equal to the number of I/O transactions that can be performed in a disk in a cycle. This in turn depends on the segment size S and how the data is laid out on the disks (e.g. random or not). (Note that if the I/O throughput for all disks is not the same, then the disk with the smallest I/O throughput dictates the serving capacity of all other disks and thus of the disk array. Note also that if the data rate for a given stream is different from the nominal rate, then the number of I/O transactions performed in a cycle for that stream may be different from one; if the data rate for a stream is variable over time, then the number of I/O transactions for that stream may vary from cycle to cycle. In all cases, to maintain continuity for all streams being served, the number of I/O transactions required in each cycle should be smaller than the total number of I/O transactions that can be performed in a cycle).

5. By restricting the consumption of segments fetched in a cycle for a play-back stream to begin no earlier than the start of the following cycle, and equivalently, by guaranteeing that the production of data constituting a segment for a stream to be stored is complete prior to the beginning of the cycle during which the corresponding I/O transaction is to take pla