IP Library Granted Patent US 10,303,656
Granted Patent B2
US 10,303,656 · App. 14/825,322 · Granted May 28, 2019

Parallelizing and deduplicating backup data

Inventors: David G. Therrien (Nashua, NH); Stephen M. Stickles (Boylston, MA); Thomas J. Gillispie (Acton, MA); William Andrews (Reading, MA)
Assignee: Exagrid Systems, Inc.
G06F16/1748G06F11/1453G06F11/1464G06F16/24568G06F17/30156G06F17/30159G06F17/30516
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 10,303,656
App. No.
14/825,322
Granted
May 28, 2019
Kind
B2
Abstract

A method, a system, and a computer program product for performing a backup of data are disclosed. A grid server in a plurality of grid servers is selected for deduplicating a segment of data in a plurality of segments of data contained within a data stream. The segment of data is forwarded to the selected grid server for deduplication. A zone contained within the forwarded segment of data is deduplicated using the selected server. The deduplication is performed based on a listing of a plurality of zone stamps. Each zone stamp in the plurality of zone stamps represents a zone in a plurality of zones deduplicated by at least one server in the plurality of grid servers.

Claims (77)

1. A computer-implemented method for deduplicating data, comprising:

selecting a grid server in a plurality of grid servers for deduplicating a segment of data in a plurality of segments of data contained within a data stream, wherein a data deduplication system communicatively coupled to the plurality of servers is configured to split the data stream into the plurality of segments and select the grid server for deduplicating the segment of data;

forwarding the segment of data to the selected grid server for deduplication; and

deduplicating, using the plurality of grid servers, a zone contained within the forwarded segment of data using a listing of a plurality of zone stamps, each zone stamp in the listing of the plurality of zone stamps representing a zone in a plurality of zones previously deduplicated by at least one server in the plurality of grid servers, the deduplicating including

determining, using the listing of the plurality of zone stamps, by a first grid server in the plurality of grid servers that a second grid server in the plurality of grid servers previously deduplicated a first zone in the plurality of zones having a first zone stamp matching to a second zone stamp of a second zone being processed by the first grid server, and

transmitting, by the first grid server, the second zone to the second grid server for deduplication.

2. The method according to claim 1 , wherein the listing of the plurality of zone stamps is a listing specific to the selected grid server.

3. The method according to claim 2 , wherein the deduplicating further comprises

comparing, using at least one zone contained in the listing specific to the selected server, the zone contained within the forwarded segment of data to at least one zone stored on the selected server;

determining, using the selected grid server, whether the compared zone matches at least one zone stored on the selected server, wherein

upon determination that the compared zone matches at least one zone stored on the selected server, deduplicating the compared zone;

upon determination that the compared zone does not match at least one zone stored on the selected server, determining whether the compared zone matches at least one zone stored on another server in the plurality of grid servers using a listing of zone stamps specific to the another server.

4. The method according to claim 1 , wherein the listing in the plurality of zone stamps is a listing of zone stamps for all servers in the plurality of grid servers.

5. The method according to claim 1 , further comprising

segmenting the data stream into the plurality of segments of data;

determining a maximum zone size of a zone for deduplication by each grid server in the plurality of grid servers; and

determining a ratio of the maximum zone size to a size of each segment of data in the plurality of segment of data;

wherein the selecting of the grid server is based on the determined ratio.

6. The method according to claim 1 , further comprising

selecting a plurality of grid servers for performing the deduplicating of the zone contained within the forwarded segment of data.

7. The method according to claim 1 , further comprising

storing the deduplicated zone on the selected grid server.

8. The method according to claim 7 , further comprising

forwarding, by the selected grid server, the deduplicated zone to another grid server in the plurality of grid servers upon determination by the selected grid server that storage of the deduplicated zone exceeds a storage capacity of the selected grid server.

