IP Library Granted Patent US 8,205,009
Granted Patent B2
US 8,205,009 · App. 10/512,687 · Granted Jun 19, 2012

Apparatus for continuous compression of large volumes of data

Assignee: EMC Israel Development Center, Ltd.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,205,009
App. No.
10/512,687
Granted
Jun 19, 2012
Kind
B2
Abstract

A system for efficiently transmitting data from a first site to a remote site over a communication medium. The data includes a storage for storing data in sub-segment boundaries, such that few sub-segments are accommodated in each block. The system further includes a storage for storing data including signature data. Each one of the sub-segments is associated with a signature of considerably smaller size than its respective sub-segment. The system includes a processor configured to perform the following, as many times as required: receiving a block and partitioning it into sub-segments. For each sub-segment in the block the processor calculating a signature. It then determines whether the calculated signature matches a corresponding signature, if any, stored in the signature storage, and in case of no match (indicating that the sub-segment is new or has been modified), transmitting the sub-segment to the remote site and store the calculated signature in the signature storage.

Claims (80)

1. A system for efficiently transmitting data from a first site to at least one remote site over a communication medium, the data includes blocks of data; the system comprising:

storage for storing data in sub-segment boundaries, such that at least one sub-segment is accommodated in each block; said storage includes at least two storage buffers, wherein blocks of data having the same context are stored in only one of the at least two storage buffers;

a context splitter configured to split incoming data blocks according to their context and for each incoming data block, the context splitter is configured to provide the incoming data block to a corresponding one of the at least two storage buffers having data blocks of the same context as the incoming data block;

signature storage for storing data including signature data; each one of said sub-segments is associated with at least one signature; each signature has a signature size smaller than its respective sub-segment size;

the system includes a processor configured to perform at least the following, as many times as required:

receiving a block;

in the case the block accommodates more than one sub-segment, partitioning the block into sub-segments;

for each sub-segment in the block, calculating at least one signature;

determining whether the calculated signature matches a corresponding signature, if any, stored in the signature storage; and

in case of no match indicating that the sub-segment is new or has been modified:

performing non-synchronous data replication by maintaining the sub-segment in the storage for a period of time before transmitting the sub-segment to at least one of said remote sites, and

storing the calculated signature in the signature storage,

wherein said processor is further configured to selectively switch between one of said at least two storage buffers and wherein said signature processing is performed in said selected storage buffer in respect of blocks that are stored in said selected storage buffer.

2. The system according to claim 1 , wherein said signature storage includes a first storage and a second storage configured to store faster than first storage.

3. The system according to claim 2 , wherein said second storage includes cache memory.

4. The system according to claim 3 , wherein said processor is further configured to pre-fetch signatures from the first storage to the second storage, and wherein said determining further includes determining whether the calculated signature matches the corresponding signature, if any, stored in the second storage or the first storage.

5. The system according to claim 4 , wherein said processor pre-fetches frequently used sub-segment signatures from the first storage to the second storage.

6. The system according to claim 1 , wherein sub-segments for transmission are compressed to thereby constitute derivatives of said sub-segments.

7. The system according to claim 2 , wherein said second storage further storing a list of commonly used sub-segments and associated codes being each shorter than the respective sub-segment, and in the case that a sub-segment that is to be transmitted belongs to said commonly used sub-segments, transmitting the associated code which constitutes derivatives of the sub-segment.

8. The system according to claim 1 used for data replication.

9. The system according to claim 1 used for backup.

10. The system according to claim 1 used for data migration.

11. A processor for operating in a system for efficiently transmitting data from a first site to at least one remote site over a communication medium, the data includes blocks of data;

the system includes storage for storing data in sub-segment boundaries, such that at least one sub-segment is accommodated in each block; said storage includes at least two storage buffers; blocks of data having the same context are stored in only one of the at least two storage buffers, the system further includes signature storage for storing data including signature data; each one of said sub-segments is associated with at least one signature; each signature has a signature size considerably smaller than its respective sub-segment size, the system further includes a context splitter configured to split incoming data blocks according to their context and for each incoming data block, the context splitter is configured to provide the incoming data block to a corresponding one of the at least two storage buffers having data blocks of the same context as the incoming data block;

the processor configured to perform at least the following, as many times as required:

receiving a block;

in the case the block accommodates more than one sub-segment partitioning the block into sub-segments;

for each sub-segment in the block calculating at least one signature;

determining whether the calculated signature is identical to a corresponding signature, if any, stored in the signature storage; and

in case of no match indicating that the sub-segment is new or has been modified:

performing non-synchronous data replication by maintaining the sub-segment in the storage for a period of time before transmitting the sub-segment to at least one of said remote sites, and

storing the calculated signature in the signature storage,

wherein said processor is further configured to selectively switch between one of said at least two storage buffers, and wherein said signature processing is performed in said selected storage buffer in respect of blocks that are stored at the selected storage buffer.

12. A method for efficiently transmitting data from a first site to at least one remote site over a communication medium, the data includes blocks of data stored at a storage that includes at least two storage buffers, blocks of data having the same context are stored in only one of the at least two storage buffers; the method comprising:

splitting incoming data blocks according to their context;

providing the incoming data block to a corresponding one of the at least two storage buffers having data blocks of the same context as the incoming data block;

receiving a succession blocks and partitioning each to sub-segments, if required;

processing the sub-segments and for each sub-segment calculating at least one signature;

determining whether the calculated signature is identical to a corresponding signature, if any, stored in a signature storage, and

in case of no match indicating that the sub-segment is new or has been modified

