# US 11,907,256 B2 · Query-based selection of storage nodes

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

- Number: US 11,907,256 B2
- Document ID: US11907256B2
- Status: Granted
- Kind: B2
- Application number: 17/955,165
- Filed: 2022-09-28
- Published: 2023-01-19
- Granted: 2024-02-20
- Earliest claimed: 2008-10-24
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Stefan Bernbo; Christian Melander; Gustav Petersson; Roger Persson
- Web page: https://patentgrep.com/patent/US11907256B2

## CPC

- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 16/1844: {Management specifically adapted to replicated file systems}
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- 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: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An illustrative method includes receiving, in response to a storage query sent to a plurality of storage nodes of a data storage system to inquire as to which of the storage nodes can store data, a plurality of responses from a subset of storage nodes included in the plurality of storage nodes, the responses including an indication as to whether any of the storage nodes included in the subset is already storing additional data having a data identifier included in the storage query; renaming, based on a particular storage node included in the subset indicating that the particular storage node is already storing the additional data, the data; selecting, based on the responses, multiple storage nodes included in the subset; and sending the data and the data identifier to the selected storage nodes for storage by the selected storage nodes.

## Claims

### Claim 1

A method comprising:
receiving, in response to a storage query sent to a plurality of storage nodes of a data storage system to inquire as to which of the storage nodes can store data, a plurality of responses from a subset of storage nodes included in the plurality of storage nodes, the responses including an indication as to whether any of the storage nodes included in the subset is already storing additional data having a data identifier included in the storage query;
renaming, based on a particular storage node included in the subset indicating that the particular storage node is already storing the additional data, the data;
selecting, based on the responses, multiple storage nodes included in the subset; and
sending the data and the data identifier to the selected storage nodes for storage by the selected storage nodes.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
receiving acknowledgement information from each storage node included in the selected storage nodes that successfully carries out a write operation with respect to the data; and
sending, to the selected storage nodes and based on the received acknowledgement information, a list identifying a storage node included in the selected storage nodes and that did not successfully carry out the write operation with respect to the data.

### Claim 3 (depends on 2)

The method of claim 2, wherein the list is configured to cause a particular storage node in the selected storage nodes to initiate a data replication procedure for the data.

### Claim 4 (depends on 3)

The method of claim 3, further comprising the particular storage node performing the data replication procedure for the data by:
sending an additional storage query to the plurality of storage nodes requesting identification of data storage nodes that store the data;
receiving one or more responses to the additional storage query from one or more other storage nodes included in the plurality of storage nodes and that store the data; and
selecting a storage node in the plurality of storage nodes that does not already store the data to store an additional copy of the data.

### Claim 5 (depends on 1)

The method of claim 1, wherein the data is computer-readable data.

### Claim 6 (depends on 1)

The method of claim 1, wherein the responses comprise geographic data that identifies a geographic position of each of the storage nodes included in the subset.

### Claim 7 (depends on 6)

The method of claim 6, wherein the selecting of the multiple storage nodes comprises selecting storage nodes that have a minimum geographic diversity based on the geographic data for inclusion in the multiple storage nodes.

### Claim 8 (depends on 1)

The method of claim 1, wherein the responses comprise information representative of at least one of free storage space or current load for each of the storage nodes included in the subset.

### Claim 9 (depends on 1)

The method of claim 1, wherein the multiple storage nodes comprises at least three storage nodes.

### Claim 10 (depends on 1)

The method of claim 1, wherein the storage query comprises a multicast storage query sent to a multicast address.

### Claim 11 (depends on 1)

The method of claim 1, wherein the receiving of the plurality of responses comprises receiving a unicast transmission from each storage node included in the subset of storage nodes.

### Claim 12 (depends on 1)

The method of claim 1, wherein the receiving of the plurality of responses, the selecting of the multiple storage nodes, and the sending of the data and the data identifier are performed by an application programming interface (API).

### Claim 13 (depends on 12)

The method of claim 12, wherein the API is executed by a device configured to communicate with the data storage system by way of a network.

### Claim 14 (depends on 12)

The method of claim 12, wherein the API is executed by a storage node included in the data storage system.

### Claim 15 (depends on 1)

The method of claim 1, wherein the responses further comprise information representative of a system age for each of the storage nodes included in the subset.

### Claim 16

A physical server running an application and configured to execute an application programming interface (API) to perform a process comprising:
receiving, in response to a storage query sent to a plurality of storage nodes of a data storage system to inquire as to which of the storage nodes can store data, a plurality of responses from a subset of storage nodes included in the plurality of storage nodes, the responses including an indication as to whether any of the storage nodes included in the subset is already storing additional data having a data identifier included in the storage query;
renaming, based on a particular storage node included in the subset indicating that the particular storage node is already storing the additional data, the data;
selecting, based on the responses, multiple storage nodes included in the subset; and
sending the data and the data identifier to the selected storage nodes for storage by the selected storage nodes.

### Claim 17 (depends on 16)

The physical server of claim 16, wherein the server is configured to communicate with the data storage system by way of a network.

### Claim 18 (depends on 16)

The physical server of claim 16, wherein the server is implemented by a storage node within the data storage system.

### Claim 19 (depends on 16)

The physical server of claim 16, wherein the API is further configured to:
receive acknowledgement information from each storage node included in the selected storage nodes that successfully carries out a write operation with respect to the data; and
send, to the selected storage nodes and based on the received acknowledgement information, a list identifying any storage node that did not successfully carry out the write operation with respect to the data.

### Claim 20 (depends on 19)

The physical server of claim 19, wherein the list is configured to cause at least one of the selected storage nodes to initiate a data replication procedure for the data.
