Patent ID: 8473652

Claim:
A method for operating a compression system operatively coupled between at least one computing device and at least one storage device configured as at least one storage logical unit configured to store data compressed by the compression system, wherein the at least one storage device and the compression system are separate network elements and form a storage network, said method comprising: receiving, at said storage network, one or more data access-related requests from said computing device, said data access-related requests addressed to said storage logical unit; intercepting, by said compression system, said data access-related requests prior to the data access-related requests reaching said storage logical unit; compressing, by said compression system, said data access-related requests to create compressed data; transmitting, by the compression system, the compressed data to said storage logical unit; segmenting the virtual logical unit into one or more virtual storage portions with substantially equal predefined size to create a plurality of clusters; compressing the data represented in the plurality of clusters to generate, within the storage logical unit, respective compressed sections of variable size; mapping between the compressed data stored in the compressed sections and their representation at the virtual logical unit; dividing at least one compressed section into at least one fixed-size compression logical unit (CLU); creating a section table with at least one record describing said compressed section, said record holding at least information on each CLU corresponding to the compressed section and storage location pointers pertaining to said each CLU; i) determining a first cluster to read in accordance with the request; ii) determining a corresponding compressed section; iii) determining each CLU corresponding to said compressed section and storage location thereof by referring to the section table; iv) restoring the data corresponding to said cluster from said each CLU; and repeating the stages i) through iv) for each subsequent cluster until all data to be read are restored if said certain data range exceeds the first restored cluster.