# US 11,907,566 B1 · Coordination of task execution in a distributed storage network

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

- Number: US 11,907,566 B1
- Document ID: US11907566B1
- Status: Granted
- Kind: B1
- Application number: 17/007,863
- Filed: 2020-08-31
- Granted: 2024-02-20
- Earliest claimed: 2015-09-24
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Patrick A. Tamborski
- Web page: https://patentgrep.com/patent/US11907566B1

## CPC

- 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]
- G06F 3/0611: {in relation to response time}
- G06F 3/0614: {Improving the reliability of storage systems}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0661: {Format or protocol conversion arrangements}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 11/1092: {Rebuilding, e.g. when physically replacing a failing disk}
- H03M 13/154: {Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial}
- H03M 13/3761: {using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes}
- H04L 63/061: {for key exchange, e.g. in peer-to-peer networks (cryptographic mechanisms or cryptographic arrangements for key agreement H04L9/0838)}
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- H03M 13/1515: {Reed-Solomon codes}
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- 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)

## Abstract

Methods for use in a dispersed storage network (DSN) to coordinate execution of tasks by storage units of the DSN. In an embodiment, a computing device of the DSN receives a task (e.g., a maintenance task) to be performed by at least one storage unit of a plurality of storage units. The computing device determines the availability of processing resources of the storage units for execution of the received task. The computing device further compares the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received task, and allocates the received task to the identified storage. In various embodiments, comparing the respective availability of the processing resources includes predicting an impact, with respect to other storage units of the DSN, of performing the received task on the identified storage unit.

## Claims

### Claim 1

A method comprises:
receiving, by a computing device of a storage network, a maintenance task to be performed by a plurality of storage units of the storage network, wherein the maintenance task does not include a user data allocation request, and wherein an execution of the maintenance task by a particular storage unit of the plurality of storage units results in temporary unavailability of the particular storage unit to perform a user data allocation request;
determining, by the computing device, the availability of processing resources of storage units of the plurality of storage units for execution of the received maintenance task;
comparing, by the computing device, the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received maintenance task; and
allocating the received maintenance task to the identified storage unit of the plurality of storage units.

### Claim 2 (depends on 1)

The method of claim 1, wherein comparing the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received maintenance task includes:
predicting an impact, with respect to other storage units of the plurality of storage units, of performing the received maintenance task on the identified storage unit to generate a predicted impact;
performing a comparison of the predicted impact to a storage unit availability threshold level; and
in response to determining that the comparison is favorable, indicating to allocate the received maintenance task to the identified storage unit.

### Claim 3 (depends on 2)

The method of claim 2, wherein comparing the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received maintenance task further includes:
predicting an impact, with respect to other storage units of the plurality of storage units, of performing the received maintenance task on a first storage unit of the plurality of storage units to generate a first predicted impact;
performing a comparison of the first predicted impact to a storage unit availability threshold level; and
in response to determining that the comparison is unfavorable, indicating not to allocate the received maintenance task to the first storage unit.

### Claim 4 (depends on 1)

The method of claim 1, wherein the identified storage unit is associated with the plurality of storage units as one or more sets of storage units.

### Claim 5 (depends on 1)

The method of claim 1 further comprises:
generating an ordered list of tasks to be performed by one or more storage units of the plurality of storage units, wherein the received maintenance task is included in the ordered list of tasks.

### Claim 6 (depends on 5)

The method of claim 5, wherein the ordered list of tasks is associated with a task type corresponding to the received maintenance task.

### Claim 7 (depends on 1)

The method of claim 1, wherein allocating the received maintenance task to the identified storage unit of the plurality of storage units includes issuing a task request, corresponding to the received maintenance task, for reception by the identified storage unit to facilitate execution of the received maintenance task.

### Claim 8 (depends on 1)

The method of claim 1, wherein the user data allocation request is a request to write data or a request to read data.

### Claim 9 (depends on 1)

