IP Library › Granted Patent US 8,762,348
Granted Patent B2
US 8,762,348 · App. 12/455,951 · Granted Jun 24, 2014

Segment deduplication system with compression of segments

Inventor: Christopher R. Lumb (Mountain View, CA)
Assignee: EMC Corporation
G06F17/30067G06F17/30286G06F11/1435H03M7/30
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,762,348
App. No.
12/455,951
Filed
Jun 9, 2009
Granted
Jun 24, 2014
Kind
B2
Art Unit
2157
USPC
707/687
Abstract

A system for storing compressed data comprises a processor and a memory. The processor is configured to receive a compressed segment. The compressed segment is determined by breaking a data stream, a data block, or a data file into one or more segments and compressing each of the one or more segments. The processor is further configured to determine whether the compressed segment has been previously stored, and in the event that the compressed segment has not been previously stored, store the compressed segment. The memory is coupled to the processor and configured to provide the processor with instructions.

Claims (35)

1. A system for storing compressed data, comprising:

a processor configured to:

break a data stream, a data block, or a data file into one or more segments, wherein one segment of the one or more segments is used to reconstruct more than one data streams, data blocks, or data files;

compress each of the one or more segments into one or more compressed segments;

receive one of the one or more compressed segments;

receive metadata information associated with the compressed segment, wherein the received metadata information includes a segment identifier and compression metadata information, wherein the compression metadata information includes a compression type and a compression state, wherein the compression state comprises a state used for compressing the compressed segment, wherein the compression state comprises a key;

determine whether the received compressed segment has been previously stored based at least in part on a comparison of the segment identifier associated with the received compressed segment and at least one segment identifier associated with a previously stored compressed segment;

in a first event that the received compressed segment is determined to have been previously stored, store a reference to the previously stored compressed segment;

in a second event that the received compressed segment is determined to have not been previously stored, store the received compressed segment, wherein the storing of the received compressed segment further comprises generating an index entry from the received compressed segment, wherein the index entry comprises one or more of the following: a digital fingerprint, SHA-1 hash, or Rabin Hash; and

a memory coupled to the processor and configured to provide the processor with instructions.

2. A system as in claim 1 , wherein the breaking of the data stream, the data block, or the data file is based at least in part on one of the following: a content-based technique or a non-content-based technique.

3. A system as in claim 1 , wherein the compression of the each of the one or more segments comprises compressing using at least one of: a lossless compression system, a Huffman coding system, or a Lempel-Ziv Welch coding system.

4. A system as in claim 1 , wherein for a first segment and a second segment that is identical to the first segment, a compressed first segment is identical to a compressed second segment.

5. A method for storing compressed data, comprising:

breaking a data stream, a data block, or a data file into one or more segments, wherein one segment of the one or more segments is used to reconstruct more than one data streams, data blocks, or data files;

compressing each of the one or more segments into one or more compressed segments;

receiving one of the one or more compressed segments;

receiving metadata information associated with the compressed segment, wherein the received metadata information includes a segment identifier and compression metadata information, wherein the compression metadata information includes a compression type and a compression state, wherein the compression state comprises a state used for compressing the compressed segment, wherein the compression state comprises a key;

determining whether the received compressed segment has been previously stored based at least in part on a comparison of the segment identifier associated with the received compressed segment and at least one segment identifier associated with a previously stored compressed segment;

in a first event that the received compressed segment is determined to have been previously stored, storing a reference to the previously stored compressed segment;

in a second event that the received compressed segment is determined to have not been previously stored, storing the received compressed segment, wherein the storing of the received compressed segment further comprises generating an index entry from the received compressed segment, wherein the index entry comprises one or more of the following: a digital fingerprint, SHA-1 hash, or Rabin Hash.

6. A method as in claim 5 , wherein the breaking of the data stream, the data block, or the data file is based at least in part on one of the following: a content-based technique or a non-content-based technique.

7. A method as in claim 5 , wherein the compression of the each of the one or more segments comprises compressing using at least one of: a lossless compression system, a Huffman coding system, or a Lempel-Ziv Welch coding system.

8. A method as in claim 5 , wherein for a first segment and a second segment that is identical to the first segment, a compressed first segment is identical to a compressed second segment.

9. A computer program product for storing compressed data, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:

breaking a data stream, a data block, or a data file into one or more segments, wherein one segment of the one or more segments is used to reconstruct more than one data streams, data blocks, or data files;

compressing each of the one or more segments into one or more compressed segments;

receiving one of the one or more compressed segments;

receiving metadata information associated with the compressed segment, wherein the received metadata information includes a segment identifier and compression metadata information, wherein the compression metadata information includes a compression type and a compression state, wherein the compression state comprises a state used for compressing the compressed segment, wherein the compression state comprises a key;

determining whether the received compressed segment has been previously stored based at least in part on a comparison of the segment identifier associated with the received compressed segment and at least one segment identifier associated with a previously stored compressed segment;

in a first event that the received compressed segment is determined to have been previously stored, storing a reference to the previously stored compressed segment;

in a second event that the received compressed segment is determined to have not been previously stored, storing the received compressed segment, wherein the storing of the received compressed segment further comprises generating an index entry from the received compressed segment, wherein the index entry comprises one or more of the following: a digital fingerprint, SHA-1 hash, or Rabin Hash.

10. A computer program product as in claim 9 , wherein the breaking of the data stream, the data block, or the data file is based at least in part on one of the following: a content-based technique or a non-content-based technique.

11. A computer program product as in claim 9 , wherein the compression of the each of the one or more segments comprises compressing using at least one of: a lossless compression system, a Huffman coding system, or a Lempel-Ziv Welch coding system.

12. A computer program product as in claim 9 , wherein for a first segment and a second segment that is identical to the first segment, a compressed first segment is identical to a compressed second segment.

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 Mar 11, 2010
From: DATA DOMAIN HOLDING, INC.
To: EMC CORPORATION
Reel/Frame 024071/0460 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2010
From: DATA DOMAIN LLC
To: DATA DOMAIN HOLDING, INC.
Reel/Frame 024040/0299 →
CONVERSION Recorded Feb 25, 2010
From: DATA DOMAIN, INC.
To: DATA DOMAIN LLC
Reel/Frame 023994/0415 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 21, 2009
From: LUMB, CHRISTOPHER R.
To: DATA DOMAIN, INC.
Reel/Frame 022989/0620 →
Continuity (1)
Related Publication 20100312800A1 · Dec 9, 2010