System and method for data distribution
First Claim
1. A method for distributing data over a wide area network, comprising:
- receiving at a master, coupled to a plurality of slaves, a slave state of a first slave of said plurality of slaves, wherein the slave state of the first slave includes a current file length, for each of a plurality of files stored at the first slave, the current file length of each respective file representing an amount of the respective file currently stored at the first slave;
determining at said master that said first slave requires data;
selecting at said master, in accordance with a predefined bandwidth resource allocation method, a second slave of said plurality of slaves from which to transfer said data to said first slave;
scheduling at said master, a data transfer of said data from said second slave to said first slave;
transmitting instructions from said master to said first slave, instructing said first slave to obtain said data from said second slave; and
after transmitting the instructions, receiving from said first slave a revised state of said first slave, and subsequently repeating the determining, scheduling and transmitting operations.
2 Assignments
0 Petitions
Accused Products
Abstract
A method of distributing files operates in a system having a master and a plurality of slaves, interconnected by a communications network. Each slave determines a current file length for each of a plurality of files and sends slave status information to the master, the slave status information including the current file length for each file. The master schedules copy operations based on the slave status information. The master stores bandwidth capability information indicating data transmission bandwidth capabilities for the resources required to transmit data between the slaves, and also stores bandwidth usage information indicating a total allocated bandwidth for each resource. For each schedule copy operation, an amount of data transmission bandwidth is allocated and the stored bandwidth usage information is updated accordingly. The master only schedules copy operations that do not cause the total allocated bandwidth of any resource to exceed the bandwidth capability of that resource.
80 Citations
42 Claims
-
1. A method for distributing data over a wide area network, comprising:
-
receiving at a master, coupled to a plurality of slaves, a slave state of a first slave of said plurality of slaves, wherein the slave state of the first slave includes a current file length, for each of a plurality of files stored at the first slave, the current file length of each respective file representing an amount of the respective file currently stored at the first slave; determining at said master that said first slave requires data; selecting at said master, in accordance with a predefined bandwidth resource allocation method, a second slave of said plurality of slaves from which to transfer said data to said first slave; scheduling at said master, a data transfer of said data from said second slave to said first slave; transmitting instructions from said master to said first slave, instructing said first slave to obtain said data from said second slave; and after transmitting the instructions, receiving from said first slave a revised state of said first slave, and subsequently repeating the determining, scheduling and transmitting operations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
9. A method for distributing data over a wide area network, comprising:
-
transmitting a file set from a master, coupled to a plurality of slaves, to a first slave of a plurality of slaves, where said file set is a list of files and version numbers of said files that said first slave must obtain, receiving at said master a slave state of said first slave of said plurality of slaves, wherein the slave state of the first slave includes a current file length, for each of the files in the list of files in said file set, the current file length of each respective file representing an amount of the respective file currently stored at the first slave; determining at said master that said first slave requires data; selecting at said master, in accordance with a predefined bandwidth resource allocation method, a second slave of said plurality of slaves from which to transfer said data to said first slave; scheduling at said master, a data transfer of said data from said second slave to said first slave; and transmitting instructions from said master to said first slave, instructing said first slave to obtain said data from said second slave. - View Dependent Claims (10, 11, 12, 30, 31, 32, 33, 34, 35, 36)
-
-
23. A system for distributing data, comprising:
-
a plurality of dispersed slaves configured to store and serve data; at least one generator configured to generate said data and to make said data available to a subset of said plurality of slaves; and a master coupled to said plurality of dispersed slaves, where said master is configured to; transmit a file set to a first slave of a plurality of slaves, where said file set is a list of files and version numbers of said files that said first slave must obtain; receive state information from a first slave of said plurality of slaves, wherein the state information from the first slave includes a current file length, for each of the files in the list of files in said file set, the current file length of each respective file representing an amount of the respective file currently stored at the first slave; determine that said first slave requires data; select, in accordance with a predefined bandwidth resource allocation method, a second slave of said plurality of slaves from which to transfer said data to said first slave; schedule a data transfer of said data from said second slave to said first slave; and transmit instructions from said master to said first slave, instructing said first slave to obtain said data from said second slave. - View Dependent Claims (24, 25, 26)
-
-
27. A method for distributing a plurality of files over a network, comprising:
-
at each slave of a plurality of slaves, determining a current file length for each of the plurality of files, the current file length of each respective file representing an amount of the respective file currently stored at the slave, and sending slave status information to a master, the slave status information including the current file length for each of the plurality of files; at the master, receiving the slave status information from each of the slaves; at the master, scheduling copy operations based on the slave status information received from the slaves, each scheduled copy operation for copying a specified portion of a specified file of the plurality of files, from a first specified slave of the plurality of slaves to a second specified slave of the plurality of slaves; and at the master, storing bandwidth capability information indicating data transmission bandwidth capabilities for a plurality of resources required for transmitting data between the plurality of slaves, and storing bandwidth usage information indicating amounts of data transmission bandwidth allocated to copy operations scheduled by the master, the stored bandwidth usage information indicating a total allocated bandwidth for each resource of the plurality of resources; the scheduling including allocating for each copy operation an amount of data transmission bandwidth with respect to each resource required by the copy operation, and updating the stored bandwidth usage information in accordance therewith; the scheduling further including only scheduling copy operations that do not cause the total allocated bandwidth of any resource to exceed the bandwidth capability of that resource. - View Dependent Claims (28, 29)
-
-
37. A system for distributing data, comprising:
-
a plurality of dispersed slaves configured to store and serve data; at least one generator configured to generate said data and to make said data available to a subset of said plurality of slaves; and a master coupled to said plurality of dispersed slaves, where said master is configured to; receive state information from a first slave of said plurality of slaves, wherein the slave information from the first slave includes a current file length, for each of a plurality of files stored at the first slave, the current file length of each respective file representing an amount of the respective file currently stored at the first slave; determine that said first slave requires data; select, in accordance with a predefined bandwidth resource allocation method, a second slave of said plurality of slaves from which to transfer said data to said first slave; schedule a data transfer of said data from said second slave to said first slave; transmit instructions from said master to said first slave, instructing said first slave to obtain said data from said second slave; and after transmitting the instructions, receive from said first slave a revised state of said first slave, and subsequently repeat the determining, scheduling and transmitting operations.
-
-
38. A computer readable storage medium storing one or more programs for execution by one or more processors of a master system so as distribute data among a plurality slaves, the one or more programs comprising instructions for:
-
receiving at the master system a slave state of a first slave of said plurality of slaves, wherein the slave state of the first slave includes a current file length, for each of a plurality of files stored at the first slave, the current file length of each respective file representing an amount of the respective file currently stored at the first slave; determining, at the master system, that said first slave requires data; selecting, in accordance with a predefined bandwidth resource allocation method, a second slave of said plurality of slaves from which to transfer said data to said first slave; scheduling a data transfer of said data from said second slave to said first slave; transmitting instructions from said master system to said first slave, instructing said first slave to obtain said data from said second slave; and after transmitting the instructions, receiving from said first slave a revised state of said first slave, and subsequently repeating the determining, scheduling and transmitting operations. - View Dependent Claims (39, 40, 41)
-
-
42. A computer readable storage medium storing one or more programs for execution by one or more processors of a master system so as distribute data among a plurality slaves, the one or more programs comprising instructions for:
-
transmitting a file set from the master system to a first slave of a plurality of slaves, where said file set is a list of files and version numbers of said files that said first slave must obtain, receiving at said master system a slave state of said first slave of said plurality of slaves, wherein the slave state of the first slave includes a current file length, for each of the files in the list of files in said file set, the current file length of each respective file representing an amount of the respective file currently stored at the first slave; determining at said master system, that said first slave requires data; selecting at said master system, in accordance with a predefined bandwidth resource allocation method, a second slave of said plurality of slaves from which to transfer said data to said first slave; scheduling a data transfer of said data from said second slave to said first slave; and transmitting instructions from said master system to said first slave, instructing said first slave to obtain said data from said second slave.
-
Specification