# US 10,503,621 B2 · Manager election for erasure coding groups

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,621 B2
- Document ID: US10503621B2
- Status: Granted
- Kind: B2
- Application number: 15/589,872
- Filed: 2017-05-08
- Published: 2017-08-24
- Granted: 2019-12-10
- Earliest claimed: 2015-02-19
- Assignees: NetApp, Inc.
- Applicants: NetApp, Inc.
- Inventors: Dheeraj Raghavender Sangamkar; Song Guen Yoon; Emalayan Vairavanathan; Yi Zhang
- Web page: https://patentgrep.com/patent/US10503621B2

## CPC

- G06F 11/2092: {Techniques of failing over between control units}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/1234: {Errors handling and recovery, e.g. reprinting (G06F3/1261 takes precedence)}
- G06F 9/5038: {considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration (scheduling strategies G06F9/4881 and subgroups)}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/1402: {Saving, restoring, recovering or retrying}
- G06F 11/1471: involving logging of persistent data for recovery
- G06F 11/1489: using recovery blocks
- G06F 11/2069: {Management of state, configuration or failover}
- H03M 13/154: {Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- H04L 69/40: for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection (management of faults, events, alarms or notifications in data switching networks H04L41/06)
- G06F 11/20: using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F 2201/805: Real-time
- G06F 2201/85: Active fault masking without idle spares
- G06F 2211/1028: Distributed, i.e. distributed RAID systems with parity
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

To ensure that there is an elected manager among storage nodes of an erasure coding group (“ECG”), an ECG manager (“ECGM”) election process is periodically performed among available storage nodes that are configured with the software to perform the services of an ECGM. When a storage node is activated, an ECGM process of the storage node begins executing and is assigned a process identifier (“PID”). A storage node can utilize a service query framework to identify other available storage nodes and retrieve their ECGM PIDs. The storage node then selects a PID according to a criterion and elects the storage node corresponding to the selected PID to be the acting ECGM. This process is performed periodically, so even if the acting ECGM storage node fails, a new ECGM is eventually selected from the available storage nodes.

## Claims

### Claim 1

A method comprising:
retrieving, by a first storage node in a set of storage nodes, first identifiers which correspond to a process executing on each storage node in the set of storage nodes, wherein the process is for managing data storage among the set of storage nodes;
selecting a first identifier of the first identifiers based, at least in part, on a first criterion;
determining whether the first identifier matches an identifier corresponding to the process on the first storage node;
based on determining that the first identifier matches the identifier corresponding to the process on the first storage node, managing, by the first storage node, data storage among the set of storage nodes; and
based on determining that the first identifier does not match an identifier corresponding to the process on the first storage node,
determining, by the first storage node, a second storage node of the set of storage nodes to be an acting manager for the set of storage nodes; and
directing, by the first storage node, data storage management requests to the second storage node.

### Claim 2 (depends on 1)

The method of claim 1 further comprising:
based on detecting that the second storage node is no longer accessible,
identifying a first subset of the set of storage nodes which are operational;
retrieving second identifiers which correspond to the process executing on each storage node in the first subset of storage nodes;
selecting a second identifier of the second identifiers based, at least in part, on a second criterion; and
determining a storage node in the first subset of storage nodes corresponding to the second identifier to be an acting manager for the first subset of storage nodes.

### Claim 3 (depends on 2)

The method of claim 2 further comprising:
identifying a second subset of the set of storage nodes which are operational; and
electing a storage node in the second subset of storage nodes to be an acting manager for the second subset of storage nodes;
wherein the acting manager for the first subset of storage nodes is different than the acting manager in the second subset of storage nodes.

### Claim 4 (depends on 3)

The method of claim 3 further comprising:
based on detecting that all storage nodes in the set of storage nodes are accessible, electing a single storage node of the set of storage nodes to be an acting manager for the set of storage nodes.

### Claim 5 (depends on 1)

The method of claim 1, wherein selecting the first identifier based, at least in part, on the first criterion comprises at least one of:
selecting the first identifier to be a lowest value identifier of the first identifiers; and
selecting the first identifier to be a highest value identifier of the first identifiers.

### Claim 6 (depends on 1)

The method of claim 1, wherein the set of storage nodes comprises storage nodes of a plurality of storage nodes which comprise program code for the process.

### Claim 7 (depends on 1)

The method of claim 1, wherein a data storage management request comprises at least one of a request to create an erasure coding group, mark an erasure coding group as full, and mark an erasure coding group as in need of repair.

### Claim 8 (depends on 1)

The method of claim 1 further comprising:
based on detecting that a plurality of the set of storage nodes are no longer accessible,
identifying a number of available storage nodes in the set of storage nodes;
determining whether the number of available storage nodes is sufficient to satisfy an erasure coding profile;
based on determining that the number of available storage nodes is sufficient to satisfy the erasure coding profile, electing a storage node from available storage nodes in the set of storage nodes to be an acting manager; and
based on determining that the number of available storage nodes is insufficient to satisfy the erasure coding profile, indicate that there is an insufficient number of available storage nodes to satisfy the erasure coding profile.

### Claim 9 (depends on 1)

The method of claim 1 further comprising:
after a period of time has elapsed,
requesting, by the first storage node, second identifiers which correspond to a process executing on each available storage node in the set of storage nodes; and
electing an available storage node in the set of storage nodes to be an acting manager based, at least in part, on the second identifiers.

### Claim 10

One or more non-transitory machine-readable storage media comprising program code for maintaining a single data storage manager among a plurality storage nodes, the program code to:
elect a first storage node to act as a data storage manager for a first set of storage nodes and a second set of storage nodes, wherein the first set of storage nodes and the second set of storage nodes are communicatively coupled via a network and cooperate to facilitate data storage;
after an event disrupting communication between the first set of storage nodes and the second set of storage nodes,
elect a second storage node to act as a data storage manager for the first set of storage nodes; and
elect a third storage node to act as a data storage manager for the second set of storage nodes; and
after communication between the first set of storage nodes and the second set of storage nodes has been restored, elect a fourth storage node to act as a data storage manager for a first set of storage nodes and a second set of storage nodes.

### Claim 11 (depends on 10)

The machine-readable storage media of claim 10, wherein the program code to elect a storage node to act as a data storage manager occurs after a time period has elapsed.

### Claim 12 (depends on 10)

The machine-readable storage media of claim 10 further comprising program code to, based on detecting that communication with the first storage node has been disrupted, enable each storage node in the first set of storage nodes and the second set of storage nodes to act as a data storage manager until a fifth storage node is elected to act as a data storage manager.

### Claim 13

A first storage node comprising:
a processor; and
a non-transitory machine-readable storage medium having program code executable by the processor to cause the first storage node to,
retrieve first identifiers which correspond to a process executing on each storage node in a set of storage nodes, wherein the process is for managing data storage among the set of storage nodes, wherein the set of storage nodes comprises the first storage node;
select a first identifier of the first identifiers based, at least in part, on a first criterion;
determine whether the first identifier matches an identifier corresponding to the process on the first storage node;
based on a determination that the first identifier matches the identifier corresponding to the process on the first storage node, begin managing data storage among the set of storage nodes; and
based on a determination that the first identifier does not match an identifier corresponding to the process on the first storage node,
determining a second storage node of the set of storage nodes to be an acting manager for the set of storage nodes; and
directing data storage management requests to the second storage node.

### Claim 14 (depends on 13)

The first storage node of claim 13 further comprising program code executable by the processor to cause the first storage node to:
based on detecting that the second storage node is no longer accessible,
identify a first subset of the set of storage nodes which are operational;
retrieve second identifiers which correspond to the process executing on each storage node in the first subset of storage nodes;
select a second identifier of the second identifiers based, at least in part, on a second criterion; and
determine a storage node in the first subset of storage nodes corresponding to the second identifier to be an acting manager for the first subset of storage nodes.

### Claim 15 (depends on 14)

The first storage node of claim 14 further comprising program code executable by the processor to cause the first storage node to:
identify a second subset of the set of storage nodes which are operational; and
elect a storage node in the second subset of storage nodes to be an acting manager for the second subset of storage nodes;
wherein the acting manager for the first subset of storage nodes is different than the acting manager in the second subset of storage nodes.

### Claim 16 (depends on 15)

The first storage node of claim 15 further comprising program code executable by the processor to cause the first storage node to:
based on detecting that all storage nodes in the set of storage nodes are accessible, elect a single storage node of the set of storage nodes to be an acting manager for the set of storage nodes.

### Claim 17 (depends on 13)

The first storage node of claim 13, wherein the program code executable by the processor to cause the first storage node to select the first identifier based, at least in part, on the first criterion comprises program code executable by the processor to cause the first storage node to at least one of:
select the first identifier to be a lowest value identifier of the first identifiers; and
select the first identifier to be a highest value identifier of the first identifiers.

### Claim 18 (depends on 13)

The first storage node of claim 13, wherein a data storage management request comprises at least one of a request to create an erasure coding group, mark an erasure coding group as full, and mark an erasure coding group as in need of repair.

### Claim 19 (depends on 13)

The first storage node of claim 13 further comprising program code executable by the processor to cause the first storage node to:
based on detecting that a plurality of the set of storage nodes are no longer accessible,
identify a number of available storage nodes in the set of storage nodes;
determine whether the number of available storage nodes is sufficient to satisfy an erasure coding profile;
based on a determination that the number of available storage nodes is sufficient to satisfy the erasure coding profile, elect a storage node from available storage nodes in the set of storage nodes to be an acting manager; and
based on a determination that the number of available storage nodes is insufficient to satisfy the erasure coding profile, indicate that there is an insufficient number of available storage nodes to satisfy the erasure coding profile.

### Claim 20 (depends on 13)

The first storage node of claim 13 further comprising program code executable by the processor to cause the first storage node to:
after a period of time has elapsed,
request second identifiers which correspond to a process executing on each available storage node in the set of storage nodes; and
elect an available storage node in the set of storage nodes to be an acting manager based, at least in part, on the second identifiers.
