# US 10,481,833 B2 · Transferring data encoding functions 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 10,481,833 B2
- Document ID: US10481833B2
- Status: Granted
- Kind: B2
- Application number: 15/850,127
- Filed: 2017-12-21
- Published: 2018-04-26
- Granted: 2019-11-19
- Earliest claimed: 2014-10-29
- Assignees: Pure Storage, Inc.
- Applicants: International Business Machines Corporation
- Inventors: Wesley B. Leggette; Ravi V. Khadiwala; Bruno Hennig Cabral; Jason K. Resch
- Web page: https://patentgrep.com/patent/US10481833B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- G06F 3/065: {Replication mechanisms}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for transferring data encoding begins by receiving a data access request to access a data object that is based on a set of encoded data slices (EDSs) that is distributedly stored among a plurality of storage units (SUs) associated with a plurality of storage sites, and continues with a computing device selecting respective numbers of SUs at each of the plurality of storage sites to support the data access request. The method continues with the computing device selecting another computing device that is associated with a storage site of the plurality of storage sites to process the data access request, based on the respective numbers of SUs at each of the plurality of storage sites. The method continues with the computing device transmitting the data access request to the another computing device to for processing.

## Claims

### Claim 1

A computing device comprising:
an interface configured to interface and communicate with a distributed storage network (DSN);
memory that stores operational instructions; and
processing circuitry operably coupled to the interface and to the memory, wherein the processing circuitry is configured to execute the operational instructions to:
receive a data access request to access a data object that is based on a set of encoded data slices (EDSs) that is distributedly stored among a plurality of storage units (SUs) associated with a plurality of storage sites, wherein a data object is segmented into a plurality of data segments, and wherein the data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce a set of encoded data slices (EDSs);
select respective numbers of SUs at each of the plurality of storage sites to support the data access request;
based on the respective numbers of SUs at each of the plurality of storage sites, select a first computing device that is associated with a first storage site of the plurality of storage sites to process the data access request; and
transmit the data access request to the first computing device to be processed by the first computing device.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein the data access request includes a consistency level indicator and further wherein the consistency level indicator includes information sufficient to determine a probability that a read data request can provide a most recent version of the data object.

### Claim 3 (depends on 1)

The computing device of claim 1, wherein the plurality of storage sites includes a storage site with a number of SUs that is larger than the number of SUs for the other storage sites of the plurality of storage sites and further wherein the storage site is the first storage site.

### Claim 4 (depends on 1)

The computing device of claim 1, wherein the respective numbers of SUs at each of the plurality of storage sites selected to support the data access request are selected based on at least one of a number of storage units available at each storage site, a performance level for one or more storage units at each storage site, a predetermination, and interpreting a DSN registry.

### Claim 5 (depends on 1)

The computing device of claim 1, wherein the data access request is a store data request.

### Claim 6 (depends on 1)

The computing device of claim 1, wherein the processing circuitry is further configured to execute the operational instructions to:
issue one or more write slice requests to the SUs at each of the plurality of storage sites; and
receive one or more write slice responses from at least some of the SUs at each of the plurality of storage sites.

### Claim 7 (depends on 6)

The computing device of claim 6, wherein the processing circuitry is further configured to execute the operational instructions to:
determine whether a favorable number of write slice responses have been received from SUs at each of the plurality of storage sites, and
when a favorable number of write slice responses have been received from the plurality of SUs, issue a store data request to at least some of the SUs at each of the plurality of storage sites from which a favorable write slice response has been received.

### Claim 8 (depends on 7)

The computing device of claim 7, wherein a favorable write slice response is a write slice response received within a predetermined time-frame.

### Claim 9

A method for execution by one or more processing modules of one or more computing devices of a dispersed storage network (DSN), the method comprises:
receiving, by the one or more processing modules, a data access request to access a data object that is based on a set of encoded data slices (EDSs) that is distributedly stored among a plurality of storage units (SUs) associated with a plurality of storage sites, wherein a data object is segmented into a plurality of data segments, and wherein the data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce a set of encoded data slices (EDSs);
selecting, by the one or more processing modules, respective numbers of SUs at each of the plurality of storage sites to support the data access request;
based on the respective numbers of SUs at each of the plurality of storage sites, selecting, by the one or more processing modules, a first computing device that is associated with a first storage site of the plurality of storage sites to process the data access request; and
transmitting, by the one or more processing modules, the data access request to the first computing device to be processed by the first computing device.

### Claim 10 (depends on 9)

The method of claim 9, wherein the data access request includes a consistency level indicator and further wherein the consistency level indicator includes information sufficient to determine a probability that a read data request can provide a most recent version of the data object.

### Claim 11 (depends on 9)

The method of claim 9, wherein the plurality of storage sites includes a storage site of the plurality of storage sites with a number of SUs that is larger than the number of SUs for the other storage sites of the plurality of storage sites and further wherein the storage site is the first storage site.

### Claim 12 (depends on 9)

The method of claim 9, wherein the respective numbers of SUs at each of the plurality of storage sites selected to support the data access request are selected based on at least one of a number of storage units available at each storage site, a performance level for one or more storage units at each storage site, a predetermination, and interpreting a DSN registry.

### Claim 13 (depends on 9)

The method of claim 9, further comprising:
issuing one or more write slice requests to the SUs at each of the plurality of storage sites; and
receiving one or more write slice responses from at least some of the SUs at each of the plurality of storage sites.

### Claim 14 (depends on 9)

The method of claim 9, wherein the data access request is a store data request.

### Claim 15

A first computing device comprising:
an interface configured to interface and communicate with a dispersed or distributed storage network (DSN);
memory that stores operational instructions; and
processing circuitry operably coupled to the interface and to the memory, wherein the processing circuitry is configured to execute the operational instructions to:
receive a store data request, wherein the store data request includes a data object and a consistency level indicator;
select one or more storage units (SUs) from each of a plurality of storage sites to support the store data request;
select a second computing device associated with a storage site of the plurality of storage sites to process the store data request;
transmit the store data request to the storage site of the plurality to storage sites;
dispersed error encode, by the second computing device, the data object in accordance with dispersed error encoding parameters to produce a plurality of sets of encoded data slices (EDSs); and
transmit, by the second computing device, one or more sets of EDSs of the plurality of sets of EDSs to a one or more storage sites of the plurality of storage sites.

### Claim 16 (depends on 15)

The first computing device of claim 15, wherein the consistency level indicator includes information sufficient to determine a probability that a read data request can provide a most recent version of the data object.

### Claim 17 (depends on 16)

The first computing device of claim 16, wherein the plurality of storage sites includes a storage site of the plurality of storage sites with a number of SUs that is larger than the number of SUs for the other storage sites of the plurality of storage sites and further wherein the storage site is associated with the second computing device.

### Claim 18 (depends on 16)

The first computing device of claim 16, wherein the one or more storage units (SUs) from each of a plurality of storage sites selected to support the store data request are selected based on at least one of a number of storage units available at each storage site, a performance level for one or more storage units at each storage site, a predetermination, and interpreting a DSN registry.

### Claim 19 (depends on 16)

The first computing device of claim 16, wherein the processing circuitry is further configured to execute the operational instructions to:
issue one or more write slice requests to the SUs at each of the plurality of storage sites; and
receive one or more write slice responses from at least some of the SUs at each of the plurality of storage sites.