9. The method according to claim 1 , wherein the selecting, the forwarding and the deduplicating is performed in parallel for at least a portion of segments of data in the plurality of segments of data using at least a portion of grid servers in the plurality of grid servers.

10. A system comprising:

at least one programmable processor; and

a non-transitory machine-readable medium storing instructions that, when executed by the at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

selecting a grid server in a plurality of grid servers for deduplicating a segment of data in a plurality of segments of data contained within a data stream, wherein a data deduplication system communicatively coupled to the plurality of servers is configured to split the data stream into the plurality of segments and select the grid server for deduplicating the segment of data;

forwarding the segment of data to the selected grid server for deduplication; and

deduplicating, using the plurality of grid servers, a zone contained within the forwarded segment of data using a listing of a plurality of zone stamps, each zone stamp in the listing of the plurality of zone stamps representing a zone in a plurality of zones previously deduplicated by at least one server in the plurality of grid servers, the deduplicating including

determining, using the listing of the plurality of zone stamps, by a first grid server in the plurality of grid servers that a second grid server in the plurality of grid servers previously deduplicated a first zone in the plurality of zones having a first zone stamp matching to a second zone stamp of a second zone being processed by the first grid server, and

transmitting, by the first grid server, the second zone to the second grid server for deduplication.

11. The system according to claim 10 , wherein the listing of the plurality of zone stamps is a listing specific to the selected grid server.

12. The system according to claim 11 , wherein the deduplicating further comprises

comparing, using at least one zone contained in the listing specific to the selected server, the zone contained within the forwarded segment of data to at least one zone stored on the selected server;

determining, using the selected grid server, whether the compared zone matches at least one zone stored on the selected server, wherein

upon determination that the compared zone matches at least one zone stored on the selected server, deduplicating the compared zone;

upon determination that the compared zone does not match at least one zone stored on the selected server, determining whether the compared zone matches at least one zone stored on another server in the plurality of grid servers using a listing of zone stamps specific to the another server.

13. The system according to claim 10 , wherein the listing in the plurality of zone stamps is a listing of zone stamps for all servers in the plurality of grid servers.

14. The system according to claim 10 , wherein the operations further comprise

segmenting the data stream into the plurality of segments of data;

determining a maximum zone size of a zone for deduplication by each grid server in the plurality of grid servers; and

determining a ratio of the maximum zone size to a size of each segment of data in the plurality of segment of data;

wherein the selecting of the grid server is based on the determined ratio.

15. The system according to claim 10 , wherein the operations further comprise

selecting a plurality of grid servers for performing the deduplicating of the zone contained within the forwarded segment of data.

16. The system according to claim 10 , wherein the operations further comprise

storing the deduplicated zone on the selected grid server.

17. The system according to claim 16 , wherein the operations further comprise

forwarding, by the selected grid server, the deduplicated zone to another grid server in the plurality of grid servers upon determination by the selected grid server that storage of the deduplicated zone exceeds a storage capacity of the selected grid server.

18. The system according to claim 10 , wherein the selecting, the forwarding and the deduplicating is performed in parallel for at least a portion of segments of data in the plurality of segments of data using at least a portion of grid servers in the plurality of grid servers.

19. A computer program product comprising a non-transitory machine-readable medium storing instructions that, when executed by at least one programmable processor, cause the at least one programmable processor to perform operations comprising:

selecting a grid server in a plurality of grid servers for deduplicating a segment of data in a plurality of segments of data contained within a data stream, wherein a data deduplication system communicatively coupled to the plurality of servers is configured to split the data stream into the plurality of segments and select the grid server for deduplicating the segment of data;

forwarding the segment of data to the selected grid server for deduplication; and

deduplicating, using the plurality of grid servers, a zone contained within the forwarded segment of data using a listing of a plurality of zone stamps, each zone stamp in the listing of the plurality of zone stamps representing a zone in a plurality of zones previously deduplicated by at least one server in the plurality of grid servers, the deduplicating including

