IP Library Granted Patent US 10,437,672
Granted Patent B2
US 10,437,672 · App. 15/685,833 · Granted Oct 8, 2019

Erasure coding and replication in storage clusters

Inventors: Don Baker (Austin, TX); Paul R.M. Carpentier (Boechout, BE); Andrew Klager (Austin, TX); Aaron Pierce (Austin, TX); Jonathan Ring (Austin, TX); Russell Turpin (Austin, TX); David Yoakley (Austin, TX)
Assignee: CARINGO INC.
G06F11/1076G06F3/064G06F3/0605G06F3/065G06F3/067G06F3/0619G06F3/0632G06F3/0667G06F3/0683G06F11/10H03M13/05H03M13/251H03M13/2707H03M13/353H03M13/356H03M13/373H03M13/3761H04L67/1095H04L67/1097G06F11/14H03M13/25
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,437,672
App. No.
15/685,833
Granted
Oct 8, 2019
Kind
B2
Abstract

A cluster receives a request to store an object using replication or erasure coding. The cluster writes the object using erasure coding. A manifest is written that includes an indication of erasure coding and a unique identifier for each segment. The cluster returns a unique identifier of the manifest. The cluster receives a request from a client that includes a unique identifier. The cluster determines whether the object has been stored using replication or erasure coding. If using erasure coding, the method reads a manifest. The method identifies segments within the cluster using unique segment identifiers of the manifest. Using these unique segment identifiers, the method reconstructs the object. A persistent storage area of another disk is scanned to find a unique identifier of a failed disk. If using erasure coding, a missing segment previously stored on the disk is identified. The method locates other segments. Missing segments are regenerated.

Claims (78)

1. A method of converting a digital object within a storage cluster, said method comprising:

storing said digital object within said storage cluster in a first erasure coding storage format, said digital object having a unique identifier within said storage cluster;

after said storing, identifying a requirement to convert said digital object to a second erasure coding storage format;

reading said digital object from said storage cluster using a computer node of said storage cluster;

determining a segment size for segments of said second erasure coding storage format;

writing said digital object to said storage cluster using said second erasure coding storage format having segments of said segment size; and

retaining said unique identifier for said digital object written in said second erasure coding storage format, whereby a client application retrieves said digital object written in said second erasure coding storage format using said unique identifier.

2. A method as recited in claim 1 wherein a first erasure code of said first erasure coding storage format is different from a second erasure code of said second erasure coding storage format.

3. A non-transitory computer-readable medium comprising computer code for converting a digital object within a storage cluster, said computer code of said computer-readable medium executable by a machine to perform the following:

storing said digital object within said storage cluster in a first erasure coding storage format, said digital object having a unique identifier within said storage cluster;

after said storing, identifying a requirement to convert said digital object to a second erasure coding storage format;

reading said digital object from said storage cluster using a computer node of said storage cluster;

determining a segment size for segments of said second erasure coding storage format;

writing said digital object to said storage cluster using said second erasure coding storage format having segments of said segment size; and

retaining said unique identifier for said digital object written in said second erasure coding storage format, whereby a client application retrieves said digital object written in said second erasure coding storage format using said unique identifier.

4. A computer-readable medium as recited in claim 3 wherein a first erasure code of said first erasure coding storage format is different from a second erasure code of said second erasure coding storage format.

5. A method of storing a digital object in a storage cluster, said method comprising:

receiving a request at a computer node of said storage cluster to store said digital object;

determining whether to store said digital object in said storage cluster using replication or erasure coding;

when it is determined to store said digital object using erasure coding, writing said digital object to a plurality of computer nodes of said storage cluster using erasure coding, said digital object being written in parallel to said computer nodes as a plurality of segments;

creating a manifest computer file that includes a unique identifier within said storage cluster for each of said segments; and

storing said manifest computer file on a computer node of said storage cluster.

6. A non-transitory computer-readable medium comprising computer code for storing a digital object in a storage cluster, said computer code of said computer-readable medium executable by a machine to perform the following:

receiving a request at a computer node of said storage cluster to store said digital object;

determining whether to store said digital object in said storage cluster using replication or erasure coding;

when it is determined to store said digital object using erasure coding, writing said digital object to a plurality of computer nodes of said storage cluster using erasure coding, said digital object being written in parallel to said computer nodes as a plurality of segments;

creating a manifest computer file that includes a unique identifier within said storage cluster for each of said segments; and

storing said manifest computer file on a computer node of said storage cluster.

7. A method of storing a digital object in a storage cluster, said method comprising:

receiving a request from a client application at a first computer node of said storage cluster to store said digital object;

determining whether to store said digital object in said storage cluster using replication or erasure coding using a setting of said storage cluster;

when it is determined to store said digital object using replication, receiving said digital object at a second computer node of said storage cluster;

writing said digital object to said second computer node of said storage cluster;

calculating a unique identifier for said digital object; and

returning said unique identifier identifying said digital object to said client application.

8. A non-transitory computer-readable medium comprising computer code for storing a digital object in a storage cluster, said computer code of said computer-readable medium executable by a machine to perform the following:

receiving a request from a client application at a first computer node of said storage cluster to store said digital object;

determining whether to store said digital object in said storage cluster using replication or erasure coding using a setting of said storage cluster;

when it is determined to store said digital object using replication, receiving said digital object at a second computer node of said storage cluster;

writing said digital object to said second computer node of said storage cluster;

calculating a unique identifier for said digital object; and

