Patent ID: 8055628

Claim:
A method by which a disk-based data storage system attached to a network is organized for protecting historical records of stored data entities, the method comprising: storing data entities in the disk-based data storage system; recording distinct states of the stored data entities, corresponding to different moments of time, as separate entity versions stored within the disk-based data storage system; assigning an expiration time to a first entity version which records a state of a first stored data entity; assigning an expiration time to a second entity version which records a state of a second stored data entity that is distinct from the first stored data entity; and assigning expiration times to blocks of stored content that constitute the first and second entity versions; wherein the recording step comprises determining, using hashes of blocks of content and without comparing entire blocks of content, that a block of content of the first entity version is identical to a block of content of the second entity version; wherein storage space for the identical block of content is shared between the first and second entity versions, constituting a shared block of stored content; wherein an expiration time assigned to the shared block of stored content is constrained by the expiration times assigned to the first and second entity versions, so that the expiration time assigned to the shared block is constrained to be at least as late as the latest of the expiration times assigned to the first and second entity versions; wherein the expiration time assigned to the shared block is finite; wherein the expiration time assigned to the first entity version is later than the expiration time assigned to the second entity version; wherein a client of the disk-based data storage system determines the expiration time assigned to the first entity version; wherein, if an expiration time has been assigned to the shared block and as long as the expiration time has not yet passed, the client cannot cause the shared block to be modified or deleted, and cannot cause the expiration time assigned to the shared block to be changed to an earlier time; wherein, after an expiration time has been assigned to the shared block and before it has passed the client can cause the expiration time to be changed to a later time; and wherein, after the expiration time assigned to the shared block has passed, the shared block is deleted.