Patent ID: 7487309

Claim:
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; within each storage unit: maintaining 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; 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; determining the location of the segment in the storage using the information that associates the identifier of the requested segment with the location of the segment in the storage; retrieving the requested segment from the storage; sending the retrieved segment over the computer network to the client system that requested the segment.