# US 11,310,317 B1 · Efficient load balancing

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

- Number: US 11,310,317 B1
- Document ID: US11310317B1
- Status: Granted
- Kind: B1
- Application number: 16/799,551
- Filed: 2020-02-24
- Granted: 2022-04-19
- Earliest claimed: 2014-06-04
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Prabhath Sajeepa; Daniel Talayco; Qing Yang; Robert Lee
- Web page: https://patentgrep.com/patent/US11310317B1

## 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/06: Digital input from, or digital output to, record carriers {, e.g. RAID, emulated record carriers or networked record carriers}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0611: {in relation to response time}
- G06F 3/0613: {in relation to throughput}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/2092: {Techniques of failing over between control units}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- H03M 13/154: {Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial}
- H04L 47/125: by balancing the load, e.g. traffic engineering
- H04L 49/111: Switch interfaces, e.g. port details
- H04L 49/15: Interconnection of switching modules
- H04L 49/356: for storage area networks
- H04L 67/1004: Server selection for load balancing
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G06F 2201/805: Real-time
- G06F 2201/845: Systems in which the redundancy can be transformed in increased performance
- G06F 2212/7206: Reconfiguration of flash memory system
- G06F 2212/7207: management of metadata or control data
- 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)
- G11C: STATIC STORES (semiconductor memory devices H10B)
- 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

A storage system is provided. The storage system includes a first storage cluster, the first storage cluster having a first plurality of storage nodes coupled together and a second storage cluster, the second storage cluster having a second plurality of storage nodes coupled together. The system includes an interconnect coupling the first storage cluster and the second storage cluster and a first pathway coupling the interconnect to each storage cluster. The system includes a second pathway, the second pathway coupling at least one fabric module within a chassis to each blade within the chassis.

## Claims

### Claim 1

A storage system, comprising:
an interconnect coupling a plurality of storage arrays, the interconnect configurable to perform a first load balancing operation to identify a storage array among the plurality of storage arrays to which data should be transmitted, wherein the storage array comprises:
a load balancer to perform a second load balancing operation to identify a storage node within the storage array to which the data should be transmitted.

### Claim 2 (depends on 1)

The storage system of claim 1, wherein each of the plurality of storage arrays includes a plurality of blades, in which one of the plurality of blades has a differing network bandwidth than another one of the plurality of blades.

### Claim 3 (depends on 1)

The storage system of claim 1, wherein each of the plurality of storage arrays includes a plurality of blades, in which one of the plurality of blades has a differing capacity of non-volatile storage than another one of the plurality of blades.

### Claim 4 (depends on 3)

The storage system of claim 3, wherein the one of the plurality of blades contains storage units having non-volatile memory of differing capacity.

### Claim 5 (depends on 1)

The storage system of claim 1, wherein the second load balancing operation is based on a table accessed by a fabric module of the storage array, and wherein the fabric module is configurable to forward packets to a blade in a differing storage array.

### Claim 6 (depends on 4)

The storage system of claim 4, wherein storage units of differing blades can communicate with each other without assistance from storage nodes.

### Claim 7 (depends on 1)

The storage system of claim 1, wherein the storage system presents a single media access control address to external networks and wherein each of the plurality of storage arrays within the storage system is assigned a unique media access control address.

### Claim 8

A method, comprising:
forwarding an input/output (I/O) request from a switch to a fabric module of one of multiple storage arrays based on a first load balancing mechanism; and
forwarding the I/O request from the fabric module of the one of the multiple storage arrays to one of multiple storage nodes within the one of the multiple storage arrays based upon a second load balancing mechanism.

### Claim 9 (depends on 8)

The method of claim 8, wherein the first load balancing mechanism is based on an amount of blades within each of the multiple chassis and the second load balancing mechanism differs from the first load balancing mechanism.

### Claim 10 (depends on 8)

The method of claim 8, wherein each of the plurality of storage arrays includes a plurality of blades, in which one of the plurality of blades has a differing capacity of non-volatile storage than another one of the plurality of blades.

### Claim 11 (depends on 10)

The method of claim 10, wherein the one of the plurality of blades contains storage units having non-volatile memory of differing capacity.

### Claim 12 (depends on 11)

The method of claim 11 wherein storage units of differing blades can communicate with each other without assistance from storage nodes.

### Claim 13 (depends on 8)

The method of claim 8, wherein the storage system presents a single media access control address to external networks and wherein each one of the multiple storage arrays is assigned a unique media access control address.

### Claim 14 (depends on 8)

The method of claim 8, wherein storage arrays with differing blade populations receive differing traffic loads.

### Claim 15

A tangible, non-transitory, computer-readable media having instructions thereupon which, when executed by a processor, cause the processor to perform a method comprising:
forwarding an input/output (I/O) request from a switch to a fabric module of one of multiple storage arrays based on a first load balancing mechanism; and
forwarding the I/O request from the fabric module of the one of the multiple storage arrays to one of multiple storage nodes within the one of the multiple storage arrays based upon a second load balancing mechanism.

### Claim 16 (depends on 15)

The computer-readable media of claim 15, wherein the first load balancing mechanism is based on an amount of blades within each of the multiple chassis and the second load balancing mechanism differs from the first load balancing mechanism.

### Claim 17 (depends on 15)

The computer-readable media of claim 15, wherein each of the plurality of storage arrays includes a plurality of blades, in which one of the plurality of blades has a differing capacity of non-volatile storage than another one of the plurality of blades.

### Claim 18 (depends on 17)

The computer-readable media of claim 17, wherein the one of the plurality of blades contains storage units having non-volatile memory of differing capacity.

### Claim 19 (depends on 18)

The computer-readable media of claim 18, wherein storage units of differing blades can communicate with each other without assistance from storage nodes.

### Claim 20 (depends on 15)

The computer-readable media of claim 15, wherein the storage system presents a
single media access control address to external networks and wherein each one of the multiple storage arrays is assigned a unique media access control address.