The method of claim 1, wherein the received maintenance task is a partial maintenance task.

### Claim 10

A computing device comprises:
at least one network interface;
memory that stores operational instructions; and
processing circuitry operably coupled to the at least one network interface and to the memory, wherein the processing circuitry is configured to execute the operational instructions to:
receive, via the at least one network interface, a maintenance task to be performed by a plurality of storage units of a storage network, wherein the maintenance task does not include a user data allocation request, and wherein an execution of the maintenance task by a particular storage unit of the plurality of storage units results in temporary unavailability of the particular storage unit for performing a request to store data;
determine the availability of processing resources of storage units of the plurality of storage units for execution of the received maintenance task;
compare the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received maintenance task; and
allocate, via the at least one network interface, the received maintenance task to the identified storage unit of the plurality of storage units.

### Claim 11 (depends on 10)

The computing device of claim 10, wherein comparing the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received maintenance task includes:
predicting an impact, with respect to other storage units of the plurality of storage units, of performing the received maintenance task on the identified storage unit to generate a predicted impact;
performing a comparison of the predicted impact to a storage unit availability threshold level; and
in response to determining that the comparison is favorable, indicating to allocate the received maintenance task to the identified storage unit.

### Claim 12 (depends on 11)

The computing device of claim 11, wherein comparing the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received maintenance task further includes:
predicting an impact, with respect to other storage units of the plurality of storage units, of performing the received maintenance task on a first storage unit of the plurality of storage units to generate a first predicted impact;
performing a comparison of the first predicted impact to a storage unit availability threshold level; and
in response to determining that the comparison is unfavorable, indicating not to allocate the received maintenance task to the first storage unit.

### Claim 13 (depends on 11)

The computing device of claim 11, wherein the predicted impact relates to a storage reliability level.

### Claim 14 (depends on 10)

The computing device of claim 10, wherein the processing circuitry is further configured to execute the operational instructions to:
generate an ordered list of tasks to be performed by one or more storage units of the plurality of storage units, wherein the received maintenance task is included in the ordered list of tasks.

### Claim 15 (depends on 14)

The computing device of claim 14, wherein the ordered list of tasks is associated with a task type corresponding to the received maintenance task.

### Claim 16 (depends on 10)

The computing device of claim 10, wherein allocating the received maintenance task to the identified storage unit of the plurality of storage units includes issuing, via the at least one network interface, a task request for reception by the identified storage unit to facilitate execution of the received maintenance task.

### Claim 17 (depends on 10)

The computing device of claim 10, wherein an execution of the maintenance task by the particular storage unit of the plurality of storage units further results in temporary unavailability of the particular storage unit for performing a request to read stored data.

### Claim 18 (depends on 10)

The computing device of claim 10, wherein the received maintenance task is a partial maintenance task.

### Claim 19

A computer readable storage medium comprises:
at least one memory section that stores operational instructions that, when executed by one or more processing modules of one or more computing devices of a storage network, causes the one or more computing devices to:
receive a maintenance task to be performed by a plurality of storage units of the storage network, wherein the maintenance task does not include a user data allocation request, and wherein an execution of the maintenance task by a particular storage unit of the plurality of storage units results in temporary unavailability of the particular storage unit to perform a user data allocation request;
determine the availability of processing resources of storage units of the plurality of storage units for execution of the received maintenance task;
compare the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received maintenance task; and
allocate the received maintenance task to the identified storage unit of the plurality of storage units.

### Claim 20 (depends on 19)

The computer readable storage medium of claim 19, wherein comparing the respective availability of the processing resources of the storage units of the plurality of storage units to identify a storage unit for execution of the received maintenance task includes:
predicting an impact, with respect to other storage units of the plurality of storage units, of performing the received maintenance task on the identified storage unit to generate a predicted impact;
performing a comparison of the predicted impact to a storage unit availability threshold level; and
in response to determining that the comparison is favorable, indicating to allocate the received maintenance task to the identified storage unit.
