IP Library Granted Patent US 9,923,970
Granted Patent B2
US 9,923,970 · App. 14/832,075 · Granted Mar 20, 2018

Multicast collaborative erasure encoding and distributed parity protection

Inventors: Caitlin Bestler (Sunnyvale, CA); Alexander Aizman (Santa Clara, CA); Robert E. Novak (Union City, CA)
Assignee: Nexenta Systems, Inc.
H04L67/1097G06F11/1076H04L12/18H04L12/1854H04L12/1877H04L67/1095H04L69/164G06F2211/1028H04L67/1002
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 9,923,970
App. No.
14/832,075
Granted
Mar 20, 2018
Kind
B2
Abstract

The present disclosure provides methods and systems for multicast collaborative erasure encoding and methods and systems for distributed parity protection. One embodiment relates to a method of multicast collaborative erasure encoding of a chunk stored in a distributed object storage cluster. A roll-call request is multicast to every storage server in a negotiating group for the chunk. Roll-call inventory responses are generated and multicast by every storage server in the negotiating group. The roll-call inventory responses are collected by every storage server in the negotiating group from other storage servers in the negotiating group to form a set of roll-call inventory responses. A logical evaluation of the set of roll-call inventory responses may then be performed by every storage server in the negotiating group. Other embodiments, aspects and features are also disclosed.

Claims (55)

1. A method of multicast collaborative erasure encoding of a chunk stored in a distributed object storage cluster, the method comprising:

multicasting a roll-call request to every storage server in a negotiating group for the chunk;

generating and multicasting roll-call inventory responses by every storage server in the negotiating group; and

collecting the roll-call inventory responses by every storage server in the negotiating group from other storage servers in the negotiating group to form a set of roll-call inventory responses;

processing the set of roll-call inventory responses by every storage server in the negotiating group, wherein the processing diagnoses a state with a whole replica of the chunk held by at least one storage server and a replication count for erasure-encoded slices that is less than a target number of erasure-encoded slices; and

assigning actions to the storage servers holding a whole replica of the chunk to generate erasure-encoded slices and replicate the erasure-encoded slices to storage servers in the negotiating group that are selected to hold the slices.

2. The method of claim 1 , wherein the roll-call request comprises:

an identifier for the negotiating group;

an identifier for the chunk; and

an identifier for the roll-call request.

3. The method of claim 2 , wherein the roll-call request further comprises:

identification of a specific erasure-encoding algorithm to be used.

4. The method of claim 2 , wherein a roll-call inventory response multicast by a storage server comprises:

the identifier for the roll-call request;

an identifier for the storage server;

whether a whole replica of the chunk is stored at the storage server; and

which, if any, erasure-encoded slices of the chunk are stored at the storage server.

5. The method of claim 1 , wherein a roll-call inventory response that is missing due to not being collected by a storage server is ignored without a retransmission request.

6. The method of claim 1 , wherein the processing begins after the roll-call inventory responses have been received from every storage server in the negotiating group or a predetermined time has elapsed.

7. The method of claim 1 , further comprising:

each storage server in the negotiating group determining a subset of the actions to be performed by itself based on the set of roll-call inventory responses; and

each storage server in the negotiating group performing the subset of the actions to be performed by itself.

8. The method of claim 7 , further comprising:

selection of a storage server in the negotiating group to multicast a new roll-call request for the chunk.

9. The method of claim 8 , wherein the selection of the storage server in the negotiating group to multicast the new roll-call request comprises:

each storage server in the negotiating group pseudo-randomly selecting a time to multicast a new roll-call request for the chunk, wherein the new roll-call request is not issued if pre-empted by receipt of the new roll-call request as multicast by another storage server.

10. A distributed object storage system that stores objects in chunks, the system comprising:

a plurality of storage servers communicatively interconnected by a network; and

negotiating groups for the chunks,

wherein a negotiating group for a chunk comprises a group of the storage servers that are assigned to store and provide access to the chunk, and

wherein a storage server in the negotiating group for the chunk includes executable code that performs steps including:

multicasting a roll-call request to other storage servers in the negotiating group for the chunk;

collecting roll-call inventory responses received from the other storage servers in the negotiating group for the chunk to form a set of roll-call inventory responses;

processing the set of roll-call inventory responses, wherein the processing diagnoses a state with a whole replica of the chunk held by at least one storage server and a replication count for erasure-encoded slices that is less than a target number of erasure-encoded slices; and

assigning an action to the at least one storage server holding a whole replica of the chunk to generate an erasure-encoded slice and replicate the erasure-encoded slice to a storage server in the negotiating group that is selected to hold the slices.

11. The system of claim 10 , wherein the executable code performs further steps including:

receiving the roll-call request from another storage server in the negotiating group; and

multicasting a roll-call inventory response to the negotiating group in response to the roll-call request.

12. The system of claim 11 , wherein the roll-call request comprises:

an identifier for the negotiating group;

an identifier for the chunk;

an identifier for the roll-call request; and

identification of a specific erasure-encoding algorithm to be used.

13. The system of claim 11 , wherein the roll-call inventory response comprises:

the identifier for the roll-call request;

an identifier for the storage server;

whether a whole replica of the chunk is stored at the storage server; and

which, if any, erasure-encoded slices of the chunk are stored at the storage server.

14. The system of claim 10 , wherein the processing begins after the roll-call inventory responses have been collected from every storage server in the negotiating group or a predetermined time has elapsed.

15. The system of claim 10 , wherein the executable code performs further steps including:

determining a subset of the actions to be performed by the storage server based on the set of roll-call inventory responses; and

performing the subset of the actions.

16. The system of claim 15 , wherein one storage server in the negotiating group is selected to multicast a new roll-call request for the chunk.

17. The system of claim 16 , wherein the selection of the one storage server in the negotiating group to multicast the new roll-call request comprises:

each storage server in the negotiating group pseudo-randomly selecting a time to multicast a new roll-call request for the chunk, wherein the new roll-call request is not issued if pre-empted by receipt of the new roll-call request as multicast by another storage server.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2022
From: BESTLER, CAITLIN; AIZMAN, ALEXANDER; NOVAK, ROBERT E.
To: NEXENTA SYSTEMS, INC.
Reel/Frame 060090/0019 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2019
From: NEXENTA SYSTEMS, INC.
To: NEXENTA BY DDN, INC.
Reel/Frame 050624/0524 →
RELEASE OF SECURITY INTEREST Recorded Mar 8, 2018
From: SILICON VALLEY BANK
To: NEXENTA SYSTEMS, INC.
Reel/Frame 045144/0872 →
SECURITY INTEREST Recorded Nov 9, 2016
From: NEXENTA SYSTEMS, INC.
To: SILICON VALLEY BANK
Reel/Frame 040270/0049 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2015
From: BESTLER, CAITLIN; AIZMAN, ALEXANDER; NOVAK, ROBERT E.
To: NEXENTA SYSTEMS, INC.
Reel/Frame 036633/0631 →
Continuity (3)
Provisional Application 62040962 · Aug 22, 2014
Provisional Application 62098727 · Dec 31, 2014
Related Publication 20160057226A1 · Feb 25, 2016