# US 10,374,868 B2 · Distributed command processing in a flash storage system

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

- Number: US 10,374,868 B2
- Document ID: US10374868B2
- Status: Granted
- Kind: B2
- Application number: 14/927,280
- Filed: 2015-10-29
- Published: 2017-05-04
- Granted: 2019-08-06
- Earliest claimed: 2015-10-29
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Andrew Bernat; Timothy Brennan; Alan Driscoll; Grigori Inozemtsev
- Web page: https://patentgrep.com/patent/US10374868B2

## CPC

- H04L 41/042: comprising distributed management centres cooperatively managing the network
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0629: {Configuration or reconfiguration of storage systems}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- H04L 41/0853: by actively collecting configuration information or by backing up configuration information
- 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 41/0869: Validating the configuration within one network element
- 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)

## Abstract

Distributing management responsibilities for a storage system that includes a storage array controller and a plurality of storage devices, including: identifying a plurality of elements in the storage system; for each of the plurality of elements in the storage system, creating a distributed manager, wherein each distributed manager is configured for gathering information describing the state of the associated element in the storage system, determining an action to perform against the associated element in the storage system, and executing an approved action against the associated element in the storage system; and creating a distributed management hierarchy that includes each of the distributed managers.

## Claims

### Claim 1

A method of load balancing of command processing in a storage system, the storage system including one or more storage devices and one or more storage array controllers, the method comprising:
for each of a plurality of components in the storage system, creating a management module, wherein each management module is configured to:
receive, from another module, a request to execute a command against a component associated with the other module;
determine, based on configuration parameters associated with the management module, whether the management module is authorized to approve the request; and
responsive to determining that the management module is authorized to approve the request, determine whether to approve the request.

### Claim 2 (depends on 1)

The method of claim 1 wherein each management module is further configured to:
responsive to determining that the management module is not authorized to approve the request, forward the request to a parent management module.

### Claim 3 (depends on 1)

The method of claim 1 wherein each management module is further configured to reject the request.

### Claim 4 (depends on 1)

The method of claim 1 wherein each management module is further configured to:
receive an approved request;
identify a child management module for receiving the approved request; and
send, to the child management module, the approved request.

### Claim 5

An apparatus for load balancing of command processing in a storage system that includes a plurality of storage devices and one or more storage array controllers, the apparatus comprising a computer processor and a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:
for each of a plurality of components in the storage system, creating a management module, wherein each management module is configured to:
receive, from another module, a request to execute a command against a component associated with the other module;
determine, based on configuration parameters associated with the management module, whether the management module is authorized to approve the request; and
responsive to determining that the management module is authorized to approve the request, determine whether to approve the request.

### Claim 6 (depends on 5)

The apparatus of claim 5 wherein each management module is further configured to:
responsive to determining that the management module is not authorized to approve the request, forward the request to a parent management module.

### Claim 7 (depends on 5)

The apparatus of claim 5 wherein each management module is further configured to reject the request.

### Claim 8 (depends on 5)

The apparatus of claim 5 wherein each management module is further configured to:
receive an approved request;
identify a child management module for receiving the approved request; and
send, to the child management module, the approved request.

### Claim 9

A computer program product for load balancing of command processing in a storage system that includes a plurality of storage devices and one or more storage array controllers, the computer program product including a non-transitory computer readable medium comprising computer program instructions that, when executed, cause a computer to carry out the steps of:
for each of a plurality of components in the storage system, creating a management module, wherein each management module is configured to:
receive, from another module, a request to execute a command against a component associated with the other module;
determine, based on configuration parameters associated with the management module, whether the management module is authorized to approve the request; and
responsive to determining that the management module is authorized to approve the request, determine whether to approve the request.

### Claim 10 (depends on 9)

The computer program product of claim 9 wherein each management module is further configured to:
responsive to determining that the management module is not authorized to approve the request, forward the request to a parent management module.

### Claim 11 (depends on 9)

The computer program product of claim 9 wherein each management module is further configured to reject the request.
