Patent ID: 8635184

Claim:
A system for storing files, comprising: a processor configured to: break a first file into a plurality of segments that includes a first segment; determine whether the contents of the first segment is identical to the contents of at least a second segment stored in a first storage unit, wherein the second segment is a different segment from the first file or from a second file, and wherein the second segment is useable to reconstruct at least the first file or the second file; and in the event that the contents of the first segment is determined not to be identical to the contents of the second segment stored in the first storage unit: store the first segment in the first storage unit; and add metadata to the first storage unit so that the first file can be reconstructed independent of a second storage unit, wherein the metadata enables reconstruction of the first file using the first segment and one or more other segments stored in the first storage unit, wherein at least one segment stored in the first storage unit is useable to reconstruct at least one other file using only segments stored in the first storage unit, wherein a single namespace enables access for files stored in the first storage unit and the second storage unit; and in the event that the contents of the first segment is determined to be identical to the contents of the second segment stored in the first storage unit: store a reference to the first segment in the first storage unit; and add metadata to the first storage unit so that the first file can be reconstructed independent of the second storage unit, wherein the metadata enables reconstruction of the first file using the reference and one or more other segments stored in the first storage unit; and a memory coupled to the processor and configured to provide the processor with instructions.