IP Library Granted Patent US 8,051,361
Granted Patent B2
US 8,051,361 · App. 12/695,407 · Granted Nov 1, 2011

Method for lock-free clustered erasure coding and recovery of data across a plurality of data stores in a network

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,051,361
App. No.
12/695,407
Granted
Nov 1, 2011
Kind
B2
Abstract

The present invention provides a distributed clustering method to allow multiple active instances of consistency management processes that apply the same encoding scheme to be cooperative and function collectively. The techniques described herein facilitate an efficient method to apply an erasure encoding and decoding scheme across dispersed data stores that receive constant updates. The technique can be applied on many forms of distributed persistent data stores to provide failure resiliency and to maintain data consistency and correctness.

Claims (80)

1. An erasure encoding method comprising:

(a) providing a plurality of computer systems forming a distributed computer network, each computer system of the plurality of computer systems having a management process operating thereon, thereby forming a plurality of management processes;

(b) providing a plurality of distributed persistent memories, each persistent memory of the plurality of distributed persistent memories interoperably coupled to at least one of the plurality of computer systems and operative to receive constant updates;

(c) distributing, via an erasure encoding process, a plurality of data sets, wherein each data set of the plurality of data sets comprises at least one data block and at least one checksum block, across a plurality of the plurality of distributed persistent memories;

(d) initializing the plurality of management processes into and operating as a cluster, wherein during the initializing of the cluster, each management process:

agreeing to enter into an initialization mode;

entering into the initialization mode;

suspending regular runtime processing; and

registering data-set management-process management responsibility;

(e) performing a consistency check by the cluster of the plurality of data sets; and

(f) managing the plurality of data sets, comprising:

communicating by each management process to other management processes of the plurality of management processes to determine a responsible management process of each data set of the plurality of data sets, each data set managed by one of the management processes; and

determining by the responsible management process, via a sequencing indicator, whether each data block and each checksum block of each data set of the plurality of data sets is modified completely.

2. The method of claim 1 , wherein steps (a)-(f) are performed in order as listed.

3. The method of claim 1 , wherein the plurality of management processes share the same plurality of distributed persistent memories.

4. The method of claim 1 , further comprising reinitializing the plurality of management processes responsive to at least one of:

adding a new management process to the cluster; and

removing a management process from the cluster.

5. The method of claim 1 , further comprising communicating status information by each management process to other management processes of the plurality of management processes.

6. The method of claim 1 , wherein the sequencing indicator is a sequence number entered into a header and a trailer of the at least one data block and the at least one checksum block of each data set.

7. The method of claim 1 , wherein the sequencing indicator is a sequence number entered into a register.

8. The method of claim 1 , wherein the sequencing indicator is a flag.

9. The method of claim 1 , wherein distributing comprises:

distributing at least a portion of the plurality of data sets across a combination of at least one data row and at least one data column; and

wherein the at least one data row and the at least one data column each comprise at least one persistent memory of the plurality of distributed persistent memories.

10. The method of claim 9 , wherein each data row and each data column is individually encoded using the sequencing indicator.

11. The method of claim 1 , further comprising performing an automatic self-recovery, performing the automatic self-recovery comprising:

identifying the plurality of the plurality of distributed memories associated with each data set of the plurality of data sets;

classifying whether the at least one data block and the at least one checksum block of each data set of the plurality of data sets are good;

verifying if there are enough good blocks to recover each data set of the plurality of data sets;

performing a consistency check of the good blocks; and

recovering each data set of the plurality of data sets using the good blocks.

12. The method of claim 1 , wherein at least one failure is a failure of at least one of the plurality of distributed persistent memories.

13. The method of claim 1 , wherein the data-set management-process management responsibility is determined using a common responsibility distribution algorithm.

14. The method of claim 1 , wherein the consistency check comprises:

communicating by each management process with other management processes of the plurality of management processes to determine a responsible consistency-check management process of each data set of the plurality of data sets;

performing by the responsible consistency check management process the consistency check;

communicating by each management process with the other management processes to confirm a completion of the consistency check; and

entering the cluster into an active mode.

15. The method of claim 1 , wherein step (f) further comprises enabling automatic self-recovery of each data set of the plurality of data sets to a consistent and correct state.

