Patent ID: 8666955

Claim:
A data management method of a data system coupled to a client computer, and having a server configured in a system computer and a storage device configured to store a plurality of data blocks received from the client computer via the server, the server performing the method comprising: partitioning a first data block stored in the storage device into a first plurality of chunks of data, each of the first plurality of chunks not being fixed in size, computing a first hash value for each of the first plurality of chunks of the first data block, partitioning a second data block, which is updated data of the first data block received by the server from the client computer, into a second plurality of chunks of data, each of the second plurality of chunks not being fixed in size, computing a second hash value for each of the second plurality of chunks of the first data block, detecting a second chunk of the second plurality of chunks of the first data block as a duplicated portion of a first chunk of the first plurality of chunks of the first data block if the first hash value of the first chunk matches the second hash value, and storing a second data block without the second chunk in the storage device, wherein partitioning of the first data block into the first plurality of chunks comprises: (a1) computing a hash value for each piece of data within each of a first plurality of computation areas corresponding to the first data block, each of the computation areas not being fixed in size, (a2) determining, for each of a plurality of prescribed ranges of the first data block, a first particular hash value which is a maximum value or a minimum value among hash values within a prescribed range of the plurality of prescribed ranges, and (a3) partitioning the first data block into the first plurality of chunks at locations corresponding to the first particular hash value, and wherein partitioning of the second data block into the second plurality of chunks comprises: (b1) computing a hash value for each piece of data within each of a second plurality of computation areas corresponding to the second data block, each of the computation areas being fixed in size, (b2) determining, for each of a plurality of prescribed ranges of the second data block, a second particular hash value which is a maximum value or a minimum value among hash values within a prescribed range of the plurality of prescribed ranges of the second data block, and (b3) partitioning the second data block into the second plurality of chunks at locations corresponding to the second particular hash value.