Claims Analysis
Total Claims: 35
Claim 1
Independent Claim
174 words
A method of storing a data file across a plurality of media servers in a network, each media server having a plurality of first-level I/O devices and a plurality of second-level I/O devices, each second-level I/O device being controlled by one of the first-level I/O devices, the method comprising the steps of: (a) dividing the data file into a plurality of data blocks; (b) allocating the plurality of data blocks across each of the plurality of media servers; (c) allocating each of the data blocks allocated to each media server in step (b) to first-level I/O devices in that media server according to the bandwidth availability of the first-level I/O devices in that media server; (d) allocating each of the data blocks allocated to each first-level I/O device in step (c) to second-level I/O devices controlled by that first-level I/O device in accordance with the bandwidth availability of the second-level I/O devices; and (e) storing each of the data blocks onto the second-level I/O devices in accordance with the allocation made in step (d).
Claim 2
Independent Claim
174 words
A method of storing a data file across a plurality of media servers in a network, each media server having a plurality of first-level I/O devices and a plurality of second-level I/O devices, each second-level I/O device being controlled by one of the first-level I/O devices, the method comprising the steps of: (a) dividing the data file into a plurality of data blocks; (b) allocating the plurality of data blocks across each of the plurality of media servers; (c) allocating each of the data blocks allocated to each media server in step (b) to first-level I/O devices in that media server according to the bandwidth availability of the first-level I/O devices in that media server; (d) allocating each of the data blocks allocated to each first-level I/O device in step (c) to second-level I/O devices controlled by that first-level I/O device in accordance with the bandwidth availability of the second-level I/O devices; and (e) storing each of the data blocks onto the second-level I/O devices in accordance with the allocation made in step (d).
Claim 3
Dependent Claim
38 words
The method of claim 1, wherein step (c) comprises the step of using disk controllers as the first-level I/O devices, and wherein steps (d) and (e) each comprise the step of using disks as the second-level I/O devices.
Claim 4
Dependent Claim
58 words
The method of claim 1, wherein step (a) comprises the step of generating a plurality of error-correcting code (ECC) blocks for correcting errors in the plurality of data blocks, and wherein steps (b) through (e) collectively comprise the step of allocating and storing the plurality of ECC blocks in the same manner as the plurality of data blocks.
Claim 5
Dependent Claim
34 words
The method of claim 3, wherein step (a) comprises the step of generating a number of ECC blocks which is dependent on the number of media servers over which the data blocks are allocated.
Claim 6
Dependent Claim
44 words
The method of claim 4, wherein step (a) comprises the step of using a number of ECC blocks which is approximately equal to the number of data blocks divided by the number of media servers over which the data blocks are allocated minus one.
Claim 7
Dependent Claim
28 words
The method of claim 1, wherein step (b) comprises the step of allocating the data blocks across each media server in proportion to each media server's available bandwidth.
Claim 8
Dependent Claim
35 words
The method of claim 1, wherein steps (a) and (b) are performed in a media client coupled to the network, and wherein steps (c) through (e) are performed separately in each of the media servers.
Claim 9
Dependent Claim
82 words
The method of claim 1, further comprising the steps of: (f) from a media client, requesting that the data file be opened at a particular bandwidth; (g) determining whether the data file can be opened at the requested bandwidth on the basis of previous bandwidth allocations made for the media server across which the data file was previously stored; and (h) responsive to a determination that the data file cannot be opened in step (g), denying the request to open the file.
Claim 10
Dependent Claim
45 words
The method of claim 1, further comprising the step of grouping the plurality of media servers into two or more teams, and wherein step (b) comprises the step of allocating the data blocks only to media servers within one of the two or more teams.
Claim 11
Dependent Claim
61 words
The method of claim 1, wherein step (c) comprises the step of using a bandwidth availability of the first-level I/O devices which is approximately: MINIMUM{BW(a1), [BW(d1)+BW(d2)]}, where BW(a1) is a bandwidth sustainable by a first-level I/O device a1, BW(d1) is a bandwidth sustainable by a second-level I/O device d1, and BW(d2) is a bandwidth sustainable by a second-level I/O device d2.
Claim 12
Dependent Claim
170 words
Apparatus for storing a data file across a plurality of media servers in a network, each media server having a plurality of first-level I/O devices and a plurality of second-level I/O devices, each second-level I/O device being controlled by one of the first-level I/O devices, the apparatus comprising: means for dividing the data file into a plurality of data blocks; means for allocating the plurality of data blocks across each of the plurality of media servers; means for allocating each of the data blocks allocated to each media server to first-level I/O devices in that media server according to the bandwidth availability of the first-level I/O devices in that media server; means for allocating each of the data blocks allocated to each first-level I/O device to second-level I/O devices controlled by that first-level I/O device in accordance with the bandwidth availability of the second-level I/O devices; and means for storing each of the data blocks onto the second-level I/O devices in accordance with the allocations to the second-level I/O devices.
Claim 13
Dependent Claim
170 words
Apparatus for storing a data file across a plurality of media servers in a network, each media server having a plurality of first-level I/O devices and a plurality of second-level I/O devices, each second-level I/O device being controlled by one of the first-level I/O devices, the apparatus comprising: means for dividing the data file into a plurality of data blocks; means for allocating the plurality of data blocks across each of the plurality of media servers; means for allocating each of the data blocks allocated to each media server to first-level I/O devices in that media server according to the bandwidth availability of the first-level I/O devices in that media server; means for allocating each of the data blocks allocated to each first-level I/O device to second-level I/O devices controlled by that first-level I/O device in accordance with the bandwidth availability of the second-level I/O devices; and means for storing each of the data blocks onto the second-level I/O devices in accordance with the allocations to the second-level I/O devices.
Claim 14
Dependent Claim
25 words
The apparatus of claim 11, wherein said first-level I/O devices each comprise a disk controller, and wherein said second-level I/O devices each comprise a disk.
Claim 15
Dependent Claim
46 words
The apparatus of claim 11, further comprising means for generating a plurality of error-correcting code (ECC) blocks for correcting errors in the plurality of data blocks, wherein the plurality of ECC blocks are allocated and stored in the same manner as the plurality of data blocks.
Claim 16
Dependent Claim
31 words
The apparatus of claim 13, wherein the number of error-correcting code (ECC) blocks which are generated is dependent on the number of media servers over which the data blocks are allocated.
Claim 17
Dependent Claim
37 words
The apparatus of claim 14, wherein the number of ECC blocks generated is approximately equal to the number of data blocks divided by the number of media servers over which the data blocks are allocated minus one.
Claim 18
Dependent Claim
23 words
The apparatus of claim 11, wherein the data blocks are allocated across each media server in proportion to each media server's available bandwidth.
Claim 19
Dependent Claim
62 words
The method of claim 11, wherein the means for dividing the data file and the means for allocating the data blocks across each of the plurality of media servers is located at a media client coupled to the network, and wherein the means for allocating each of the data blocks to first-level I/O devices is replicated in each of the media servers.
Claim 20
Dependent Claim
82 words
The apparatus of claim 11, further comprising: means for, from a media client, requesting that the data file be opened at a particular bandwidth; means for determining whether the data file can be opened at the requested bandwidth on the basis of previous bandwidth allocations made for the media servers across which the data file was previously stored; and means, responsive to a determination that the data file cannot be opened at the requested bandwidth, denying the request to open the file.
Claim 21
Dependent Claim
37 words
The apparatus of claim 11, wherein the plurality of media servers are grouped into two or more teams, and wherein the data blocks are allocated only to media servers within one of the two or more teams.
Claim 22
Dependent Claim
58 words
The apparatus of claim 11, wherein the bandwidth availability of at least one of the first-level I/O devices which is approximately: MINIMUM{BW(a1), [BW(d1)+BW(d2)]}, where BW(a1) is a bandwidth sustainable by a first-level I/O device a1, BW(d1) is a bandwidth sustainable by a second-level I/O device d1, and BW(d2) is a bandwidth sustainable by a second-level I/O device d2.
Claim 23
Independent Claim
113 words
A method of retrieving a data file previously stored across a plurality of media servers, the method comprising the steps of: (a) from a media client, requesting that the data file be opened at a particular data bandwidth; (b) determining whether enough data bandwidth remains, on the basis of allocations previously made for the media servers across which the data file was previously stored, to satisfy the request made in step (a); (c) responsive to a determination in step (b) that sufficient bandwidth remains to satisfy the request, allocating the requested bandwidth toward the media servers across which the data file was previously stored; and (d) retrieving data blocks from the data file.
Claim 24
Independent Claim
113 words
A method of retrieving a data file previously stored across a plurality of media servers, the method comprising the steps of: (a) from a media client, requesting that the data file be opened at a particular data bandwidth; (b) determining whether enough data bandwidth remains, on the basis of allocations previously made for the media servers across which the data file was previously stored, to satisfy the request made in step (a); (c) responsive to a determination in step (b) that sufficient bandwidth remains to satisfy the request, allocating the requested bandwidth toward the media servers across which the data file was previously stored; and (d) retrieving data blocks from the data file.
Claim 25
Dependent Claim
25 words
The method of claim 21, further comprising the step of denying the request made in step (a) if the determination in step (b) is negative.
Claim 26
Dependent Claim
49 words
The method of claim 21, further comprising the steps of: (e) periodically measuring the actual data bandwidth used in retrieving the data blocks in step (d); and (f) responsive to a determination that the actual data bandwidth in step (e) has been exceeded, delaying one or more retrieval requests.
Claim 27
Dependent Claim
104 words
Apparatus for retrieving a data file previously stored across a plurality of media servers, comprising: means for, from a media client, requesting that the data file be opened at a particular data bandwidth; means for determining whether enough data bandwidth remains, on the basis of allocations previously made for the media servers across which the data file was previously stored, to satisfy the request; means for, responsive to a determination that sufficient bandwidth remains to satisfy the request, allocating the requested bandwidth toward the media servers across which the data file was previously stored; and means for retrieving data blocks from the data file.
Claim 28
Dependent Claim
104 words
Apparatus for retrieving a data file previously stored across a plurality of media servers, comprising: means for, from a media client, requesting that the data file be opened at a particular data bandwidth; means for determining whether enough data bandwidth remains, on the basis of allocations previously made for the media servers across which the data file was previously stored, to satisfy the request; means for, responsive to a determination that sufficient bandwidth remains to satisfy the request, allocating the requested bandwidth toward the media servers across which the data file was previously stored; and means for retrieving data blocks from the data file.
Claim 29
Dependent Claim
17 words
The apparatus of claim 24, further comprising means for denying the request if the determination is negative.
Claim 30
Dependent Claim
42 words
The apparatus of claim 24, further comprising: means for periodically measuring the actual data bandwidth used in retrieving the data blocks; and means for, responsive to a determination that the actual data bandwidth has been exceeded, delaying one or more retrieval requests.
Claim 31
Dependent Claim
33 words
The apparatus of claim 6, wherein the means for periodically measuring the actual data bandwidth used comprises means for accumulating a bill for the media client based on the actual data bandwidth used.
Claim 32
Dependent Claim
115 words
A media server, comprising: a plurality of disk devices for storing data; a plurality of disk controllers, each of which controls one or more of the disk devices; a network interface for interfacing with a network; a client/server protocol, coupled to the network interface, for communicating with media clients on the network; and means, responsive to a request received from one of the media clients on the network, for allocating a plurality of data file blocks across the plurality of disk devices in accordance with a predetermined bandwidth availability determination, such that the number of data file blocks stored on each disk is approximately proportional to that disk's contribution to the predetermined bandwidth availability determination.
Claim 33
Dependent Claim
115 words
A media server, comprising: a plurality of disk devices for storing data; a plurality of disk controllers, each of which controls one or more of the disk devices; a network interface for interfacing with a network; a client/server protocol, coupled to the network interface, for communicating with media clients on the network; and means, responsive to a request received from one of the media clients on the network, for allocating a plurality of data file blocks across the plurality of disk devices in accordance with a predetermined bandwidth availability determination, such that the number of data file blocks stored on each disk is approximately proportional to that disk's contribution to the predetermined bandwidth availability determination.
Claim 34
Dependent Claim
232 words
A video-on-demand system for storing and retrieving a video data file, comprising: plurality of media servers connected via a network, each media server comprising a plurality of first-level I/O devices; a plurality of second-level I/O devices each controlled by one of the first-level I/O devices; means for allocating a plurality of video data blocks comprising portions of said video data tile to said first-level I/O devices according to the bandwidth availability of each of the first-level I/O devices; means for further allocating each video data block allocated to each first-level I/O device to second-level I/O devices controlled by that first-level I/O device in accordance with the bandwidth availability of each of the second-level I/O devices; and means for storing each of the video data blocks onto the second-level I/O devices in accordance with the allocations to the second-level I/O devices; and a plurality of media clients connected to said network, each media client comprising means for requesting that said video data file be opened at a particular bandwidth; means tier determining whether said video data file can be opened at the requested bandwidth on the basis of previous bandwidth allocations made for all media servers across which said video data file was previously stored; and means for, responsive to a determination that said video data file can be opened, reading said plurality of video data blocks from said plurality of media servers.
Claim 35
Dependent Claim
232 words
A video-on-demand system for storing and retrieving a video data file, comprising: plurality of media servers connected via a network, each media server comprising a plurality of first-level I/O devices; a plurality of second-level I/O devices each controlled by one of the first-level I/O devices; means for allocating a plurality of video data blocks comprising portions of said video data tile to said first-level I/O devices according to the bandwidth availability of each of the first-level I/O devices; means for further allocating each video data block allocated to each first-level I/O device to second-level I/O devices controlled by that first-level I/O device in accordance with the bandwidth availability of each of the second-level I/O devices; and means for storing each of the video data blocks onto the second-level I/O devices in accordance with the allocations to the second-level I/O devices; and a plurality of media clients connected to said network, each media client comprising means for requesting that said video data file be opened at a particular bandwidth; means tier determining whether said video data file can be opened at the requested bandwidth on the basis of previous bandwidth allocations made for all media servers across which said video data file was previously stored; and means for, responsive to a determination that said video data file can be opened, reading said plurality of video data blocks from said plurality of media servers.