16. A computer-program product comprising a non-transitory computer-usable medium having computer-readable program code embodied therein, the computer-readable program code executed to implement an erasure encoding method comprising:

(a) providing a plurality of computer systems forming a distributed computer network, each computer system of the plurality of computer systems having a management process operating thereon, thereby forming a plurality of management processes;

(b) providing a plurality of distributed persistent memories, each persistent memory of the plurality of distributed persistent memories interoperably coupled to at least one of the plurality of computer systems and operative to receive constant updates;

(c) distributing, via an erasure encoding process, plurality of data sets, wherein each data set of the plurality of data sets comprises at least one data block and at least one checksum block, across a plurality of the plurality of distributed persistent memories;

(d) initializing the plurality of management processes into and operating as a cluster;

(e) performing a consistency check by the cluster of the plurality of data sets, wherein performing the consistency check comprises:

communicating by each management process with other management processes of the plurality of management processes to determine a responsible consistency-check management process of each data set of the plurality of data sets;

performing by the responsible consistency check management process the consistency check;

communicating by each management process with the other management processes to confirm a completion of the consistency check; and

entering the cluster into an active mode; and

(f) managing, the plurality of data sets, comprising:

communicating by each management process to the other management processes of the plurality of management processes to determine a responsible management process of each data set of the plurality of data sets, each data set managed by one of the management process; and

determining by the responsible management process, via a sequencing indicator, whether each data block and each checksum block of each data set of the plurality of data sets is modified completely.

17. The computer-program product of claim 16 , wherein steps (a)-(f) are performed in order as listed.

18. The computer-program product of claim 16 , wherein the plurality of management processes share the same plurality of distributed persistent memories.

19. The computer-program product of claim 16 , wherein the erasure encoding method further comprises reinitializing the plurality of management processes responsive to at least one of:

adding a new management process to the cluster; and

removing a management process from the cluster.

20. The computer-program product of claim 16 , wherein each management process communicates status information to the other management processes of the plurality of management processes.

21. The computer-program product of claim 16 , wherein the sequencing indicator is a sequence number entered into a header and a trailer of the at least one data block and the at least one checksum block of each data set.

22. The computer-program product of claim 16 , wherein the sequencing indicator is a sequence number entered into a register.

23. The computer-program product of claim 16 , wherein the sequencing indicator is a flag.

24. The computer-program product of claim 16 , wherein, during the initialization of the cluster, each management process:

agreeing to enter into an initialization mode;

entering into the initialization mode;

suspending regular runtime processing; and

registering data-set management-process management responsibility.

25. The computer-program product of claim 24 , wherein the data-set management- process management responsibility is determined using a common responsibility distribution algorithm.

26. The computer-program product of claim 16 , the wherein distributing comprises:

distributing at least a portion of the plurality of data sets across a combination of at least one data row and at least one data column; and

wherein the at least one data row and the at least one data column each comprise at least one persistent memory of the plurality of distributed persistent memories.

27. The computer-program product of claim 26 , wherein each data row and each data column is individually encoded using the sequencing indicator.

28. The computer-program product of claim 16 , wherein the erasure encoding method further comprises performing an automatic self-recovery, performing the automatic self-recovery comprising:

identifying the plurality of the plurality of distributed memories associated with each data set of the plurality of data sets;

classifying whether the at least one data block and the at least one checksum block of each data set of the plurality of data sets are good;

verifying if there are enough good blocks to recover each data set of the plurality of data sets;

performing a consistency check of the good blocks; and

recovering each data set of the plurality of data sets using the good blocks.

29. The computer-program product of claim 16 , wherein at least one failure is a failure of at least one of the plurality of distributed persistent memories.

30. The computer-program product of claim 16 , wherein step (f) further comprises enabling automatic self-recovery of each data set of the plurality of data sets to a consistent and correct state.

