Patent ID: 8112395

Claim:
A distributed file storage system comprising: a plurality of storage devices comprising at least a first storage device, a second storage device, a third storage device, and a fourth storage device, wherein each of the plurality of storage devices comprises a computer processor and at least one executable software module, wherein the first storage device, the second storage device, the third storage device and the fourth storage device are each a different storage device; a file comprising multiple data blocks, the multiple data blocks comprising at least a first data block and a second data block, the first data block stored on the first storage device and the second data block stored on the second storage device; file metadata comprising address locations of the first data block and the second data block, the file metadata stored on the first storage device; and directory metadata comprising an address location of the file metadata, the directory metadata comprising: a first portion of the directory metadata, wherein the first portion of the directory metadata is stored on the third storage device; and a second portion of the directory metadata, wherein the second portion of the directory metadata is stored on the fourth storage device; wherein the at least one executable software module of the first storage device is executed by a computer processor and configured to: receive a request for the file; and in response to the request: query the third storage device for directory metadata; receive the first portion of the directory metadata from the third storage device; query the fourth storage device for directory metadata; receive the second portion of the directory metadata from the fourth storage device; retrieve the file metadata stored on the third first storage device to obtain the address locations of the first data block stored on the first storage device and the second data block stored on the second storage device; retrieve the first data block stored on the first storage device; and send a request to the second storage device for the second data block stored on the second storage device.