determining, using the listing of the plurality of zone stamps, by a first grid server in the plurality of grid servers that a second grid server in the plurality of grid servers previously deduplicated a first zone in the plurality of zones having a first zone stamp matching to a second zone stamp of a second zone being processed by the first grid server, and

transmitting, by the first grid server, the second zone to the second grid server for deduplication.

20. The computer program product according to claim 19 , wherein the listing of the plurality of zone stamps is a listing specific to the selected grid server.

21. The computer program product according to claim 20 , wherein the deduplicating further comprises

comparing, using at least one zone contained in the listing specific to the selected server, the zone contained within the forwarded segment of data to at least one zone stored on the selected server;

determining, using the selected grid server, whether the compared zone matches at least one zone stored on the selected server, wherein

upon determination that the compared zone matches at least one zone stored on the selected server, deduplicating the compared zone;

upon determination that the compared zone does not match at least one zone stored on the selected server, determining whether the compared zone matches at least one zone stored on another server in the plurality of grid servers using a listing of zone stamps specific to the another server.

22. The computer program product according to claim 19 , wherein the listing in the plurality of zone stamps is a listing of zone stamps for all servers in the plurality of grid servers.

23. The computer program product according to claim 19 , wherein the operations further comprise

segmenting the data stream into the plurality of segments of data;

determining a maximum zone size of a zone for deduplication by each grid server in the plurality of grid servers; and

determining a ratio of the maximum zone size to a size of each segment of data in the plurality of segment of data;

wherein the selecting of the grid server is based on the determined ratio.

24. The computer program product according to claim 19 , wherein the operations further comprise

selecting a plurality of grid servers for performing the deduplicating of the zone contained within the forwarded segment of data.

25. The computer program product according to claim 19 , wherein the operations further comprise

storing the deduplicated zone on the selected grid server.

26. The computer program product according to claim 25 , wherein the operations further comprise

forwarding, by the selected grid server, the deduplicated zone to another grid server in the plurality of grid servers upon determination by the selected grid server that storage of the deduplicated zone exceeds a storage capacity of the selected grid server.

27. The computer program product according to claim 19 , wherein the selecting, the forwarding and the deduplicating is performed in parallel for at least a portion of segments of data in the plurality of segments of data using at least a portion of grid servers in the plurality of grid servers.

Assignments (6)
RELEASE OF SECURITY INTEREST Recorded Jun 3, 2021
From: COMERICA BANK
To: EXAGRID SYSTEMS, INC.
Reel/Frame 056425/0108 →
SECURITY INTEREST Recorded May 27, 2021
From: EXAGRID SYSTEMS, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 056372/0929 →
CORRECTIVE ASSIGNMENT TO CORRECT THE APPL. NOS. 10303656, 10114831, 10073855 AND 10067946 BY REMOVING THEM FOR THE PATENT NOS. PREVIOUSLY RECORDED ON REEL 049619 FRAME 0342. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTERESTS. Recorded Feb 9, 2021
From: EXAGRID SYSTEMS, INC.
To: ORIX GROWTH CAPITAL, LLC
Reel/Frame 056399/0163 →
SECURITY INTEREST Recorded Jun 28, 2019
From: EXAGRID SYSTEMS, INC.
To: ORIX GROWTH CAPITAL, LLC
Reel/Frame 049619/0342 →
SECURITY INTEREST Recorded Oct 1, 2018
From: EXAGRID SYSTEMS, INC.
To: COMERICA BANK
Reel/Frame 047172/0685 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 13, 2015
From: THERRIEN, DAVID G., MR.; STICKLES, STEPHEN M., MR.; GILLISPIE, THOMAS J., MR.; ANDREWS, WILLIAM, MR.
To: EXAGRID SYSTEMS, INC.
Reel/Frame 036318/0506 →
Continuity (1)
Related Publication 20170046360A1 · Feb 16, 2017