Assignments (30)
RELEASE OF SECURITY INTEREST Recorded Nov 19, 2025
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073606/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 18, 2025
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.
Reel/Frame 073613/0326 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0649 →
SECURITY INTEREST Recorded Jun 8, 2025
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; ERWIN, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 071527/0001 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059105/0479 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: GOLDMAN SACHS BANK USA
Reel/Frame 058945/0778 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2022
From: QUEST SOFTWARE INC.; ANALYTIX DATA SERVICES INC.; BINARYTREE.COM LLC; ERWIN, INC.; ONE IDENTITY LLC; ONELOGIN, INC.; ONE IDENTITY SOFTWARE INTERNATIONAL DESIGNATED ACTIVITY COMPANY
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 058952/0279 →
RELEASE OF SECOND LIEN SECURITY INTEREST IN PATENTS Recorded Feb 2, 2022
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC.
Reel/Frame 059096/0683 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0347 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Jun 7, 2018
From: QUEST SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046327/0486 →
RELEASE OF FIRST LIEN SECURITY INTEREST IN PATENTS RECORDED AT R/F 040581/0850 Recorded May 22, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 046211/0735 →
CHANGE OF NAME Recorded Dec 6, 2017
From: DELL SOFTWARE INC.
To: QUEST SOFTWARE INC.
Reel/Frame 044800/0848 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED AT REEL: 040587 FRAME: 0624. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 28, 2017
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: QUEST SOFTWARE INC. (F/K/A DELL SOFTWARE INC.); AVENTAIL LLC
Reel/Frame 044811/0598 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Nov 10, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040587/0624 →
FIRST LIEN PATENT SECURITY AGREEMENT Recorded Nov 9, 2016
From: DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040581/0850 →
RELEASE OF SECURITY INTEREST IN CERTAIN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040039/0642) Recorded Oct 31, 2016
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
To: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0016 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
Reel/Frame 040521/0467 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS, L.P.; DELL SOFTWARE INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040030/0187 →
SECURITY AGREEMENT Recorded Sep 14, 2016
From: AVENTAIL LLC; DELL PRODUCTS L.P.; DELL SOFTWARE INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040039/0642 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040040/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0618 →
RELEASE OF SECURITY INTEREST Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL MARKETING L.P.; ASAP SOFTWARE EXPRESS, INC.; APPASSURE SOFTWARE, INC.; COMPELLANT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL PRODUCTS L.P.; DELL USA L.P.; DELL SOFTWARE INC.; FORCE10 NETWORKS, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040065/0216 →
PATENT SECURITY AGREEMENT (TERM LOAN) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 031899/0261 →
PATENT SECURITY AGREEMENT (ABL) Recorded Jan 2, 2014
From: DELL INC.; APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 031898/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jan 2, 2014
From: APPASSURE SOFTWARE, INC.; ASAP SOFTWARE EXPRESS, INC.; BOOMI, INC.; COMPELLENT TECHNOLOGIES, INC.; CREDANT TECHNOLOGIES, INC.; DELL INC.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL USA L.P.; FORCE10 NETWORKS, INC.; GALE TECHNOLOGIES, INC.; PEROT SYSTEMS CORPORATION; SECUREWORKS, INC.; WYSE TECHNOLOGY L.L.C.
To: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 031897/0348 →
CHANGE OF NAME Recorded Aug 20, 2013
From: QUEST SOFTWARE, INC.
To: DELL SOFTWARE INC.
Reel/Frame 031043/0281 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Sep 28, 2012
From: WELLS FARGO CAPITAL FINANCE, LLC (FORMERLY KNOWN AS WELLS FARGO FOOTHILL, LLC)
To: QUEST SOFTWARE, INC.; AELITA SOFTWARE CORPORATION; SCRIPTLOGIC CORPORATION; VIZIONCORE, INC.; NETPRO COMPUTING, INC.
Reel/Frame 029050/0679 →
AMENDMENT NUMBER EIGHT TO PATENT SECURITY AGREEMENT Recorded May 23, 2012
From: QUEST SOFTWARE, INC.; AELITA SOFTWARE CORPORATION; SCRIPTLOGIC CORPORATION; VIZIONCORE, INC.; NETPRO COMPUTING, INC.
To: WELLS FARGO CAPITAL FINANCE, LLC, AS AGENT
Reel/Frame 028274/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2011
From: BAKBONE SOFTWARE INCORPORATED
To: QUEST SOFTWARE, INC.
Reel/Frame 026651/0373 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2010
From: SIM-TANG, SIEW YONG; USTIMENKO, SEMEN ALEXANDROVICH
To: BAKBONE SOFTWARE, INC.
Reel/Frame 023894/0790 →