returning said unique identifier identifying said digital object to said client application.

9. A method of converting a digital object within a storage cluster, said method comprising:

storing said digital object within said storage cluster in a first erasure coding storage format, said digital object having a unique identifier within said storage cluster;

after said storing, determining to convert said digital object to a second erasure coding storage format using a setting of said storage cluster, said second erasure coding format using fewer segments than said first erasure coding storage format;

reading said digital object from said storage cluster using a computer node of said storage cluster;

writing said digital object to said storage cluster using said second erasure coding storage format; and

retaining said unique identifier for said digital object written in said second erasure coding storage format, whereby a client application may retrieve said digital object written in said second erasure coding storage format using said unique identifier.

10. A non-transitory computer-readable medium comprising computer code for converting a digital object within a storage cluster, said computer code of said computer-readable medium executable by a machine to perform the following:

storing said digital object within said storage cluster in a first erasure coding storage format, said digital object having a unique identifier within said storage cluster;

after said storing, determining to convert said digital object to a second erasure coding storage format using a setting of said storage cluster, said second erasure coding format using fewer segments than said first erasure coding storage format;

reading said digital object from said storage cluster using a computer node of said storage cluster;

writing said digital object to said storage cluster using said second erasure coding storage format; and

retaining said unique identifier for said digital object written in said second erasure coding storage format, whereby a client application may retrieve said digital object written in said second erasure coding storage format using said unique identifier.

11. A method of converting a digital object within a storage cluster, said method comprising:

storing said digital object within said storage cluster in an erasure coding storage format, said digital object having a unique identifier within said storage cluster;

after said storing, determining to convert said digital object to a storage format using replication using a setting of said storage cluster;

reading said digital object from said storage cluster using a computer node of said storage cluster;

writing said digital object to a single disk of a computer node of said storage cluster as a stream of bits; and

retaining said unique identifier for said digital object written as said stream of bits, whereby a client application may retrieve said digital object written as said stream of bits using said unique identifier.

12. A non-transitory computer-readable medium comprising computer code for converting a digital object within a storage cluster, said computer code of said computer-readable medium executable by a machine to perform the following:

storing said digital object within said storage cluster in an erasure coding storage format, said digital object having a unique identifier within said storage cluster;

after said storing, determining to convert said digital object to a storage format using replication using a setting of said storage cluster;

reading said digital object from said storage cluster using a computer node of said storage cluster;

writing said digital object to a single disk of a computer node of said storage cluster as a stream of bits; and

retaining said unique identifier for said digital object written as said stream of bits, whereby a client application may retrieve said digital object written as said stream of bits using said unique identifier.

13. A method as recited in claim 1 wherein said unique identifier identifies a manifest computer file within said storage cluster that includes a segment unique identifier for each of said segments of said second erasure coding storage format.

14. A non-transitory computer-readable medium as recited in claim 3 wherein said unique identifier identifies a manifest computer file within said storage cluster that includes a unique identifier for each of said segments of said second erasure coding storage format.

15. A method as recited in claim 5 wherein said request is received from a client application, said method further comprising:

calculating a unique identifier for said manifest computer file that uniquely identifies said manifest computer file within said storage cluster; and

returning said unique identifier identifying said manifest computer file to said client application.

16. A non-transitory computer-readable medium as recited in claim 6 wherein said request is received from a client application, said computer code also performing the following:

calculating a unique identifier for said manifest computer file that uniquely identifies said manifest computer file within said storage cluster; and

returning said unique identifier identifying said manifest computer file to said client application.

17. A method as recited in claim 9 wherein said unique identifier identifies a manifest computer file within said storage cluster that includes a unique identifier for each segment of said second erasure coding storage format.

18. A non-transitory computer-readable medium as recited in claim 10 wherein said unique identifier identifies a manifest computer file within said storage cluster that includes a unique identifier for each segment of said second erasure coding storage format.

19. A method as recited in claim 11 wherein said unique identifier of said digital object stored within said storage cluster in an erasure coding storage format identifies a manifest computer file within said storage cluster that includes a unique identifier for each segment of said erasure coding storage format.

20. A non-transitory computer-readable medium as recited in claim 12 wherein said unique identifier of said digital object stored within said storage cluster in an erasure coding storage format identifies a manifest computer file within said storage cluster that includes a unique identifier for each segment of said erasure coding storage format.

Assignments (4)
SECURITY INTEREST Recorded May 29, 2024
From: DATACORE SOFTWARE CORPORATION
To: VISTARA TECHNOLOGY GROWTH FUND V MASTER, LP
Reel/Frame 067563/0884 →
SECURITY INTEREST Recorded Oct 28, 2021
From: DATACORE SOFTWARE CORPORATION
To: STIFEL BANK
Reel/Frame 057969/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 16, 2021
From: CARINGO, INC.
To: DATACORE SOFTWARE CORPORATION
Reel/Frame 055607/0754 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 24, 2017
From: BAKER, DON; KLAGER, ANDREW; PIERCE, AARON; RING, JONATHAN; TURPIN, RUSSELL; YOAKLEY, DAVID; CARPENTIER, PAUL R,M
To: CARINGO INC.
Reel/Frame 043391/0694 →
Continuity (4)
Continuation 14834017 · Aug 24, 2015
Continuation 14320494 · Jun 30, 2014
Continuation 13517527 · Jun 13, 2012
Related Publication 20170351575A1 · Dec 7, 2017
Cited By (3)
US 12,248,690 US 12,299,302 US 12,321,625