performing non-synchronous data replication by maintaining the sub-segment in the storage for a period of time before transmitting the sub-segment to at least one of said remote sites, and

storing the calculated signature in the signature storage,

wherein said method further comprising selectively switching between one of said at least two storage buffers, and wherein said signature processing is performed in said selected storage buffer in respect of blocks that are stored at the selected storage buffer.

13. A method for processing data to generate a compressed data for transmission from a first site to at least one remote site over a communication medium, comprising:

at the first site, processing successions of data portions and identifying those portions which were changed;

generating a compressed data that includes data portions which were changed, and

performing non-synchronous data replication by maintaining the data portions in a storage for a period of time to mitigate loss of data in an event of a malfunction before transmitting the compressed data over the communication medium,

wherein said data portions are stored at the storage having at least two storage buffers blocks of data having the same context are stored in only one of the at least two storage buffers,

wherein said method further comprising selecting one of said storage buffers and said processing is performed in respect of data portions that are stored at the selected storage buffer, and

wherein a context splitter is configured to split incoming data blocks according to their context and for each incoming data block, the context splitter is configured to provide the incoming data block to a corresponding one of the at least two storage buffers having data blocks of the same context as the incoming data block.

14. The processor according to claim 11 , wherein said signature storage includes a first storage and a second storage configured to store faster than first storage.

15. The processor according to claim 14 , wherein said second storage includes cache memory.

16. The processor according to claim 14 , wherein said processor is further configured to pre-fetch signatures from the first storage to the second storage, and wherein said determining further includes determining whether the calculated signature matches the corresponding signature, if any, stored in the second storage or the first storage.

17. The processor according to claim 16 , wherein said processor pre-fetches frequently used sub-segment signatures from the first storage to the second storage.

18. The processor according to claim 14 , wherein sub-segments for transmission are compressed to thereby constitute derivatives of said sub-segments.

19. The processor according to claim 14 , wherein said second storage further storing a list of commonly used sub-segments and associated codes being each shorter than the respective sub-segment, and in the case that a sub-segment that is to be transmitted belongs to said commonly used sub-segments, transmitting the associated code which constitutes derivatives of the sub-segment.

20. The processor according to claim 11 used for data replication.

21. The processor according to claim 11 used for backup.

22. The processor according to claim 11 used for data migration.

23. A method according to claim 12 wherein said signature storage includes a first storage and a second storage and wherein said method further includes, for each selected storage buffer, pre-fetching signatures from the first storage to the second storage.

24. A method according to claim 12 wherein said signature storage includes a first storage and a second storage and wherein said method further includes pre-fetching frequently used sub-segment signatures from the first storage to the second storage.

25. A method according to claim 12 wherein sub-segments for transmission are compressed to thereby constitute derivatives of said sub-segments.

26. A method according to claim 23 wherein said second storage further storing a list of commonly used sub-segments and associated codes being each shorter than respective sub-segment, and in the case that a sub-segment that is to be transmitted belongs to said commonly used sub-segments, transmitting the associated code which constitutes derivatives of the sub-segment.

27. The method according to claim 12 used for data replication.

28. The method according to claim 12 used for backup.

29. The method according to claim 12 used for data migration.

30. A system for efficiently transmitting data from a first site to at least one remote site over a communication medium, the data includes blocks of data; the system comprising:

storage for storing data in sub-segment boundaries, such that at least one sub-segment is accommodated in each block; said storage includes at least two storage buffers, wherein blocks of data having the same context are stored in only one of the at least two storage buffers;

a context splitter configured to split incoming data blocks according to their context and for each incoming data block, the context splitter is configured to provide the incoming data block to a corresponding one of the at least two storage buffers having data blocks of the same context as the incoming data block;

signature storage for storing data including signature data; each one of said sub-segments is associated with at least one signature; each signature has a signature size smaller than its respective sub-segment size;

the system includes a processor configured to perform at least the following, as many times as required:

receiving a block;

in the case the block accommodates more than one sub-segment, partitioning the block into sub-segments;

for each sub-segment in the block, calculating at least one signature;

determining whether the calculated signature matches a corresponding signature, if any, stored in the signature storage; and

in case of no match indicating that the sub-segment is new or has been modified:

performing non-synchronous data replication by maintaining the sub-segment in the storage for a period of time before transmitting the sub-segment to at least one of said remote sites, and

storing the calculated signature in the signature storage,

wherein said processor is further configured to selectively switch between one of said at least two storage buffers and wherein said signature processing is performed in said selected storage buffer in respect of blocks that are stored in said selected storage buffer.

31. The system of claim 1 , wherein the sub-segment is transmitted to at least one of said remote sites after expiration of a non-synchronous transmittal period and according to the application context origin of the block.

Assignments (13)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2016
From: EMC ISRAEL DEVELOPMENT CENTER, LTD.
To: EMC CORPORATION
Reel/Frame 039990/0927 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 2, 2016
From: EMC ISRAEL DEVELOPMENT CENTER, LTD.
To: EMC CORPORATION
Reel/Frame 039619/0697 →
CHANGE OF NAME Recorded Nov 16, 2006
From: KASHYA ISRAEL LTD.
To: EMC ISRAEL DEVELOPMENT CENTER, LTD.
Reel/Frame 018604/0062 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2005
From: HELLER, YAIR; KEDEM, ZIV; LEWIN, MICHAEL; MANNOR, SHAY
To: KASHYA ISRAEL LTD.
Reel/Frame 016864/0915 →
Continuity (2)
Provisional Application 60375007 · Apr 25, 2002
Related Publication 20060212462A1 · Sep 21, 2006