A file system for a computer, enabling the computer to access remote independent storage units over a computer network in response to a request, from an application executed on the computer, to read data stored in one or more files on the storage units, wherein a file includes segments of the data and redundancy information for each segment, wherein each segment has an identifier, and wherein, for each file, the segments and the redundancy information for each segment are distributed among the plurality of storage units, the file system comprising:
- means, responsive to the request from the application to read data from a file, for determining, for each segment of the data requested by the application the storage unit on which the segment is stored;
- means for maintaining information, locally accessible by the file system of the computer, associating the identifier of each segment of the file with the storage unit on which the segment is stored;
- means, for sending a request, for each segment of the data requested by the application, to the storage unit on which the segment is stored, wherein each request includes the identifier of the segment;
- means for receiving each segment requested from the storage units;
- and
- means for providing the received data to the application.