Computer system and process for transferring multiple high bandwidth streams of data between multiple storage units and multiple applications in a scalable and reliable manner
First Claim
1. In a distributed data storage system comprising a plurality of independent storage units for storing the data and interconnected by a computer network, wherein data is stored on the plurality of storage units in files, wherein each file includes segments of data, wherein each segment has an identifier, and wherein two or more copies of each segment are distributed among the plurality of storage units, such that each segment is stored on at least two of the storage units, and wherein the segments of data are distributed nonsequentially among the plurality of storage units, a method for allowing one or more client systems to access data from the files, comprising:
- within each client system;
accessing data that associates, for each segment of a file, the identifier of the segment with an indication of each of the storage units on which a copy of the segment is stored, to select a storage unit for each segment to be read from the file;
for each segment to be read from the file, sending a request for the segment to the selected storage unit, wherein the request includes the identifier of the requested segment of the file; and
within each storage unit;
receiving a request over the computer network from one of the client systems for a segment of a file, wherein the received request includes the identifier of the requested segment of the file;
retrieving the requested segment from the storage of the storage unit, by determining a location of the requested segment in the storage of the storage unit using information for the storage unit that associates, for each segment stored on the storage unit, the identifier of the segment with the location of the segment in the storage; and
sending the retrieved segment over the computer network to the client system that requested the segment.
8 Assignments
0 Petitions
Accused Products
Abstract
Multiple applications request data from multiple storage units over a computer network. The data is divided into segments and each segment is distributed randomly on one of several storage units, independent of the storage units on which other segments of the media data are stored. At least one additional copy of each segment also is distributed randomly over the storage units, such that each segment is stored on at least two storage units. This random distribution of multiple copies of segments of data improves both scalability and reliability. When an application requests a selected segment of data, the request is processed by the storage unit with the shortest queue of requests. Random fluctuations in the load applied by multiple applications on multiple storage units are balanced nearly equally over all of the storage units. This combination of techniques results in a system which can transfer multiple, independent high-bandwidth streams of data in a scalable manner in both directions between multiple applications and multiple storage units.
133 Citations
39 Claims
-
1. In a distributed data storage system comprising a plurality of independent storage units for storing the data and interconnected by a computer network, wherein data is stored on the plurality of storage units in files, wherein each file includes segments of data, wherein each segment has an identifier, and wherein two or more copies of each segment are distributed among the plurality of storage units, such that each segment is stored on at least two of the storage units, and wherein the segments of data are distributed nonsequentially among the plurality of storage units, a method for allowing one or more client systems to access data from the files, comprising:
-
within each client system; accessing data that associates, for each segment of a file, the identifier of the segment with an indication of each of the storage units on which a copy of the segment is stored, to select a storage unit for each segment to be read from the file; for each segment to be read from the file, sending a request for the segment to the selected storage unit, wherein the request includes the identifier of the requested segment of the file; and within each storage unit; receiving a request over the computer network from one of the client systems for a segment of a file, wherein the received request includes the identifier of the requested segment of the file; retrieving the requested segment from the storage of the storage unit, by determining a location of the requested segment in the storage of the storage unit using information for the storage unit that associates, for each segment stored on the storage unit, the identifier of the segment with the location of the segment in the storage; and sending the retrieved segment over the computer network to the client system that requested the segment. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A distributed data storage system for allowing one or more client systems to access data over a computer network, comprising:
-
a plurality of independent storage units for storing the data and interconnected by the computer network; wherein the data is stored on the plurality of storage units in files, wherein each file includes segments of data, wherein each segment has an identifier, and wherein each segment and redundancy information for each segment are distributed among the plurality of storage units; wherein each storage unit comprises; storage for storing the data; a network interface connected to the computer network for receiving and sending data over the computer network; and a processor connected to the network interface and the storage; wherein the processor, in response to a request received over the computer network from one of the client systems for a segment of a file, wherein the received request includes the identifier of the requested segment of the file; determines the location of the segment in the storage using information that associates, for each segment stored on the storage unit, the identifier of the segment with the location of the segment in the storage; retrieves the requested segment from the storage; and instructs the network interface to send the retrieved segment to the client system. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
-
24. In a distributed data storage system comprising a plurality of independent storage units for storing the data and interconnected by a computer network, wherein data is stored on the plurality of storage units in files, wherein each file includes segments of data, wherein each segment has an identifier, and wherein each segment and redundancy information for each segment is distributed among the plurality of storage units, a method for processing requests from one or more client systems to access data from the files, comprising:
-
within each storage unit; receiving a request over the computer network from one of the client systems for a segment of a file, wherein the received request includes the identifier of the requested segment of the file; retrieving the requested segment from the storage of the storage unit, from a location determined by accessing information that associates, for each segment stored on the storage unit, the identifier of the segment with the location of the segment in the storage; and sending the retrieved segment over the computer network to the client system that requested the segment.
-
-
25. A distributed data storage system for allowing one or more client systems to access data over a computer network, comprising:
-
a plurality of independent storage units for storing the data and interconnected by the computer network; wherein the data is stored on the plurality of storage units in files, wherein each file includes segments of data, wherein each segment has an identifier, and wherein two or more copies of each segment are distributed among the plurality of storage units, such that each segment is stored on at least two of the storage units, and wherein the segments of data are distributed nonsequentially among the plurality of storage units; computer readable storage including data that associates, for each segment of a file, the identifier of the segment with an indication of each of the storage units on which a copy of the segment is stored; wherein each client system comprises; a network interface connected to the computer network for receiving and sending data over the computer network; and a processor connected to the network interface; wherein the processor accesses the data that associates, for each segment of a file, the identifier of the segment with an indication of each of the storage units on which a copy of the segment is stored, to select a storage unit for each segment to be read from the file; wherein the processor instructs the network interface to send a request, for each segment to be read from the file, to the selected storage unit for the segment, wherein the request includes the identifier of the requested segment of the file; and wherein each storage unit comprises; storage for storing the data; a network interface connected to the computer network for receiving and sending data over the computer network; and a processor connected to the network interface and the storage; wherein the processor, in response to a request received over the computer network from one of the client systems for a segment of a file, determines the location of the segment in the storage by accessing data defining information that associates, for each segment stored on the storage unit, the identifier of the segment with the location of the segment in the storage, and retrieves the requested segment from the storage; wherein the processor instructs the network interface to send the retrieved segment to the client system. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)
-
Specification